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í.