Arduino/UNO + hibás terminálműködés
Terminal-on mindíg ugyan az jelenik meg
Sziasztok!
AVR-Duino/Uno panelt és BASCOM környezetet használok.
A forrásban a print utasítás hatására megy adat, de barmit küldök programból a terminál ablakban ugyan azt látom. És ez egy y kettős ponttal a tetején.
Hogy lehet elérni, hogy rendes adat menjen ki? Olvastam valahol, hogy CL+LF-et küld a kontroller. Terminálon is beállítottam ezt. De nincs változás.
Köszönöm
Ákos
AVR-Duino/Uno panelt és BASCOM környezetet használok.
A forrásban a print utasítás hatására megy adat, de barmit küldök programból a terminál ablakban ugyan azt látom. És ez egy y kettős ponttal a tetején.
Hogy lehet elérni, hogy rendes adat menjen ki? Olvastam valahol, hogy CL+LF-et küld a kontroller. Terminálon is beállítottam ezt. De nincs változás.
Köszönöm
Ákos
Ez részben segített.
Most az van, hogy ha változtatom a programban, hogy mit írjon ki, akkor a terminálban is más jelenik meg. Viszont print "K" esetén egy a-t kapok kettős ponttal a tetején. Hogyan tudok rendes szöveget, számokat kiíratni?
Hogy kéne működjön a print "Értek="
Vagy a print 25
?
Én nem tudok valamit, vagy valami hiba van?
Köszi
Ákos
Most az van, hogy ha változtatom a programban, hogy mit írjon ki, akkor a terminálban is más jelenik meg. Viszont print "K" esetén egy a-t kapok kettős ponttal a tetején. Hogyan tudok rendes szöveget, számokat kiíratni?
Hogy kéne működjön a print "Értek="
Vagy a print 25
?
Én nem tudok valamit, vagy valami hiba van?
Köszi
Ákos
Ez a teljes forrás.
Kód: Egész kijelölése
$baud = 4800 '19200
$hwstack = 90
$swstack = 90
$framesize = 90
Config Portb.5 = Output
Do
Toggle Portb.5
Waitms 2000
Print "K"
Waitms 200
Toggle Portb.5
Waitms 200
Toggle Portb.5
Waitms 200
Toggle Portb.5
Waitms 200
Toggle Portb.5
Waitms 200
Toggle Portb.5
Waitms 200
Loop
End
Hiányzik az IC megadása és a sebesség definíciója
(alap: ATTiny2313 és 1 MHz sebesség a default)
(alap: ATTiny2313 és 1 MHz sebesség a default)
Kód: Egész kijelölése
$regfile="m328pdef.dat"
$crystal=16000000
Terminal újraindítás reset-eli a kontrollert?
Sziasztok!
AVR Duino/UNO panelen futtatok egy rövid programot, ahol Bascom Print-vel iratom ki a terminálra USB-n keresztül egy változó értékét.
Azt tapasztalom, hogy ha a terminált bezárom és újból megnyitom, akkor a kontrollerben az elejéről indul a program, mintha reset-elődne.
Ez normális? Ennek Így kell lennie, vagy ez befolyásolható esetleg?
Ákos
AVR Duino/UNO panelen futtatok egy rövid programot, ahol Bascom Print-vel iratom ki a terminálra USB-n keresztül egy változó értékét.
Azt tapasztalom, hogy ha a terminált bezárom és újból megnyitom, akkor a kontrollerben az elejéről indul a program, mintha reset-elődne.
Ez normális? Ennek Így kell lennie, vagy ez befolyásolható esetleg?
Ákos
Normális.
Nooormááális?:)
Na jó, kicsit a háttér:
A chip frissítése az ún. bootloaderrel történik. Ez nem más, mint a chip indulásakor lefutó apró programocska. Ha nem jön az inicializáló kód, akkor a főprogramnak adja a vezérlést. A bootloader indítására két fő módszer van:
1, RESET a chipnek, és a bootloader indul el
2, Direkt programvezérlés átadás (de ekkor a főprogramban kell erről gondoskodni)
Egyszerűbb az első megoldás.
A RESET kiadása a sorosport felépülésével együtt történik a CTS (ClearToSend - adáskész) láb jelszintváltozásával. Ez egy kondin keresztül RESETeli a chipet. Most vagy a kondi kivétele, vagy előtte a forrasz/normál jumper kikötésével ez a resetelés megszűntethető. Viszont ennek hátránya:
- a chip felprogramozásához a sorosport nyitásával nekünk kell RESETgombot nyomni (~100-400 msec időnk van rá)
- külső programozót hazsnálunk
- marad a chipben a program és SW-ből indítjuk a processzort újra (lsd WatchDog fogalomköre - Arduino esetén _ellenjavalt_ a bootloader t@ketlensége miatt [majd egy cikket ez is megér])
A reset azért következik be, mert az IC nem tudja, hogy szimplán a főprocesszorban futó főprogrammal akarsz beszélgetni, vagy a RESETet nyomtad meg, mert programfrissíteni akarsz....
Nooormááális?:)
Na jó, kicsit a háttér:
A chip frissítése az ún. bootloaderrel történik. Ez nem más, mint a chip indulásakor lefutó apró programocska. Ha nem jön az inicializáló kód, akkor a főprogramnak adja a vezérlést. A bootloader indítására két fő módszer van:
1, RESET a chipnek, és a bootloader indul el
2, Direkt programvezérlés átadás (de ekkor a főprogramban kell erről gondoskodni)
Egyszerűbb az első megoldás.
A RESET kiadása a sorosport felépülésével együtt történik a CTS (ClearToSend - adáskész) láb jelszintváltozásával. Ez egy kondin keresztül RESETeli a chipet. Most vagy a kondi kivétele, vagy előtte a forrasz/normál jumper kikötésével ez a resetelés megszűntethető. Viszont ennek hátránya:
- a chip felprogramozásához a sorosport nyitásával nekünk kell RESETgombot nyomni (~100-400 msec időnk van rá)
- külső programozót hazsnálunk
- marad a chipben a program és SW-ből indítjuk a processzort újra (lsd WatchDog fogalomköre - Arduino esetén _ellenjavalt_ a bootloader t@ketlensége miatt [majd egy cikket ez is megér])
A reset azért következik be, mert az IC nem tudja, hogy szimplán a főprocesszorban futó főprogrammal akarsz beszélgetni, vagy a RESETet nyomtad meg, mert programfrissíteni akarsz....