RS232 két mikrokontroller között

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: Robert » 2013. október 6. vasárnap, 17:09

????

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

VarázsBab
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2013. július 31. szerda, 5:11

Re: RS232 két mikrokontroller között

HozzászólásSzerző: VarázsBab » 2013. október 24. csütörtök, 14:13

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)

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


vevő oldal:

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 

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: Robert » 2013. október 24. csütörtök, 16:32

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?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3293
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: RS232 két mikrokontroller között

HozzászólásSzerző: kapu48 » 2013. október 25. péntek, 19:38

Inkabb a GOTO okozza a hibat!
:roll:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: Robert » 2013. október 26. szombat, 6:18

A Thanks szubrutin kell hogy legyen. Azaz:
Gosub-bal hívod meg és a végén return.

VarázsBab
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2013. július 31. szerda, 5:11

Re: RS232 két mikrokontroller között

HozzászólásSzerző: VarázsBab » 2013. október 26. szombat, 21:03

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 :wink:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: Robert » 2013. október 26. szombat, 21:17

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

Avatar
aaszabo
Bitmanipulátor
Hozzászólások: 133
Csatlakozott: 2012. január 22. vasárnap, 7:00
Tartózkodási hely: Budapest

Re: RS232 két mikrokontroller között

HozzászólásSzerző: aaszabo » 2013. október 27. vasárnap, 11:59

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?

Avatar
aaszabo
Bitmanipulátor
Hozzászólások: 133
Csatlakozott: 2012. január 22. vasárnap, 7:00
Tartózkodási hely: Budapest

Re: RS232 két mikrokontroller között

HozzászólásSzerző: aaszabo » 2013. október 27. vasárnap, 12:35

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.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: Robert » 2013. október 27. vasárnap, 14:46

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.

Avatar
aaszabo
Bitmanipulátor
Hozzászólások: 133
Csatlakozott: 2012. január 22. vasárnap, 7:00
Tartózkodási hely: Budapest

Re: RS232 két mikrokontroller között

HozzászólásSzerző: aaszabo » 2013. november 16. szombat, 22:58

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?

Avatar
aaszabo
Bitmanipulátor
Hozzászólások: 133
Csatlakozott: 2012. január 22. vasárnap, 7:00
Tartózkodási hely: Budapest

Re: RS232 két mikrokontroller között

HozzászólásSzerző: aaszabo » 2013. november 16. szombat, 23:08

Közben úgy tűnik megvan a megoldás!

Ez a PIRNTBIN. Holnap ki is próbálom.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9970
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: Robert » 2013. november 16. szombat, 23:56

Olvasás:
- inkey()
- getkey()
- ischarwaiting() (inkey-l kombinálva a 0 chr miatt)
- UDR értéke, TxRead INT megszakítással kombinálva...

Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00
Tartózkodási hely: Mátraterenye
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: ampervadasz » 2013. november 23. szombat, 14:39

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?

Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00
Tartózkodási hely: Mátraterenye
Kapcsolat:

Re: RS232 két mikrokontroller között

HozzászólásSzerző: ampervadasz » 2013. november 23. szombat, 14:58

Egy megoldást találtam eddig.
Vételnél "string"-ként kell fogadni...


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég