Program írás help
Abban a könyvtárban "Config_" kezdetű .bas fájlokat és néhány .cfg fájlt találtam. A "Config_" kezdetűek legelején ott a figyelmeztetés:
' THIS IS AN INCLUDE FILE
' DO NOT COMPILE
Ezek szerint a "CONFIG_AVR-DOS.bas" és a "Config_MMC.bas"
fájlokra kell a program elején hivatkozni az $include -del, és akkor működni fognak az AVR-DOS-os utasítások?
Ezek szerint a programnak így kellene kezdődnie?
$lib "AVR-DOS.Lbx"
$lib "MMC.Lbx"
$include "CONFIG_AVR-DOS.bas"
$include "Config_MMC.bas"
.
.
.
' THIS IS AN INCLUDE FILE
' DO NOT COMPILE
Ezek szerint a "CONFIG_AVR-DOS.bas" és a "Config_MMC.bas"
fájlokra kell a program elején hivatkozni az $include -del, és akkor működni fognak az AVR-DOS-os utasítások?
Ezek szerint a programnak így kellene kezdődnie?
$lib "AVR-DOS.Lbx"
$lib "MMC.Lbx"
$include "CONFIG_AVR-DOS.bas"
$include "Config_MMC.bas"
.
.
.
Üdv!
Hétvégén majdnem kitört a barbár belöllem. Kissé átszabtam a kisérletipanelt, de a test nem talált el az AT-ig. Persze nem vettem észre, rá is ment egy napom
De ez már a multé.
A legelső volt, hogy a szabaddá vált portokat tesztelgettem. Szomorúan vettem észre a D0 és D1 nem ad életjelet.(ATmega16)
Van valamilyen biztosíték amivel be lehet kapcsolni
Bizergáló:
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600
Ddrc = 255
Ddrd = 255
Dim X As Byte
Do
Gomb1:
For X = 0 To 7
Reset Portd.x
Waitms 100
Set Portd.x
Next X
Gomb2:
For X = 0 To 7
Reset Portc.x
Waitms 100
Set Portc.x
Next X
Loop
End
Hétvégén majdnem kitört a barbár belöllem. Kissé átszabtam a kisérletipanelt, de a test nem talált el az AT-ig. Persze nem vettem észre, rá is ment egy napom
De ez már a multé.
A legelső volt, hogy a szabaddá vált portokat tesztelgettem. Szomorúan vettem észre a D0 és D1 nem ad életjelet.(ATmega16)
Van valamilyen biztosíték amivel be lehet kapcsolni
Bizergáló:
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600
Ddrc = 255
Ddrd = 255
Dim X As Byte
Do
Gomb1:
For X = 0 To 7
Reset Portd.x
Waitms 100
Set Portd.x
Next X
Gomb2:
For X = 0 To 7
Reset Portc.x
Waitms 100
Set Portc.x
Next X
Loop
End
Így van, s lőn világosság
Következő problémám: a 3x4-es bill. mátrix kezelő progiban nem regál a gombnyomásra.
$regfile = "m16def.dat"
$crystal = 16000000
Ddrc = 255
Ddrd = 255
Ddrb = 0
Portb = 30
Dim X As Byte
Dim Y As Byte
Dim E As Byte
Dim T As Byte
Dim Egyes As Byte
Dim Tizes As Byte
Do
Billfigy:
X = Pinb
If X <> 30 Then 'billentyű lenyomva szegmens:ok
Tizes = 10
Egyes = 10
Goto Kiiro
Goto Billfigy
Else 'billentyűk szabadon szegmens:..
Tizes = 12
Egyes = 11
Goto Kiiro
End If
Loop
Kiiro:
E = Lookup(egyes , Minta1)
Portc = E
T = Lookup(tizes , Minta10)
Portd = T
Waitms 100
Portc = 255
Portd = 255
Goto Billfigy
End
Minta10:
Data 33 , 189 , 19 , 25 , 205 , 73 , 65 , 61 , 1 , 9 , 209 , 211 , 254 '0,1,2,3,4,5,6,7,8,9,o,c,.
Minta1:
Data 132 , 215 , 76 , 69 , 55 , 37 , 36 , 199 , 4 , 5 , 60 , 251 '0,1,2,3,4,5,6,7,8,9,k,.
kapcsolásban:B0-másra (lo)
..........hi...B1--x-x-.x
......................l...l...l
..........hi...B2--x-x-.x
......................l...l...l
..........hi...B3--x-x-.x
......................l...l...l
..........hi...B4--x-x-.x
......................l...l...l
.....................[].[]..[] (3x1ko ellenállás)
......................l...l...l
....................B5.B6.B7
.
.
.....................lo lo lo
Ciklussal behelyettesítve a billfigy részét símán számol 100-ig.
Valamit a portbeállítás és láblekérdezésnél baltázok el
Következő problémám: a 3x4-es bill. mátrix kezelő progiban nem regál a gombnyomásra.
$regfile = "m16def.dat"
$crystal = 16000000
Ddrc = 255
Ddrd = 255
Ddrb = 0
Portb = 30
Dim X As Byte
Dim Y As Byte
Dim E As Byte
Dim T As Byte
Dim Egyes As Byte
Dim Tizes As Byte
Do
Billfigy:
X = Pinb
If X <> 30 Then 'billentyű lenyomva szegmens:ok
Tizes = 10
Egyes = 10
Goto Kiiro
Goto Billfigy
Else 'billentyűk szabadon szegmens:..
Tizes = 12
Egyes = 11
Goto Kiiro
End If
Loop
Kiiro:
E = Lookup(egyes , Minta1)
Portc = E
T = Lookup(tizes , Minta10)
Portd = T
Waitms 100
Portc = 255
Portd = 255
Goto Billfigy
End
Minta10:
Data 33 , 189 , 19 , 25 , 205 , 73 , 65 , 61 , 1 , 9 , 209 , 211 , 254 '0,1,2,3,4,5,6,7,8,9,o,c,.
Minta1:
Data 132 , 215 , 76 , 69 , 55 , 37 , 36 , 199 , 4 , 5 , 60 , 251 '0,1,2,3,4,5,6,7,8,9,k,.
kapcsolásban:B0-másra (lo)
..........hi...B1--x-x-.x
......................l...l...l
..........hi...B2--x-x-.x
......................l...l...l
..........hi...B3--x-x-.x
......................l...l...l
..........hi...B4--x-x-.x
......................l...l...l
.....................[].[]..[] (3x1ko ellenállás)
......................l...l...l
....................B5.B6.B7
.
.
.....................lo lo lo
Ciklussal behelyettesítve a billfigy részét símán számol 100-ig.
Valamit a portbeállítás és láblekérdezésnél baltázok el
Ha DDRB=0, akkor az összes láb INPUT!
De nem egyszerűbb a getkbd függvényt használni?
A kézikönyvben benne vannak a mintaprogik, én azért elővenném néha:)
http://avr.tavir.hu/modules.php?name=Co ... age&pid=20
De nem egyszerűbb a getkbd függvényt használni?
A kézikönyvben benne vannak a mintaprogik, én azért elővenném néha:)
http://avr.tavir.hu/modules.php?name=Co ... age&pid=20
Csak nem boldogulok az AVR-DOS-szal. Hiába a korábban felsorolt néhány include, fordításkor hibák tucatját írja ki, általában nem deklarált változókra hivatkozva. Holott ezeknek a fájloknak annyira elő kellene készítenie a "terepet", hogy a DOS-os utasításokat végre kéne hajtania a Bascom-nak, mindenféle további utasítások nélkül, nem?
PCF8563 ill PCF8583 chip
Sziasztok!
Mintaprogi adott 8egesz jo), de naha osszezavarodik. Most vagy panel, vagy progi. Vkinek tippje?:)
Mintaprogi adott 8egesz jo), de naha osszezavarodik. Most vagy panel, vagy progi. Vkinek tippje?:)
Kód: Egész kijelölése
'--- Alapadatok ---
$crystal = 14745600 'Sebesseg
$regfile = "M16def.dat" 'Chip
$baud = 9600
'configure the used port pin for I2C
Config I2cdelay = 10 ' default slow mode:5
Config Sda = Portc.1
Config Scl = Portc.0
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
' ---------[ Initialisierung ]--------
Cursor = Off ' Cursor ausschalten
Cls
Dim S As Byte , M As Byte , H As Byte , D As Byte , Month As Byte
Dim Wm As Byte , Yd As Byte
'-----[ Hauptprogramm ]----------------------------------------
Wm = 3
D = 8
Month = 2
Yd = 1
H = 22
M = 00
S = 00
Settime:
'values are stored as BCD values so convert the values first
S = Makebcd(s) 'seconds
M = Makebcd(m) 'minuts
H = Makebcd(h) 'hours
D = Makebcd(d) 'days
Month = Makebcd(month) 'months
Yd = Makebcd(yd) 'seconds
Wm = Makebcd(wm) 'minuts
I2cstart 'generate start
I2cwbyte &HA2 'write address
I2cwbyte 0 'select control register
I2cwbyte 8 'set year and day bit for masking
I2cstop 'generate stop
I2cstart 'generate start
I2cwbyte &HA2 'write mode
I2cwbyte 2 'select seconds Register
I2cwbyte S 'write seconds
I2cwbyte M 'write minuts
I2cwbyte H 'write hours
I2cwbyte Yd 'write jear
I2cwbyte D 'write day
I2cwbyte Wm 'wirte weekday
I2cwbyte Month 'write month
I2cstop 'generate stop
Goto Gettime
Gettime:
I2cstart 'generate start
I2cwbyte &HA2 'write addres
I2cwbyte 2 'select second register
I2cstart 'generate repeated start
I2cwbyte &HA3 'write address for reading
I2crbyte S , Ack 'read seconds
I2crbyte M , Ack 'read minuts
I2crbyte H , Ack 'read hours
I2crbyte Yd , Ack 'read year
I2crbyte D , Ack 'read day
I2crbyte Wm , Ack 'read weekday
I2crbyte Month , Nack 'read month
I2cstop 'generate stop
Goto Zeit
Zeit:
S = Makedec(s)
M = Makedec(m)
H = Makedec(h)
Yd = Makedec(yd)
D = Makedec(d)
Wm = Makedec(wm)
Month = Makedec(month)
If H >= 10 Then
Locate 1 , 1 : Lcd H
Else
Locate 1 , 1 : Lcd " " ; H
End If
Locate 1 , 3 : Lcd ":"
If M >= 10 Then
Locate 1 , 4 : Lcd M
Else
Locate 1 , 4 : Lcd "0" ; M
End If
Locate 1 , 6 : Lcd ":"
If S >= 10 Then
Locate 1 , 7 : Lcd S
Else
Locate 1 , 7 : Lcd "0" ; S
End If
Locate 2 , 1 : Lcd D ; "." ; Month ; "." ; Yd ; " " ; Wm
Waitms 100
Goto Gettime
Hi!
Én egy hete, a tápfesz miatt -csati kontakt hiba- görcsöltem. A progid nekem még kínai, így hardver nélkül pláne , de mivel rendszertelen hibáról írsz, én a mérhető oldalról közelíteném meg.
Alább egy szerintem egyszerű, de nagyszerű GETKBD kód megjelenítő( mivel mátrix kódokat nem találtam, hát llekérdeztem)
$regfile = "m16def.dat"
$crystal = 16000000
Config Kbd = Pinb 'b-porton a mátrix
Ddrc = 255 'c és d-portokon a 7-7szegmens
Ddrd = 255 'a Minta1 és Minta10 az 1-es és 10-es helyértékek
'én 2 közös anódos kijelzőt használok így a szegmens kódok: 255-portok,
' ha katódosak akkor símán szegmens kód=portok
Dim Bk As Byte
Dim Es As Byte
Dim Ts As Byte
Dim Te As Byte
Dim E As Byte
Dim T As Byte
Do 'lekérdezés és átkódolás
Bk = Getkbd()
For Ts = 0 To 90 Step 10
For Es = 0 To 9
Te = Ts + Es
If Bk = Te Then
Goto Kiiro
Else
End If
Next Es
Next Ts
Kiiro:
E = Lookup(es , Minta1) 'megjelenítés
Portc = E
Ts = Ts / 10
T = Lookup(ts , Minta10)
Portd = T
Waitms 1
Portc = 255
Portd = 255
Loop
End
Minta10:
Data 33 , 189 , 19 , 25 , 205 , 73 , 65 , 61 , 1 , 9 , 209 , 211 , 254 '0,1,2,3,4,5,6,7,8,9,o,c,.
Minta1:
Data 132 , 215 , 76 , 69 , 55 , 37 , 36 , 199 , 4 , 5 , 60 , 251 '0,1,2,3,4,5,6,7,8,9,k,.
UI: remélem lessz akinek hasznára válik
Én egy hete, a tápfesz miatt -csati kontakt hiba- görcsöltem. A progid nekem még kínai, így hardver nélkül pláne , de mivel rendszertelen hibáról írsz, én a mérhető oldalról közelíteném meg.
Alább egy szerintem egyszerű, de nagyszerű GETKBD kód megjelenítő( mivel mátrix kódokat nem találtam, hát llekérdeztem)
$regfile = "m16def.dat"
$crystal = 16000000
Config Kbd = Pinb 'b-porton a mátrix
Ddrc = 255 'c és d-portokon a 7-7szegmens
Ddrd = 255 'a Minta1 és Minta10 az 1-es és 10-es helyértékek
'én 2 közös anódos kijelzőt használok így a szegmens kódok: 255-portok,
' ha katódosak akkor símán szegmens kód=portok
Dim Bk As Byte
Dim Es As Byte
Dim Ts As Byte
Dim Te As Byte
Dim E As Byte
Dim T As Byte
Do 'lekérdezés és átkódolás
Bk = Getkbd()
For Ts = 0 To 90 Step 10
For Es = 0 To 9
Te = Ts + Es
If Bk = Te Then
Goto Kiiro
Else
End If
Next Es
Next Ts
Kiiro:
E = Lookup(es , Minta1) 'megjelenítés
Portc = E
Ts = Ts / 10
T = Lookup(ts , Minta10)
Portd = T
Waitms 1
Portc = 255
Portd = 255
Loop
End
Minta10:
Data 33 , 189 , 19 , 25 , 205 , 73 , 65 , 61 , 1 , 9 , 209 , 211 , 254 '0,1,2,3,4,5,6,7,8,9,o,c,.
Minta1:
Data 132 , 215 , 76 , 69 , 55 , 37 , 36 , 199 , 4 , 5 , 60 , 251 '0,1,2,3,4,5,6,7,8,9,k,.
UI: remélem lessz akinek hasznára válik
A "Config_Avr-Dos.bas" fájlba beleillesztettem a "Config_MMC.bas" fájlt, így csak egy include-ra van szükség. De továbbra is az a helyzet, hogy fordításkor "Label Not Found" hibaüzeneteket kapok. A $lib is megnyitott fájlnak számít? Mert ha igen, akkor itt van a kutya elásva.Robert írta:Demo v. reg Bascom?
Ha demo, akkor az 1odoben megnyitott filek szama max 1 lehet!
A 1.11.8.1-es demo van fent egyébként, az proci pedig M32-es, azaz elvileg ezzel nem lehetne probléma!
Értem. Egyébként végre megy a fordítás, de "Out of SRAM Space" hibát ad. Hogy a bánatban nem elég neki a memória, amikor kizárólag a "gyári" AVR-DOS-os cuccok vannak még csak benne, s amik alapból kellenek a működéshez?! Kezd nagyon elegem lenni belőle Nem létezik, hogy kevés neki az M32-es, amikor láttam már M16-al is SD-s alkalmazást
Memória-gond oka:
A Config_AVR_DOS.bas fájlban át kellett írni a FAT-buffer méretét 1078 byte-ról 561 byte-ra. Végre hiba nélkül megy a fordítás!
Akkor próbáljuk meg a legegyszerűbb dolgot, nézzük meg, mennyi hely van a kártyán, ill. mekkora a kártya mérete!
Ott a mintaprogram a HELP-ben:
Dim Gbtemp1 As Byte' scratch byte
Gbtemp1 = Initfilesystem(1)' we must init the filesystem once
If Gbtemp1 > 0 Then
Print#1 ,"Error "; Gbtemp1
Else
Print#1 ," OK"
Print "Disksize : "; Disksize()' show disk size in bytes
Print "Disk free: "; Diskfree()' show free space too
End If
Kártya a foglalatban, elvileg két directory van rajta, pár pici fájllal, tehát nem üres. Táp be, terminal fut, megjelenik az újabb rejtély:
Error 229
Ilyen számon AVR-DOS hiba nincs! Most mi van???
A Config_AVR_DOS.bas fájlban át kellett írni a FAT-buffer méretét 1078 byte-ról 561 byte-ra. Végre hiba nélkül megy a fordítás!
Akkor próbáljuk meg a legegyszerűbb dolgot, nézzük meg, mennyi hely van a kártyán, ill. mekkora a kártya mérete!
Ott a mintaprogram a HELP-ben:
Dim Gbtemp1 As Byte' scratch byte
Gbtemp1 = Initfilesystem(1)' we must init the filesystem once
If Gbtemp1 > 0 Then
Print#1 ,"Error "; Gbtemp1
Else
Print#1 ," OK"
Print "Disksize : "; Disksize()' show disk size in bytes
Print "Disk free: "; Diskfree()' show free space too
End If
Kártya a foglalatban, elvileg két directory van rajta, pár pici fájllal, tehát nem üres. Táp be, terminal fut, megjelenik az újabb rejtély:
Error 229
Ilyen számon AVR-DOS hiba nincs! Most mi van???