Soros port (rs232)
Sziasztok!
(Ezzel is van egy kis problémám.) Szóval: ugyanaz az áramkör ahol az LCD és az STK200 furcsa dolgokat csinál. Van rajta egy MAX232, ezzel a programmal:
A Bascom Terminaljában miután az LCD kiírja, hogy Input &,;° meg ilyenek jelennek meg. Én megnyomok egy számot (hasonló karaktereket ír ki a Terminal), de az LCD nem ír ki semmit. Megpróbáltam másik MAX 232-vel, másik soros porton (USB <-> RS232, gyári), másik programmal is próbáltam, de ott is ugyanez. Mi a probláma?
(Ezzel is van egy kis problémám.) Szóval: ugyanaz az áramkör ahol az LCD és az STK200 furcsa dolgokat csinál. Van rajta egy MAX232, ezzel a programmal:
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
Config Portd.6 = Output
Cursor Off
Cls
Dim Szam As Integer
Szam = 0
Lcd "Inditas!"
Wait 1
Do
Reset Portd.6
Cls
Lcd "Input"
Input "Szam" , Szam
Waitms 100
Cls
Lcd "Szam: " ; Szam
Set Portd.6
Wait 2
Loop
End
Bence
A Tiny2313 mellett 4 MHz kristály van?
A LED így 1 sec periódusidővel villog?
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
Config Portd.6 = Output
Do
Reset Portd.6
Waitms 500
Set Portd.6
Waitms 500
Loop
End
Ha nem egyenletese villog, akkor valószínű véletlenszerűen resetelget....
A Reset lábon a 4,7...10K felhúzó és a 100nF kerámia a GND fele ott van?
2mp ki/2mp be - a névleges 0,5sec ki/0,5 sec be helyett:
-> belső 1 MHz-ről jár a chip, nem a külső 4 MHzről.
A programot fordítsd le $crystal=1000000 '(1MHz) beállítással. Így a LED 0,5 sec periódusidővel villog?
A biztosítékbit lett állítva? vagy alaphelyzet van?
A Reset lábon a 4,7...10K felhúzó és a 100nF kerámia a GND fele ott van?
2mp ki/2mp be - a névleges 0,5sec ki/0,5 sec be helyett:
-> belső 1 MHz-ről jár a chip, nem a külső 4 MHzről.
A programot fordítsd le $crystal=1000000 '(1MHz) beállítással. Így a LED 0,5 sec periódusidővel villog?
A biztosítékbit lett állítva? vagy alaphelyzet van?
Ha a biztosítékbit nem lett állítva, akkor a chip az alapértelmezett _1 MHz_ órajelről jár.
Bővebben lsd:Kezdők problémái és itt a Az alkalmazás működik, de az új mikrokonrollereken lassú és hülyeségeket ír ki.
A biztosítékbitek:Bascom, mint programozó és a Biztosítékbitek, és itt kb. középtájon vannak a biztosítékbitek.
Bővebben lsd:Kezdők problémái és itt a Az alkalmazás működik, de az új mikrokonrollereken lassú és hülyeségeket ír ki.
A biztosítékbitek:Bascom, mint programozó és a Biztosítékbitek, és itt kb. középtájon vannak a biztosítékbitek.
Hello!
Beálítottam a biztosítékbiteket remélem jól!
Most a LED 500 ms-ig be 500 ms-ig ki. 4 MHz kvarc van az áramkörön.
Beálítottam a biztosítékbiteket remélem jól!
Kód: Egész kijelölése
Fusebit C: 1:Divide clockby 8 disable
Fusebit KLA987: 001100:Ext. Crystal Osc.; Freqency 3.0-8.0 MHz; Start-up time: 14 CK + 4.1 ms; [CKSEL=1100 SUT=00]
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
Config Portd.6 = Output
Do
Reset Portd.6
Waitms 500
Set Portd.6
Waitms 500
Loop
End
Bence
És szépen működik ez is, úgy hogy rá van dugva a programozó!!! Valószínűleg a biztosítékbitek voltak a problémásak. Bár a 7805 most is elég meleg, még nem tettem rá 100 nF-t.
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
Config Portd.6 = Output
Cursor Off
Cls
Dim Szam As Integer
Szam = 0
Lcd "Inditas!"
Wait 1
Do
Reset Portd.6
Cls
Lcd "Input"
Waitms 50
Input "Szam" , Szam
Waitms 50
Cls
Lcd "Szam: " ; Szam
Set Portd.6
Wait 2
Loop
End
Bence
Hozzárendelni... Hát, jellemzően baromi macera ("gyárilag" nincs):
Ugye NINCS ami jelezzen ha indul az adatfolyam. Így ezt INT lábra kell tenni, hogy a fel/lefutó él azonnal indíthassa...
Amíg adatcsomag jön (byte), addig INTben vagy, így a főprogramod nem fut. Amint bejött egy byte, letárolod egy változóba, amit a BUFFER-hez adsz. Kilpsz az INTből. de amint jön a köv byte felfutó éle, újra bemész az INT rutinba, és bevárod az adatot....
A buffert sem tudod kiolvasni, mert itt már karakterléncod van a bejött adatokból....
Én inkább átnyertgelnék 2 UARTot tartalmazó chipre (pl. ATMega162, 644, 164 (DIP) vagy ATMega64/128-ra (SMD)). Vagy ha több UART kell, akkor az ATMega256x-eskre...
Esetleg segédIC, UART->I2C vagy UART->SPI (ez is lehet újabb ATMega/Tiny IC)...
Ugye NINCS ami jelezzen ha indul az adatfolyam. Így ezt INT lábra kell tenni, hogy a fel/lefutó él azonnal indíthassa...
Amíg adatcsomag jön (byte), addig INTben vagy, így a főprogramod nem fut. Amint bejött egy byte, letárolod egy változóba, amit a BUFFER-hez adsz. Kilpsz az INTből. de amint jön a köv byte felfutó éle, újra bemész az INT rutinba, és bevárod az adatot....
A buffert sem tudod kiolvasni, mert itt már karakterléncod van a bejött adatokból....
Én inkább átnyertgelnék 2 UARTot tartalmazó chipre (pl. ATMega162, 644, 164 (DIP) vagy ATMega64/128-ra (SMD)). Vagy ha több UART kell, akkor az ATMega256x-eskre...
Esetleg segédIC, UART->I2C vagy UART->SPI (ez is lehet újabb ATMega/Tiny IC)...
Sajnos az áramkör már megvan A gond az hogy lassú a SW port. A cél hogy a HW port adatait feldolgozás után kiírjam a SW portra. A HW és SW port azonos sebességen megy, és úgy tűnik hogy nem tudja elég gyorsan kiírni a sw portra ezért adatvesztés van. A SW port sebességét nem tudom emelni mert nem bírja el a chip. 19200Baud-on megy. Ezért gondoltam pufferes sw portra. Majd elsz valahogy. Köszi.
A küldés alatt -a lábbillegetés miatt - fogod a chipet SW port esetén.
Sebességet nem lehet növelni? 19200->115200-ra?
A HW portod ki és bemenetet is felhasználod? nem lehetne hogy a bemenet az egyik, a kimenet a másik áramkör felé megy?:)
Adatvesztés befele van? Ott a HW portra tegyél buffert. 254-es lehet Config COM=Buffered....
Sebességet nem lehet növelni? 19200->115200-ra?
A HW portod ki és bemenetet is felhasználod? nem lehetne hogy a bemenet az egyik, a kimenet a másik áramkör felé megy?:)
Adatvesztés befele van? Ott a HW portra tegyél buffert. 254-es lehet Config COM=Buffered....