Arduino/UNO + hibás terminálműködés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 180
Csatlakozott: 2012. január 22. vasárnap, 7:00

Terminal-on mindíg ugyan az jelenik meg

Hozzászólás Szerző: aaszabo »

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
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az UNO esetén a sorosport sebessége:
$baud=4800 a kódban: 9600 bps a terminálban....

Azaz van egy 2x szorzó....

Ne kérdezd miért... Gyárilag agymenés :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Ja a Bascom alapbeállítása: sebesség, 8bit csomag, nincs paritásbit, 1 stopbit, nincs átvitelvezérlés (kézfogás/handshake)
9600 bps esetén röviden írva:
9600,8,n,1
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 180
Csatlakozott: 2012. január 22. vasárnap, 7:00

Hozzászólás Szerző: aaszabo »

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
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

OK: írd le a programot, amivel teszteled.... szerintem ott a hiba....
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 180
Csatlakozott: 2012. január 22. vasárnap, 7:00

Hozzászólás Szerző: aaszabo »

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
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Hiányzik az IC megadása és a sebesség definíciója
(alap: ATTiny2313 és 1 MHz sebesség a default)

Kód: Egész kijelölése

$regfile="m328pdef.dat"
$crystal=16000000
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 180
Csatlakozott: 2012. január 22. vasárnap, 7:00

Hozzászólás Szerző: aaszabo »

tökéletes, működik!!

Köszönöm,
Ákos
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 180
Csatlakozott: 2012. január 22. vasárnap, 7:00

Terminal újraindítás reset-eli a kontrollert?

Hozzászólás Szerző: aaszabo »

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
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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....
Válasz küldése