Fórum témák
» Több friss téma |
Sziasztok!
Lenne egy olyan kérésem, hogy elakadtam egy kód írásában. Ultrahangos távolságmérés a téma, de kicsit más a kérdésem, mint az eddigi topikokban. Ezért bátorkodtam újat nyitni. Sikerül kiadnom a jelet az ATMEGA32 OC0-s lábán. 40kHz. És meg is tudom állítani. De hiába jön vissza jel az ICP1-es lábra, nem lép ki a while ciklusból. 5.23 Voltos jel jelenik meg a lábán mikor visszaérkezett a hang, de nem tudom hogyan dolgozzam föl. Hogy számoljam ki mennyi az ami a TIMER1-be íródott. Igazából programozásból analfabéta vagyok. Erre lenne szükségem.
ITT a capture: Elvileg ennek kéne jeleznie.
Köszi a segítséget!
Használd a kód beillesztést máskor.
Helló.
Én Arduino-ban programozok AVR-ket,ott az egész olvasás (általában pulseIn-t vagy SofetSerial parancsal olvasok pinget,de még van sok,pl. a wire library,NewSofetSerial,egyszerű analogRead és konverzió... és aztán pedig osztási képlettel számítók értéket. Egyébként rengeteg Ping-ről szóló anyag van a neten, könnyű megérteni működésüket. Egyébként az Arduino is egy C alapú nyelv,hasonlítanak,szinte a gondolkodásmód is azonos.) meg minden kicsit más de a gondolkodás hasonlít. Egyébként hagyjuk az előszót térjünk a lényegre. ![]() Itt van a kérdésedre a 100%-os megoldás példa progival meg minden infó. Sok sikert! Üdv. Hunor!! ![]()
Szia!
Nem lehet, hogy a fordító kioptimalizálja az echo változót? winavr csinál ilyet amikor egy globális változó a főprogramban van és pl. megszakításban változik az értéke.
Nem tudom, hogy aktuális-e még.
Hogy van deklarálva az echo változó? Így kell:
Egy apró megjegyzés. Az interruptban az echo-t nem két egyenlőség jellel kellene 1-re állítani. Szóval ehelyett:
Ez kellene:
Ahogy most van neked így csak egy egyenlőség vizsgálatot csinál, nem egyenlővé teszi 1-el. Így nem is fog kilépni a while ciklusból.
Pontosan, és a return se kell bele. return; pedig végképp nem, ha már beleteszed, valami legyen, pl return 0;, de nem kell bele return.
|
Bejelentkezés
Hirdetés |