Bluetooth + AVR-Duino

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

Köszönöm, kipróbálom.
De fontos, hogy nekem mindezt programból kell. Nincs kapcsoltam csak a kontroller felé az UART-on.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

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"
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

Az én kódom

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

Print "+++";
Wait 1.5
Print "AT"
Waitms 100
Print "ATN=PROBA"
Print "+++"

Nem akar menni..
Mega32 a kontroller 4MHZ kristályról jár. sebesség 19200.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

wait 1.5 nincs...

A kilépés nem tudom +++-e.
A belépés előtt 1 secvárakozás van!
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

nem panaszkodott...

ok.

Köszönöm.
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

Sajna nem nyert.

Ha nézem terminálban, akkor kiírja a +++ -t és az AT -t.
Ha bontva minden BT kapcsolat akkor sem írja át.:(
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

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

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

config serialin = buffered, size=20 '20 byte-s bufferent vételi buffer
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.
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

Ezt tudom, de pl mi van a sorvégi cr/lf -el? És mi van ha 21 byte jön? Kitolja az elejét?
Új input előtt törölni kell?
Sok a kérdé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 »

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....
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

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

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!
Avatar
konkav
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2008. március 29. szombat, 6:00

Re: Bluetooth + AVR-Duino

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

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

Re: Bluetooth + AVR-Duino

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

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.
Avatar
konkav
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2008. március 29. szombat, 6:00

Re: Bluetooth + AVR-Duino

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

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

Re: Bluetooth + AVR-Duino

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

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