Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Vegyél inkább hozzá egy usbasp-t. Ezzel bootloader nélkül tudod programozni, ugyan úgy az arduino keretrendszerén belül. igaz más lábakat kell bekötni hozzá.
Sziasztok!
Egy érdekes dolog történt amire eddig nem is gondoltam. Arduino UNO -val játszottam, teszteltem egy egyszerű program megírással, hogy milyen gyorsan képes kapcsolgatni az egyik port kimenetét. 1. program eredménye 100kHz négyszögjel a kimeneten:
2. program eredménye 1MHz impulzusok a kimeneten:
3. program eredménye mikroC-ben megírva a 2. program, lefordítva, és közvetlenül áttöltve az Atmega328-ra avrisp-vel 2,6MHz impulzusokat produkált a kimenetre. Na ilyenkor mi van? Mit csinál még az Arduino fejlesztőkörnyezete, hogy ennyire belassulnak a ciklusok? * Amit szintén észrevettem az, hogy ha Arduino 1.5.7 BETA verzióval fordítottam az 1. program még 100kHz-en sem futott. Az Arduino 1.0.5 compiler hozta csak a 100kHz-et. :S Tehát Arduino fordítón belül is vannak eltérések. És még egy kis extra, ha a soros port kezelés be van kapcsolva még még még lassabb az egész! Nekem most egy nagyon gyors művelet elvégzésére lett volna szükségem. Minél gyorsabb annál jobb. De így Arduino-val nehéz lesz. A hozzászólás módosítva: Szept 16, 2014
Az spi porton tudsz generálni nagyon gyors négyszögjelet, 16MHz órajellel akár 8MHz is lehet.
SPSR = (1<<SPI2X); // SPI double speed - we want 8 mhz output speed.
Sziasztok!
SPI-t szeretnék használni, ezzel egy időben a 10-es lábon PWM-et generálok. Működik a PWM, de nem tudom, hogy az SPI mikor vezérli a 10-es lábat, ami SS, vagyis reset? Ha vezérli, akkor GND-t, vagy +Vs-t ad ki? Köszönöm!
SPI kommunikációnál az SS láb:
- SPI slave - az SS láb dönti el, hogy ki van-e választva, ha alacsony akkor igen, egyébként az SPI tiltva lesz - SPI master - ha az SS láb output, akkor arra használod, amire akarod. Ha input és alacsony, akkor olybá veszi a rendszer, hogy másik master akar adni a buszon és átkapcsol téged slave módba. Magyarul amíg mester vagy és az SS output, addig arra használod, amire akarod. Egyébként meg lesz vele bajod rendesen, ha össze-vissza áll. A hozzászólás módosítva: Szept 17, 2014
Köszönöm szépen, érthetően leírtad!
Olyan lehetőségről tudtok, hogy mikor írok egy programot, felosztom a monitort két részre? Így egymás mellett tudom olvasni a program elejét, és végét, tehát könnyebb átlátni az egészet. CodeBlocks-ban van ilyen split lehetőség, nagyon hasznos.
A hozzászólás módosítva: Szept 17, 2014
Megnyitsz 1*re 2 arduniot ugyanazzal a projektal, és egymásmellé igazítod.
Mindkettőben szerkeszthetsz, csak ne feled elmenteni őket, mielőtt lefordítanád!
Esetleg egy szomszéd ablakban egy szövegszerkesztővel.
Sziasztok!
Arduino Uno-ra írtam egy programot, ami egy gomb lenyomását figyeli, interruptban, tehát közben bármi csinálhat a proci. Megkülönbözteti a hosszú, és rövid gombnyomást is. Ami kell hozzá: 3-as (interrupt 1-es) lábra kötni egy kapcsolót, a kapcsoló másik kontaktusa a GND-re. Soros monitoron keresztül kommunikál velünk a program. Célja: egy Rotary Encoder gombját fogja kezelni, röviden nyomva menübe belép, hosszan nyomva kilép, vagy labortápnál ha tekered az encodert, akkor a feszültség változik, ha megnyomod a gombot, akkor az áram változik, ha hosszan nyomod, akkor beáll egy alapértelmezett értékre, vagy dupla tápnál a két oldal beállításai azonosak lesznek, stb. A program minden változtatás nélkül futtatható, csak gomb kell hozzá, semmi más. Aki akarja, nyugodtan használhatja.
A hozzászólás módosítva: Szept 18, 2014
Szia
A kérdésedre a válasz: Az 1. esetben, meghívsz egy függvényt ami ugye pár ciklus, ott bit összeadást hajt végre a program. (A PORTB lévő 8 bites értéket össze AND illetve OR műveletet végez vele attól függ LOW vagy HIGH értéket írtál-e be) ezért lassú. 2. esetben gyakorlatilag ezt mind kihagyod, és egyből írod a port értékét. Továbbá amiért lassul a program: az arduinoba be van építve egy millis() függvény ami a bekapcsolástól számított eltelt időt méri. Ez a függvényben ugyan nem látszik a szerkesztőbe de beleíródik a programodba, és x időnként csinál egy megszakítást, és változtatja a millis() fgv értékét, ami ugye jó pár órajelet vesz időbe. Ami még tovább lassít a soros port, nagyon összetett maga a soros port függvénye, mivel szinte univerzális, tud szöveget, karaktert szavakat stb kiírni, más más változót kezelni, és ez elég sok órajelbe telik. Ha nagyon gyors programot akarsz írni el kell felejteni az arduino környezetet sajnos
Hi Kovidivi!
Igazán nem kötözködés! Csak egy pici logikai jó tanács. Interupba ne használjál Serial.print-et! Az ott túl hosszú lefutású, ezért felhalmozódnak a megszakítások. És a végén verem túlcsordulás hibára fut a programod! Interuptban csak be állítasz 1 jelzőt, hogy majd a programban ki kel írni a Kiszámolt értékeidet.
Szia!
Köszi a tanácsot. A soros monitor csak a visszaigazolásért felel, szemléltetés a célja. Normál használat közben ki kell kommentezni, vagy törölni. A hozzászólás módosítva: Szept 18, 2014
Sziasztok!
Leonardoval ismerkedem, az alábbi rövid kódban gombnyomásra egy háromjegyű számot kapok. Viszont olyan problémám támadt, hogy "0" helyett "ö" betűt ír. Ez mitől van, és hogy lehetne orvosolni? Köszi
Szia!
A Leonardo angol billentyűzetként működik, az operációs rendszer viszont magyar nyelvű eszközként kezeli. Ahol az angol billentyűzeten a "0" van ott a magyaron az "ö" betű. Ha átállítom a billentyűkiosztást angolra a probléma megoldódik. Viszont az engem is érdekelne, hogy létezik-e olyan módszer, ami a billentyűzetkiosztás átállítása, valamint időigényes "fordító" szubrutin használata nélkül is helyesen működik.
Sziasztok!
Ismerkedek az I2C kommunikációval, adatokat küldözgetnék oda-vissza master és slave között, egy feltételrendszer alapján. Azt nem tudom, hogy ha masterről kezdem a beszélgetést mindig, fixen egy wire.write(X); -tal, akkor a slave-en végrehajtódik a megfelelő függvény (Wire.onReceive(i2ckommunikacio), és ha én ezután masterről küldök egy request-et, akkor folytatódik az i2ckommunikacio függvényem, vagy kellene egy Wire.onRequest(i2ckommunikacio); a setup részbe? Nem tudtam még tesztelni a kódot sajnos. A lényeg, hogy beszélgetni szeretnék az Arduinok között, de nem tudom, hogy ez így jó-e.
Plusz egy kérdés: 10-12bit-es számot csak 8bitre felbontva tudok átküldeni? Köszönöm. A hozzászólás módosítva: Szept 19, 2014
Nekem meg az lenne a kérdésem, hogyan lehet megoldani azt, hogy az egyik port bitjét átmásoljam egy másik portra?!
Egyszerűen csak továbbítani akarom az információt mondjuk a PIN5-ről a PIN13-ra. Lehetőleg a leggyorsabban, és a digitalRead, digitalWrite nem elég...
Ötlet?!
A kérdésed nem egyértelmű mi a feladat?
Ha csak 1 bit átvitel akkor: int i = bitRead (PORTB, n); if(i){ bitSet (PORTD, n); }else{ bitClear (PORTD, n); } ...?
Köszi!
Igen, egy bit átvitele a cél, helyesebben kettő... Egyik ad, másik vesz. Gyakorlatilag csak meg kell ismételnie a jelet amit kap. Tehát akkor if nélkül nem úszom meg?!
Esetleg próbáldmeg:
int i = bitRead (PORTB, 6); bitWrite(PORTD,4, i); // Nem biztos, hogy rövidebb lessz a kód??? A hozzászólás módosítva: Szept 20, 2014
Vagy:
bitWrite(PORTD,4, bitRead (PORTB, 6)); //?
Na ez valamiért nekem nem ment:
próbáltam
Én csak Ellenöriztem nem futtatam!
Esetleg?: bitWrite(PORTD,4, (bitRead (PORTB, 6))); Vagy?: if(bitRead (PORTB, 6)){ bitSet (PORTD, 4); }else{ bitClear (PORTD, 4); }
Nos, ez megy 100% (tesztelve) -->
1. verzió:
2. verzió:
De amúgy nem értem az Arduino Referenciát sem, mert beleírhatott volna egy mintát legalább!!! De rájöttem, hogy idióta voltam, mert folyamatosan a PORTD-vel próbálkoztam port beolvasásra, holott a PIND regiszter tárolja ezt!!! WÁÁÁÁÁÁ! Tessék tanulni a hibámból! És köszönöm a segítséget! A hozzászólás módosítva: Szept 21, 2014
Ez van, sajnos néha figyelmetlenek vagyunk!
A legtöbb hibakeresésre fordítót időt, emberi tényező idézi elő! Az Arduino Helpje sajnos =0! De sajnos szinte minden FRE program ilyen. A hozzászólás módosítva: Szept 21, 2014
Üdv mindenkinek!
Akadt egy kis gondom Arduino Nano 3-mal. Rákötöttem egy LCD modult sorba a lábaira (5, 6, 7, 8, 9, 10) de valamiért nem hajlandó működni. Még csak nem is inicializálja a modult mert azon változatlanul a felső sor aktív. 24x4-es modulról van szó, sima mezei HD44780 kompatibilis panel. MSP430G2553-as vezérlővel Energiából programozva kiválóan működik ugyan úgy a LiquidCrystal könyvtárral. Ha valaki tudja/sejti mi lehet a gond kérem ne hallgassa el. Szép napot! A kód:
A hozzászólás módosítva: Szept 22, 2014
Rájöttem mit csesztem el. Még új nekem az Arduino lábszámozása. Akár törölni is lehet a hozzászólásomat.
Sziasztok!
Van valakinek CH340-es IC-vel szerelt Arduinoja? Ha veszek egy olyat is, akkor össze fog akadni a két driver, vagy a gép mindig felismeri, melyikkel van dolga? Kell vele szenvedni, vagy csak egyszer kell felrakni a drivert, és megy, mint a normál Arduino? Mennyire ajánlott? Köszönöm! |
Bejelentkezés
Hirdetés |