Stránka 1 z 1
čtení dat v bascomu
Napsal: 01 lis 2015, 13:02
od denny_ul
Chtěl bych vyčíst ze seriové linky 20 bajtů a následně je zobrazit na displeji (v kódu není konfig displeje).
Bude tohle fungovat?
Kód: Vybrat vše
'pokus prenosu po seriove lince
$regfile = "attiny2313a.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 16
$baud = 9600
Dim X As Byte
Dim Y As Byte
Dim A As Word
Dim B As Word
Do
For A = 1 To 20
Serin X , 1 , D , 0 , 9600 , 0 , 8 , 1
Writeeeprom X , A
Next
For A = 1 To 20
Readeeprom Y , A
Locate 1 , 1
Lcd Y
Wait 1
Next
Loop
End
Napsal: 02 lis 2015, 13:55
od Ruprecht
Zkus to spíš takhle:
Kód: Vybrat vše
Dim X As Byte, A as byte
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 1
Config Serialin = Buffered , Size = 16
Enable Interrupts
X = Ischarwaiting()
If X = 1 Then
A = Inkey()
...
Když přijde znak, Ischarwaiting=1, takže se znak načte do "A".
Pokud nepoužiješ "Ischarwaiting", budou se načítat nuly dokud nepřijde nějaký znak.
Vřele doporučuju použít HW UART a hodinový krystal.
99% problémů sériové komunikace je způsobeno špatnou rychlostí!!!!!!!!!
p.s. rychlost 9600b při 8MHz má chybu 0,2%, což je v pohodě (viz str.136 datasheetu 2313). Ale pokud použiješ vnitřní RC 8MHz, může kmitočet courat a můžou občas vypadávat znaky nebo přijdou "zdeformované"
Writeeeprom není dobrý nápad, eeprom má omezený počet zápisů na asi 100.000 (pokud zapíšeš 100x za sekundu, za 1000 sekund = 16 minut máš po buňce v eepromce)
Napsal: 02 lis 2015, 14:03
od ZdenekHQ
Pokud je ta EEPROM externí, dá se použít FRAM.
Napsal: 02 lis 2015, 16:27
od denny_ul
Tu epromku jsem chtěl použít na to, abych někam uložil těch 20 načtených hodnot a pak mohl přečíst třeba jen 4. a 5. v pořadí z těch 20-ti, nebo jde to někam uložit jako pole a pak to číst z něj?
Něco jako:
Kód: Vybrat vše
For A=1 to 20
ulož X(A)
Next
Print X(4)
Print X(5)
Jenže nevím jestli je příkaz, který by fungoval jako to co jsem tady pojmenoval "
ulož X(A)"
Napsal: 02 lis 2015, 17:20
od Ruprecht
Pokud se ty načtené byty mají jen zobrazovat, použij RAM (dim automaticky deklaruje proměnné v RAM):
Dim A as byte
nebo
Dim A(20) as byte (pokud to chceš jako pole dvaceti bytů)
Eprom slouží většinou jen pro uchování dat i po vypnutí, z RAM se data ztratí.