Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Sziasztok!
Készítettem egy project-et Arduino-ban. Tökéletesen működik ellenben a könyvtárrá alakítása során apróbb gondjaim vannak. Van benne pár saját és egyéb (MQTT) szubrutin, melyek class-on belüli deklarációjával vannak gondjaim. Van itt valaki olyan, aki csinált már project-ből library-t és Debrecen vagy annak környékén lakik?
Ezt a pollingot hogy kell használni? Esetleg valami jó leírást tudsz róla?
Egyenlőre avr és polling kifejezésre UART soros átvitelről találok leírásokat csak...
Polling: Rendszeres időközönként ellenőrizni valamit. Például digitalRead a loop függvényben. Hátránya, hogy ha sokmindent csinálsz a loopban, akkor akár NAGYON sok idő is eltelhet az esemény és a kezelése között.
Interrupt: Nem kell ellenőrizni, mert automatikusan szól, ha változás van. Például ha változik egy input pin logikai szintje, akkor megszakítja a program futását, és átadja a vezérlést az interrupt kiszolgáló rutinnak. Megnézted a linkelt forrást? Ha cUseInterrupt true, akkor interrupt-ot használ, ha false, akkor pollingot.
Helló mindenkinek.
Meglettek az eredmények, az Arduino-s logikai analizátorral. (Az eredmény egyezik, a hangkártyás teszt eredményével.) A második képen látható a logikai szintek, időtartalmai. Ezek után, hogyan tovább?
OK! Ez szép eredmény!
Mesélj hogyan érted el, hogy mérni tudod az eredeti jeleket? Van H: 400us, L: 200us, és H: 100us, L. 500us. Hú! Nem tudom fejből, 1 ADC konvertálás menyi idő? Ennek utána kel nézni. Eddig úgy csináltuk, hogy megszámoltuk menyi ADC mérés volt szintenként. És abból kalkuláltuk az impulzusok hosszát. És a LED vezérlő mérését is ide tehetnéd, hogy lássuk annak is az időzítéseit
Következtetek!
Ha már mérni tudod a kapásjelzőt, akkor már TTL jelszintjeid vannak a bemeneten? Épp az előbb mértek itt bemenet olvasásra időket. Bővebben: Link 1. // Arduino Polling: 6-11 us 2. // Arduino Interrupt: 11.7 us 3. Ehhez még hozzájön a feltétel vizsgálat Ha a fent mért időket osztjuk a (szintolvasások száma * 20) = kapunk viszonyítást az impulzusok hosszáról. Vagy timer időzítésekkel mérjük a jelváltozások között eltelt időt. Mint az Arduino-s logikai analizátorban. És ellemezük a kapott értékeket. A hozzászólás módosítva: Márc 17, 2018
Impulzus hossz mérésre van támogatás a legtöbb AVR-ben, és úgy hívják, hogy input capture. Itt is van róla leírás.
Köszi, a segítséget!
Igazság szerint ez nem az én projectem! És nem szándékoztam rá annyi időt szánni, hogy meg írjam A – Z-ig. Max pár soros kiegészítést tudok ígérni 1 már meglevő projektben! A hozzászólás módosítva: Márc 17, 2018
Idézet: „akkor már TTL jelszintjeid vannak a bemeneten?” Igen, az LM358-ast 5V-al hajtom. (Csatolt képen a kapcsolás, hogy ne invertáljon). És egy csatolt kép, a LED-szalag vezérlő távirányítójáról is. (Bár ennél a rövid impulzusoknál van eltérés, elégé random, biztos az olcsó „technika” miatt). Nem követtem azt a témát, majd visszaolvasok.
Itt a freki: 580Hz
És a kapásjelzőnél: 1668Hz. Ez 3 szorossa! Ezért kellet formázni a bemenő impulzusokat digitálisan mérhető jelszintekre. Most a használt ADC polingolós programot, könnyen átalakíthatjuk digitálisra. Vagy megpróbálsz keresni az előbb ajánlót hoz hasonló projectet?
Megvallva az igazat, én is elég kezdő vagyok az Arduino programozásában, csak az alap dolgokat tudom. (Csak a neten lévő projektekből lopkodok és próbálom megérteni, kisebb nagyobb sikerrel).
Megnézem az ajánlott projekteket, próbálom elkezdeni és biztos, hogy kérek még majd segítséget. De ha ez a sok segítség után is, még egy kis útbaigazítást adnál, hogy melyik irányba induljak, melyik lehet az egyszerűbben kivitelezhető, azt megköszönném.
Olvasd el a cikket, amit Vargham ajánlott feljebb!
Az pont erről szól.
Megvan a kód. Értem már!
A polling módszer nekem teljesen jó. Semmi mást nem kell csinálnia, mint figyelni a pin-t és ha átáll akkor mehet a program tovább. Ha ezt is gyorsítani akarom, akkor arduino kód helyett valami más kell? Lehet esetleg assembly-t is írni bele? Idézet: „Ha ezt is gyorsítani akarom, akkor arduino kód helyett valami más kell?” Bizony. Ha végignézed a kódot, amit írtam és linkeltem, akkor látod, hogy van benne egy cUseArduino nevű bool konstans. Nézd végig az összes if ágat, ahol ezt vizsgálja. Az igaz ágon találod az Arduino megvalósítást, a hamison pedig az AVR Libc megvalósítást. A kettő ugyanazt csinálja, csak az Arduino lassabban. Idézet: „Lehet esetleg assembly-t is írni bele?” Lehet, de ide minek. Ezek a regiszter műveletek 1-1 gépi utasítássá fordulnak.
Hi Mesterek!
Most ismerked az avr-el, ardunioval. Vaki tudna segiteni abban hogy a serial porton bejovő pl.: bluethoot modulrol mert csak ascii illetve hex erteket látok, mig a gps modul esetén int illetve float változkkat. Vagy ugy is kérdezhetém hogy az uart-on lehet integer illetve float váltózakat kuldeni és fogadni is? Vagy a gps modul esetében az uarton bejövő változókat maga a "gps könyvtár" forgatja/ alakítja át a char illetve string változókból float/int váltózokká? Remélem érthetően sikerült fogalmaznom
A soros porton levő adatokat úgy értelmezzük, ahogy jólesik. A számítógépen (Arduino is) történik az átalakítás karakteres formából belső, bináris formára, mint a float, integer, string. A vonalon megegyezés szerint bájtokat mozgatunk, amik rendszerint nyomtatható karakterek, de megtehetjük azt is, hogy a bináris, belső formát küldjük át bájtonként. Ez gyorsabb kommunikációt eredményez, de nehezebb kideríteni az esetleges, manapság egyre ritkább adattorzulást.
Remélem jól értettem a kérdést. A hozzászólás módosítva: Márc 24, 2018
ds1307 Time kódot szeretném meg fordítani elöl"ddMMTyyyyhhmmss" erre yyyyMMddhhmmss>>>> de nagy hülyeséget csinál ds1307 még sem jó irodik be a beállítót idő 2..3 kódrésznél!
1,
2, Ezzel van probléma!
3,
A hozzászólás módosítva: Márc 25, 2018
Nem csinál az hülyeséget, pont azt csinálja amit "kérsz" tőle. Az egy másik dolog, hogy fogalmad sincs arról, amit csinálsz.
Nézz utána a substring fv-nek, hogy hogyan működik Bővebben: Link Ha az 1. négy karaktered az év, akkor az első 4 karaktert kell kivenned, és mivel a 0. az első index, akkor:
Szóval se nem a 2., se nem a 6. karaktertől nem kezdődik, hanem a nulladiktól. Egyébként tökre használhatatlan kódrészleteket hánysz ide...
igy sem ad jó eredményt!
igy ok...
Akkor az elején volt valami dzsuva, 2 karakter a ddMMTyyyyhhmmss előtt...
Soros port státusz lehet figyelni valahogy?
Itt gondolok ha megnyitom portot egy led villog!
Igen azért kérdeztem meg itt!
Még azt tervezek bele karakter ellenőrzést de az rá ér később is !
Szervusztok.
Már jó pár napja szenvedek az Arduino nanora feltöltéssel az asztali gépemen. Ám a laptopon minden simán megy. Alább küldöm a hibaüzenetet amit kapok. Mi hiányzik neki és azt hogyan javíthatnám? Köszönöm.
Szia
gondolom, az evidens, hogy nem tud csatlakozni a bootloaderhez az avrdude - jó a soros port beállítása? - úgy tudom, a nano bootloader sebessége 57600 A hozzászólás módosítva: Márc 26, 2018
Szia.
Ezt hogyan/hol tudom beállítani?
- Arduino IDE 1.0x-ben az Eszközök/Alappanel menüpontban Arduino Nano w/ATmega 328
- Arduino 1.6.x-ben Tools/Board menüpontban Arduino Nano, A Tools/Processor menüpontban pedig ATmega 328 legyen kiválasztva. |
Bejelentkezés
Hirdetés |