Bluetooth + AVR-Duino
Stimmel:
Kód: Egész kijelölése
print"+++";
waitms 1500
print "AT"
$timeout=10000000 'ha nincs OK
input a
if a="OK" then set minden_ok_LED ':)
print "ATN=XYZT"
Az én kódom
Nem akar menni..
Mega32 a kontroller 4MHZ kristályról jár. sebesség 19200.
Kód: Egész kijelölése
Print "+++";
Wait 1.5
Print "AT"
Waitms 100
Print "ATN=PROBA"
Print "+++"
Mega32 a kontroller 4MHZ kristályról jár. sebesség 19200.
Megtaláltam a hibát, bár még nem tudtam megoldani:)
Először a +++ szekvenciát csak akkor kell használni, ha élő kapcsolat van a BT oldalon. Ha nincs, akkor a +++ ra ERROR-t dob. ERGO ha nincs kapcsolat, akkor kapásból lehet az AT parancsokat küldeni a modulnak.
A +++ után OK-t kell kapni, (nem kell sima AT még utána)ami után már lehet is küldeni az AT parancsokat. A kilépés a command módból az ATO parancsal lehetséges. Amúgy a kis és nagy betűk használata mindegy.(kipróbáltam)
A gond az input résznél van. Fontos, hogy az echo-t ki kell kapcsolni. Mert pl ha nem tesszük, akkor mondjuk a +++ után kapott OK-t visszaküldi a modulnak , ami erre ERROR-t, amit visszaküld szintén, amire szintén ERROR jön és kész is a végtelen ciklus.
Ez az összes parancsnál érvényes.
A másik fontos dolog. Ha kapcsolódik a modul egy eszközhöz már küldi is a kontroller felé, hogy CONNECTED 01-AF-BC-0A számú eszköz. Ha bontjuk a kapcsolatot akkor meg küldi a DISCONNECTED 01-AF-BC-0A irományt.
Természetesen ezek a státusz jelzések kikapcsolhatóak a modulban, de akkor sem az OK és sem az ERROR nem jön. Így nem látjuk az eredményt!
Szóval észnél kell lenni a soros kommot illetően, ami a kontroller és a modul között zajlik.(Nem az átmenőről beszélek) Az már látszik, hogy bufferelt kapcsolat kell. De pl nekem rendre eltűnik az első karakter. Hozzáteszem, hogy bufferelt serialin-el még nem foglalkoztam, így ha valaki fényt gyújtana, azért hálás lennék.
Ami fura még, hogyha a virtuális soros porton kapcsolódok a modulhoz (tehát PC felől), akkor a Hyper terminál mindössze 2400 Baud sebességet mondd. Nem kevés ez picit?
És a finomság utoljára. a BTM-222 adatlapja hiányos. a BTM-230 adatlap a mérvadó az AT parancsokat illetően. Pl a BTM-222 lapján szó nincs az ATC (flow controll) regiszterről.
Először a +++ szekvenciát csak akkor kell használni, ha élő kapcsolat van a BT oldalon. Ha nincs, akkor a +++ ra ERROR-t dob. ERGO ha nincs kapcsolat, akkor kapásból lehet az AT parancsokat küldeni a modulnak.
A +++ után OK-t kell kapni, (nem kell sima AT még utána)ami után már lehet is küldeni az AT parancsokat. A kilépés a command módból az ATO parancsal lehetséges. Amúgy a kis és nagy betűk használata mindegy.(kipróbáltam)
A gond az input résznél van. Fontos, hogy az echo-t ki kell kapcsolni. Mert pl ha nem tesszük, akkor mondjuk a +++ után kapott OK-t visszaküldi a modulnak , ami erre ERROR-t, amit visszaküld szintén, amire szintén ERROR jön és kész is a végtelen ciklus.
Ez az összes parancsnál érvényes.
A másik fontos dolog. Ha kapcsolódik a modul egy eszközhöz már küldi is a kontroller felé, hogy CONNECTED 01-AF-BC-0A számú eszköz. Ha bontjuk a kapcsolatot akkor meg küldi a DISCONNECTED 01-AF-BC-0A irományt.
Természetesen ezek a státusz jelzések kikapcsolhatóak a modulban, de akkor sem az OK és sem az ERROR nem jön. Így nem látjuk az eredményt!
Szóval észnél kell lenni a soros kommot illetően, ami a kontroller és a modul között zajlik.(Nem az átmenőről beszélek) Az már látszik, hogy bufferelt kapcsolat kell. De pl nekem rendre eltűnik az első karakter. Hozzáteszem, hogy bufferelt serialin-el még nem foglalkoztam, így ha valaki fényt gyújtana, azért hálás lennék.
Ami fura még, hogyha a virtuális soros porton kapcsolódok a modulhoz (tehát PC felől), akkor a Hyper terminál mindössze 2400 Baud sebességet mondd. Nem kevés ez picit?
És a finomság utoljára. a BTM-222 adatlapja hiányos. a BTM-230 adatlap a mérvadó az AT parancsokat illetően. Pl a BTM-222 lapján szó nincs az ATC (flow controll) regiszterről.
config serialin = buffered, size=20 '20 byte-s bufferent vételi buffer
enable interrupts 'hogy mukodjon is
enable interrupts 'hogy mukodjon is
A hozzászólást 1 alkalommal szerkesztették, utoljára Robert 2012. május 5. szombat, 17:57-kor.
Ha az új input nem összefut, mert az előzőt sem dolgoztad fel - acckor a clear serialin-nel törlöd.
Cr/LF nem tolja ki. Tessék nagyobbra venni a puffert! (max 254 byte lehet)
21 byte jön: 20 bufferelődik, 21. karakter elveszett.
Buffertelítettség: bytematch a kulcsszó. A bufferelt paraméterek közt...
--> Próbakód? a Bascom súgót lesd meg....
Cr/LF nem tolja ki. Tessék nagyobbra venni a puffert! (max 254 byte lehet)
21 byte jön: 20 bufferelődik, 21. karakter elveszett.
Buffertelítettség: bytematch a kulcsszó. A bufferelt paraméterek közt...
--> Próbakód? a Bascom súgót lesd meg....
Tehát az új input felül ír, ha jól értem.
Cr/LF tiszta. Csak ez a RAM-ból megy:(
Amúgy kapásból a Bufferbe megy az adat ha jól értem. Aztán az INPUT-tal veszem ki változóba és olyankor törlődik is a BUFFER-ből. Igaz?
Tiszta. Tehát a végét csípi le.
Abból az ALL lehet nekem érdekes, mert nem csak egy karakter kell néznem, hanem szavakat.
Nézegettem, de nem volt teljesen tiszta. Még átnézem.
Köszönöm!
Cr/LF tiszta. Csak ez a RAM-ból megy:(
Amúgy kapásból a Bufferbe megy az adat ha jól értem. Aztán az INPUT-tal veszem ki változóba és olyankor törlődik is a BUFFER-ből. Igaz?
Tiszta. Tehát a végét csípi le.
Abból az ALL lehet nekem érdekes, mert nem csak egy karakter kell néznem, hanem szavakat.
Nézegettem, de nem volt teljesen tiszta. Még átnézem.
Köszönöm!
Re: Bluetooth + AVR-Duino
üdv.
egy BTM-112-t próbálok működésre bírni egy M88-cal (nem arduino, csak simán össze vannak drótozva egy dugpanelen). 3.3V-ról van megtáplálva, a BT modul, az M88 és egy karakteres LCD. az M88 soros portját (2. és 3. láb) bekötöttem a BT-be, a modulon a CTS-RTS összekötve, RESET testre kötve. ha bekapcsolom, akkor a BT modul elindul, látszik a "Serial Adaptor" mobilon, az lcd-n is megjelennek a debug adatok (m88 megy). az avr belső 8mhz-ről megy, osztás nélkül.
Bascom-ban van egy $baud=19200. az itt található kódrészletekkel próbáltam zsonglőrködni, de sajnos nem megy a kommunikáció a m88-bt vonalon. próbáltam már RX-TX vezetékeket keresztbe kötni, meg nem, és a végeredmény ugyan az. a '+++' küldését is próbáltam, 'AT', 'ATE0' (local echo off), 'ATN=asdf', 'ATZ', majd ezek összes létező variációit (sima és keresztbe kötött RX-TX lábakkal). minden parancs után "waitms 1500". de egyszer sem sikerült pl. megváltoztatni a nevét (ATN), vagy input-tal bármit beolvasni (input-nál mindig elakad a program, szerintem vár valami bejövő adatra, de azt 5 perc alatt sem kapja meg).
szerintetek mi legyen a következő lépés? a PC-n sajnos nincs soros port, és usb-soros átalakítóm sincs. hangkártyás szkóppal esetleg lenne esélyem látni, hogy egyáltalán van-e valamilyen kommunikáció az egyik vagy másik irányban? a BT modulnak van USB-s interfésze is. esetleg ezen tudnék valamit kideríteni? feltételezem kell egy feszosztó a PC-ről érkező jelre, remélhetőleg a visszamenőhöz nem kell semmi, de egy fet vagy optó segítségével gyorsan szintillesztőt tudok fabrikálni, ha nem menne. a lényeges kérdés az lenne, hogy bekötve az usb portra, a gép felismerné? kell valami spéci szoftver is hozzá?
minden ötletet és meglátást előre is köszönök.
egy BTM-112-t próbálok működésre bírni egy M88-cal (nem arduino, csak simán össze vannak drótozva egy dugpanelen). 3.3V-ról van megtáplálva, a BT modul, az M88 és egy karakteres LCD. az M88 soros portját (2. és 3. láb) bekötöttem a BT-be, a modulon a CTS-RTS összekötve, RESET testre kötve. ha bekapcsolom, akkor a BT modul elindul, látszik a "Serial Adaptor" mobilon, az lcd-n is megjelennek a debug adatok (m88 megy). az avr belső 8mhz-ről megy, osztás nélkül.
Bascom-ban van egy $baud=19200. az itt található kódrészletekkel próbáltam zsonglőrködni, de sajnos nem megy a kommunikáció a m88-bt vonalon. próbáltam már RX-TX vezetékeket keresztbe kötni, meg nem, és a végeredmény ugyan az. a '+++' küldését is próbáltam, 'AT', 'ATE0' (local echo off), 'ATN=asdf', 'ATZ', majd ezek összes létező variációit (sima és keresztbe kötött RX-TX lábakkal). minden parancs után "waitms 1500". de egyszer sem sikerült pl. megváltoztatni a nevét (ATN), vagy input-tal bármit beolvasni (input-nál mindig elakad a program, szerintem vár valami bejövő adatra, de azt 5 perc alatt sem kapja meg).
szerintetek mi legyen a következő lépés? a PC-n sajnos nincs soros port, és usb-soros átalakítóm sincs. hangkártyás szkóppal esetleg lenne esélyem látni, hogy egyáltalán van-e valamilyen kommunikáció az egyik vagy másik irányban? a BT modulnak van USB-s interfésze is. esetleg ezen tudnék valamit kideríteni? feltételezem kell egy feszosztó a PC-ről érkező jelre, remélhetőleg a visszamenőhöz nem kell semmi, de egy fet vagy optó segítségével gyorsan szintillesztőt tudok fabrikálni, ha nem menne. a lényeges kérdés az lenne, hogy bekötve az usb portra, a gép felismerné? kell valami spéci szoftver is hozzá?
minden ötletet és meglátást előre is köszönök.
Re: Bluetooth + AVR-Duino
Tanulni! tanulni! Tanulni!
Belső 8 MHz - kuka.
Ezzel a sorposport csak bizonytalan lehet a belső RC miatt! Ennek pontossága 5% vagy rosszabb, míg a BT 0,5% alatt vár el!
Tegyél rá külső kvarcot, ami 0% soros hibát ad. (14,7456MHz, 7.32..MHz, stb)
AVR-ben a fusebiteket állítottad? Alapban 1MHz a chip sebessége.
Belső 8 MHz - kuka.
Ezzel a sorposport csak bizonytalan lehet a belső RC miatt! Ennek pontossága 5% vagy rosszabb, míg a BT 0,5% alatt vár el!
Tegyél rá külső kvarcot, ami 0% soros hibát ad. (14,7456MHz, 7.32..MHz, stb)
AVR-ben a fusebiteket állítottad? Alapban 1MHz a chip sebessége.
Re: Bluetooth + AVR-Duino
ez egy ősrégi m88, minden új dolgot először rajta élesztek fel és tanulok meg kezelni. ki van kapcsolva az órajel osztás, így biztosan 8mhz-en megy. sőt, a waitms 1500 is másfél másodperc, és nem 12s 
tiszta, hogy "élesben", főleg nagy mennyiségű adatnál, kvarc kerül fel rá. ez a chip már működött PC-s sorosporttal folyamatosan fél órákat minden probléma nélkül. nekem pedig csak annyira lenne szükségem, hogy 1-2 percen keresztül működjön, meg tudjam szólítani, ezt-azt beállítani, egy-két adatot küldeni-fogadni.
egyébként aszinkron módban nem az van, hogy minden küldésnél a start bit élére "szinkronizál" (vagy mi is a megfelelő elnevezése)? vagyis ha 5 másodpercenként küldök 5 bájtot, akkor simán kéne mennie, még belső órajelen is?
tiszta, hogy "élesben", főleg nagy mennyiségű adatnál, kvarc kerül fel rá. ez a chip már működött PC-s sorosporttal folyamatosan fél órákat minden probléma nélkül. nekem pedig csak annyira lenne szükségem, hogy 1-2 percen keresztül működjön, meg tudjam szólítani, ezt-azt beállítani, egy-két adatot küldeni-fogadni.
egyébként aszinkron módban nem az van, hogy minden küldésnél a start bit élére "szinkronizál" (vagy mi is a megfelelő elnevezése)? vagyis ha 5 másodpercenként küldök 5 bájtot, akkor simán kéne mennie, még belső órajelen is?
Robert írta:Tanulni! tanulni! Tanulni!
Belső 8 MHz - kuka.
Ezzel a sorposport csak bizonytalan lehet a belső RC miatt! Ennek pontossága 5% vagy rosszabb, míg a BT 0,5% alatt vár el!
Tegyél rá külső kvarcot, ami 0% soros hibát ad. (14,7456MHz, 7.32..MHz, stb)
AVR-ben a fusebiteket állítottad? Alapban 1MHz a chip sebessége.
Re: Bluetooth + AVR-Duino
PC sorosport tűréshatára 5% hiba.
Nézd meg az adatlapot a 8 MHz-nál, majd az RC órajelnél. Csoda dolgok vannak benne:) .
Saját tapasztalat: ATMega 8: 1200 bps esetén is minden 4-5. byte hibás!
A BT modul lehet, hogy még érzékenyebb a kódpontosságra. Asszinkron ide vagy oda... Sajna tapasztalat.
Nézd meg az adatlapot a 8 MHz-nál, majd az RC órajelnél. Csoda dolgok vannak benne:) .
Saját tapasztalat: ATMega 8: 1200 bps esetén is minden 4-5. byte hibás!
A BT modul lehet, hogy még érzékenyebb a kódpontosságra. Asszinkron ide vagy oda... Sajna tapasztalat.