RS232 két mikrokontroller között
Re: RS232 két mikrokontroller között
????
Inputtal sort olvasol be.
Ennek a karakterét a mid() függvénnyel vizsgálod.
karaktert a getkey-l olvasoll be.
Kérdés: szöveglánc elejét ill végét hogy jelzed? Input esetén ez készen van
U.i.: Kérlek javítsd ki a mailcímed a kapcsolat oldalon, mert visszapattan az értesítő.
Inputtal sort olvasol be.
Ennek a karakterét a mid() függvénnyel vizsgálod.
karaktert a getkey-l olvasoll be.
Kérdés: szöveglánc elejét ill végét hogy jelzed? Input esetén ez készen van
U.i.: Kérlek javítsd ki a mailcímed a kapcsolat oldalon, mert visszapattan az értesítő.
Re: RS232 két mikrokontroller között
Sziasztok!
Én most küzdök 2db mC kommunikációval UART segítségével.
Egyenlőre úgy tűnik, hogy működik, viszont van egy kis bökkenő a vevő oldalon
Olyan minthogyha nem ürítené ki a bejövő adatok pufferjét és mindig ugyanazt olvassa ki. Amikor a vevő oldalt lekapcsolom a tápról, és vissza, akkor frissül a beérkezett adat, de ha nem veszem le a tápról, akkor nem. Tehát az adó oldal mindig küldi a friss adatot, de a régi bent ragad a vevő oldalban.
Hogyan lehetne ezt orvosolni?
Azért mellékelem a 2 chip kódját:
adó oldal: (portb-n van egy led)
vevő oldal:
Én most küzdök 2db mC kommunikációval UART segítségével.
Egyenlőre úgy tűnik, hogy működik, viszont van egy kis bökkenő a vevő oldalon
Olyan minthogyha nem ürítené ki a bejövő adatok pufferjét és mindig ugyanazt olvassa ki. Amikor a vevő oldalt lekapcsolom a tápról, és vissza, akkor frissül a beérkezett adat, de ha nem veszem le a tápról, akkor nem. Tehát az adó oldal mindig küldi a friss adatot, de a régi bent ragad a vevő oldalban.
Hogyan lehetne ezt orvosolni?
Azért mellékelem a 2 chip kódját:
adó oldal: (portb-n van egy led)
Kód: Egész kijelölése
$regfile = "m168def.dat"
$crystal = 4000000
$baud = 9600
Config Portb = Output
Dim I As Byte
I = 1
Do
Portb = 255
Print I
I = I + 1
If I > 10 Then
I = 1
End If
Waitms 500
Portb = 0
Waitms 500
Loop
End
Kód: Egész kijelölése
$regfile = "attiny2313.dat"
$crystal = 4000000 'kristály sebessége
$baud = 9600
Do
Cls
Akey = Waitkey()
If Akey = 13 Then Goto Thanks 'On enter key goto thanks
Inputstring = Inputstring + Chr(akey)
Waitms 1
Loop
Thanks:
Lcd Inputstring
Inputstring = ""
End
Re: RS232 két mikrokontroller között
Csak úgy látod hogy beragadt. A vevő oldalon bejön és azonnal ki íród a ENTER végén és _azonnal_ törlöd a képet.
A programfutást kövesd végig. A 13-as kód beesése után:
- kiolvasod
- ha a beolvasott 13 : lcdre kiiratod az eddigi stringet (a 13-as kód _nélkül_ még)
- a lcdrekiirando string = ""
- a foprogramba vissza, lcdrekiirandostring elso kraktere a 13-as lesz, mert az benne van még az akeyben!
- vár
- loop a do-ra, CLS
A mega168 az mega168 vagy mega168p?
A programfutást kövesd végig. A 13-as kód beesése után:
- kiolvasod
- ha a beolvasott 13 : lcdre kiiratod az eddigi stringet (a 13-as kód _nélkül_ még)
- a lcdrekiirando string = ""
- a foprogramba vissza, lcdrekiirandostring elso kraktere a 13-as lesz, mert az benne van még az akeyben!
- vár
- loop a do-ra, CLS
A mega168 az mega168 vagy mega168p?
Re: RS232 két mikrokontroller között
Inkabb a GOTO okozza a hibat!
Re: RS232 két mikrokontroller között
A Thanks szubrutin kell hogy legyen. Azaz:
Gosub-bal hívod meg és a végén return.
Gosub-bal hívod meg és a végén return.
Re: RS232 két mikrokontroller között
Azóta sikerűlt megoldanom az alábbi 2 sornak köszönhetően:
Config Serialin = Buffered , Size = 30
..
..
..
Clear Serialin
Köszönöm a segítséget
Config Serialin = Buffered , Size = 30
..
..
..
Clear Serialin
Köszönöm a segítséget
Re: RS232 két mikrokontroller között
És a thanks rutint is átírad? Igaz nem maradt a Goto benne?
Ez csak a bufferelt vétel. Azaz a 3byte-s hardware buffered megtelt, mielőtt kiolvastad volna...
Ez csak a bufferelt vétel. Azaz a 3byte-s hardware buffered megtelt, mielőtt kiolvastad volna...
Re: RS232 két mikrokontroller között
Sziasztok!
Két panel egy NANO és egy UNO között akarok soros kommunikációt összehozni. Elkészült az egyszerű teszt küldő, amit letöltöttem NANO-ba. A program PRINT utasításokkal számokat küld egy FOR ciklusban. Majd vár 3 másodpercet és ismétli a küldést.
Ott akadtam el, hogy az első letöltés után, amikor leindult a program a NANO-ban már nem tudtam utána letölteni újabb programot.
Lehet, hogy azt a hibát vétettem, hogy az alapértelmezett TX vonalra (D1) ír a PRINT, amit az USB is használ. És mivel a program folyamatosan fut, ezért az USB nem tud "szóhoz jutni".
Ha ez a helyzet, akkor mit tudok csinálni?
Illetve hogy lehet törölni, alap állapotba hozni egy AVR-t?
Két panel egy NANO és egy UNO között akarok soros kommunikációt összehozni. Elkészült az egyszerű teszt küldő, amit letöltöttem NANO-ba. A program PRINT utasításokkal számokat küld egy FOR ciklusban. Majd vár 3 másodpercet és ismétli a küldést.
Ott akadtam el, hogy az első letöltés után, amikor leindult a program a NANO-ban már nem tudtam utána letölteni újabb programot.
Lehet, hogy azt a hibát vétettem, hogy az alapértelmezett TX vonalra (D1) ír a PRINT, amit az USB is használ. És mivel a program folyamatosan fut, ezért az USB nem tud "szóhoz jutni".
Ha ez a helyzet, akkor mit tudok csinálni?
Illetve hogy lehet törölni, alap állapotba hozni egy AVR-t?
Re: RS232 két mikrokontroller között
Sikerült letölteni új programot.
Ki kellett venni a NANO-t a dugdosós panelből (megszabadítva a hozzákötésektől) és csak az USB-t rádugva működött a letöltés.
Az okot nem tudom, de most működik.
Ki kellett venni a NANO-t a dugdosós panelből (megszabadítva a hozzákötésektől) és csak az USB-t rádugva működött a letöltés.
Az okot nem tudom, de most működik.
Re: RS232 két mikrokontroller között
A Tx/Rx lábon terhelésed volt - az UNO Tx/Rx képében. Ugyanezen a Tx/Rx-en át zajlott (volna) a feltöltés.
Re: RS232 két mikrokontroller között
Sziasztok!
Hogy lehet nullát átvinni soros porton?
Nem stringet akarok átvinni, hanem byte-ok sorozatát. A 251-ot nem három byte-ban ("2", "5", "1') szeretném átvinni karakteres képben, hanem egy byte-on értékben.
A print stringet vár. A String egy karakter lánc. Minden eleme egy byte. A nulla értékű byte a lezáró karakter. Tehát string-et használva nem tudom "becsapni" az átvitelt, mert nulla esetében lezárja a Stringet.
Mi a mód arra, hogy egy byte tömböt írjak ki és azt tudjam beolvasni?
Elkezdtem építeni egy saját protokollt. Ebben a fej elején a teljes üzenet hossza mindig azonos pozíción van. Ezért, ha üzenet jön, akkor tudom, hogy meddig kell beolvasni. Majd azt a részt visszafejtve megtudom, hogy mennyi fog jönni még.
A print-en és input-on kívül mivel lehet még hatékonyan kezelni a HW soros vonalat?
Hogy lehet nullát átvinni soros porton?
Nem stringet akarok átvinni, hanem byte-ok sorozatát. A 251-ot nem három byte-ban ("2", "5", "1') szeretném átvinni karakteres képben, hanem egy byte-on értékben.
A print stringet vár. A String egy karakter lánc. Minden eleme egy byte. A nulla értékű byte a lezáró karakter. Tehát string-et használva nem tudom "becsapni" az átvitelt, mert nulla esetében lezárja a Stringet.
Mi a mód arra, hogy egy byte tömböt írjak ki és azt tudjam beolvasni?
Elkezdtem építeni egy saját protokollt. Ebben a fej elején a teljes üzenet hossza mindig azonos pozíción van. Ezért, ha üzenet jön, akkor tudom, hogy meddig kell beolvasni. Majd azt a részt visszafejtve megtudom, hogy mennyi fog jönni még.
A print-en és input-on kívül mivel lehet még hatékonyan kezelni a HW soros vonalat?
Re: RS232 két mikrokontroller között
Közben úgy tűnik megvan a megoldás!
Ez a PIRNTBIN. Holnap ki is próbálom.
Ez a PIRNTBIN. Holnap ki is próbálom.
Re: RS232 két mikrokontroller között
Olvasás:
- inkey()
- getkey()
- ischarwaiting() (inkey-l kombinálva a 0 chr miatt)
- UDR értéke, TxRead INT megszakítással kombinálva...
- inkey()
- getkey()
- ischarwaiting() (inkey-l kombinálva a 0 chr miatt)
- UDR értéke, TxRead INT megszakítással kombinálva...
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Re: RS232 két mikrokontroller között
Szervusztok AVR Istenei!
Elég régóta foglalkozom AVR-el, de még a soros adatátvitel lehetőségeit sohasem kellett piszkálnom. Most beleszaladtam egy szerintem általatok egyszerű, de nekem bonyolult helyzetbe.
Adott két AVR, soros kommunikációval beszélget egyik a másikkal.
Semmi különös nincs, csak egy számot kellene átnyomnom egyik helyről a másikra. Összekötés rendben, félig meddig működik is. A gondom a következő.
Van egy hőmérőm, aminek a mért értéke integer változóban pihen (Pl: 25 fok).
Kiküldöm UART-on "Print temp" - szépen látom a terminálon, hogy ki is küldi.
Fogadás: Input "Valami" , temp
Itt a gond, hogy a szám chr(temp) értékét veszi fel.
Ötleteket tudtok nekem adni, hogy a túloldalon is a temp értéke 25 legyen?
Elég régóta foglalkozom AVR-el, de még a soros adatátvitel lehetőségeit sohasem kellett piszkálnom. Most beleszaladtam egy szerintem általatok egyszerű, de nekem bonyolult helyzetbe.
Adott két AVR, soros kommunikációval beszélget egyik a másikkal.
Semmi különös nincs, csak egy számot kellene átnyomnom egyik helyről a másikra. Összekötés rendben, félig meddig működik is. A gondom a következő.
Van egy hőmérőm, aminek a mért értéke integer változóban pihen (Pl: 25 fok).
Kiküldöm UART-on "Print temp" - szépen látom a terminálon, hogy ki is küldi.
Fogadás: Input "Valami" , temp
Itt a gond, hogy a szám chr(temp) értékét veszi fel.
Ötleteket tudtok nekem adni, hogy a túloldalon is a temp értéke 25 legyen?
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Re: RS232 két mikrokontroller között
Egy megoldást találtam eddig.
Vételnél "string"-ként kell fogadni...
Vételnél "string"-ként kell fogadni...