Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
A programmemória 75%-on van, de lehet a RAM-od tele. Rakj be egy kis programot, ami megmondja, hány byte szabad. Próbáld meg a soros portos szövegeket mindenhol kikapcsolni ideiglenes, hátha az zavar be. Nem tudom, hogy interrupt megszakíthatja-e, de ha igen, akkor az érdekes lehet. Lehet, hogy Te vagy egy másik külsős funkció átállította pl. a timer0-t, Te meg delay-t használsz. Ezek jutottak eszembe. Nálam még az is probléma volt, ha olyan elemére hivatkoztam egy tömbnek, ami nem létezett, stb.
Szia! Megnéztem a RAMot, 297 bájt szabad. A programban szerintem nincs hiba, mert működik, ha csökkkentem a méretét, 78% alá. Még arra gondoltam, hogy a bootloader-t nem számolja bele az Arduino, az ugye 8K, az ATMEGA328P az ugye 32K. Ha ezt így számoljuk, akkor 75%-nál már tele van a kontroller.
A hozzászólás módosítva: Dec 29, 2014
hello, érdemesebb lenne (?) a 2k-s bootloadert használnod, sőt akár a 0.5k-sat is.
Sziasztok
Van egy mukodo (mert csak programozasra hasznaltam) ArduinoUNO lapkam, de sikerult kiegetni az osszes tobbi ATMega328 botloaderes IC-imet. Vasaroltam is nehany szuz ATMega328-at , viszont a neten nagyon sokfele infot talaltam a botloader feltoltesere. Azt szeretnem kerdezni hogy az UNO eseteben ezzel a megoldassal (16MHz kristaly, 10 K ellenallas es kondenzatorok) feltolthetem a szuz ATMega328-ra a botloadert ? Botloader irasa kozbe el kell, vagy nem, tavolitani az UNO lapkabol az IC-t ? Esetleg tudtok egy eggyertelmubb leirast valahol ? Koszonom.
Szerintem egyértelmű a leírás. Két lehetőség van. Az egyik, amikor a Bootloader töltöd az Atmega-ba, akkor SPI csatlakozó csatlakozik az üres Atmega SPI-jére. Ha megvan a Bootloader, csak utána tudsz RX TX-en keresztül programot tölteni az Atmega-ba. Nem Bootloadert, hanem Programot! Bootloader 1x kerül az Atmega-ba, és ott is marad.
Én pl. programot egy Arduino mini-re úgy rakok, hogy RX,TX, Reset, +VS, GND össze van kötve az UNO-val, a programban a menüből kiválasztom, hogy Atmega328p, és feltöltés. Nem veszek ki semmi IC-t, egy-az-egyben megy a programozás (feltéve, ha az UNO-n nincs semmi program, ami soros porton kommunikálni. Ilyen időkre felrakok rá egy villogó programot, addig is csináljon valami hasznosat ). Ha normál DIP-es Atmega328-at akarsz programozni, akkor RX,TX kommunikációkor ki kell venni az UNO-ból az Atmega-t. Nem próbáltam ki, de lehetséges, hogy ha nem veszed ki, mindkét IC tartalma azonos lesz Bár előtte ki lesz olvasva egy azonosító, tehát nem valószínű. Inkább csak simán nem fog feltöltődni a programod. A hozzászólás módosítva: Dec 30, 2014
Akkor összerakod a Breadboard-os kapcsolást, és SPI-ket összekötöd, a rajz alapján. Aztán csak a programban kiválasztod, hogy bootloader írása. Sok sikert. Kövesd a leírást! Ha kell, fordítsd le.
A hozzászólás módosítva: Dec 30, 2014
Hellotok, probalkozom a bootloaderrel de csak azt irja ki hogy "Hiba lepett fel ..."
Idézet: „Using Port : \\.\COM9 Using Programmer : stk500v1 Overriding Baud Rate : 19200 avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Recv: avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude done. Thank you.” ennyi Hol hibaztam ? A hozzászólás módosítva: Dec 30, 2014
A 21-es lábat is kösd tápra, hátha segít.
Most meg ezt irja, csatolasba (hosszu),
A hibakód alapján reset problémái vannak. Bővebben: Link
mellesleg, most nézem, a reset lábnál az az ellenállás miért a gnd-re húzza a reset lábat? Kösd át, hogy felhúzó ellenállás legyen.
"Done burning bootloader"
Koszonom a segitsegeteket. "Sok szem tobbet lat", legalabb 5 x neztem at es megis bejott a hiba. Koszonom, meglett. Egy tovabbi szep estet mindenkinek.
Sziasztok! Vettem egy 16x16-os mátrix led panelt, programot találtam is hozzá, de nem értem, mi alapján tudom meghatározni, hogy melyik világítson és melyik ne. Előre is köszi a válaszokat!
Biztosan ismered a számok Hexa ill. Bináris ábrázolását?
Programozó számológép Hex állapotában beírod, az említet értékeket, és átváltasz Bin állapotra. A kapott 16*16 bit Mátrix jelképezi a LED-ek állapotát.: 11111111 11111111 10000000 00000001 …. ... A hozzászólás módosítva: Dec 31, 2014
Sziasztok!
Az hogyan lehet, hogy ez a feltétel nem fut le, ha az egyik tömbben 99, a másikban pedig 9 van? if (!(pontosido[0]==elozoido[0])) ? Visszaírattam soros porton, tényleg ez a két érték van bennük. És nem úgy van a szám eltárolva, hogy pontosido[0]=9, pontosido[1]=9, hanem pontosido[0]=99. CodeBlocks-ban rendesen lefut, akkor a változóknál kell kutatkodnom... Köszönöm. A hozzászólás módosítva: Dec 31, 2014
Meg lett a hiba. A feltétel lefutott, csak utána én vétettem hibát. Bocs a zavarásért!
Dominik: multiplexálásnak nézz utána, itt hobbielektronikán van róla egy szuper cikk. A lényeg, hogy egyszerre csak pár LED világít, és végig van pásztázva minden a 16x16 LED, de olyan gyorsan, hogy állóképnek látod. Kapcsolási rajzot is linkelj, akkor írok róla pár szót, hogyan tudsz csak 1 LED-et bekapcsolni. Ahol a sok HEX-a kód van, abban csak karakterek vannak letárolva, vagy valami minta, azt küldi ki a kontroller a LED-ek felé. Ha átírsz párat HEX-ből BIN-be egymás alá, rá fogsz jönni, hogy mit akart ábrázolni. Pl. az első pár szám: Bővebben: Link 1111 1111 1111 1111 1000 0000 0000 0001 1000 0000 0000 0001 1001 1111 ... Ez mondjuk semmire sem hasonlít. A hozzászólás módosítva: Dec 31, 2014
Köszi, már működik és B.U.É.K!
Lenne még egy olyan kérdésem, hogy azt hogyan lehetne megcsinálni, hogy ha csinálok arduinoból egy webszervert, de a weboldal html-ben sd kártyán van, akkor az arduinotól kifelé a weboldal felé hogyan tudnék adatokat továbábbítani? A hozzászólás módosítva: Jan 1, 2015
Nincs rá ötletem.
Én a napokban csináltam ilyen webszervert, remekül működik.
Bővebben: Link
Ezer hála, sokat segítettél!
Sziasztok!
Még csak most ismerkedem a programozással és az arduinoval, szóval egy kis segítséget, tanácsot kérnék mivel a mikroprocik lelki világát annyira nem ismerem. Ha egy lábat bemenetnek használok optocstolós leválasztással és bekapcsolom a felhúzó ellenállást akkor elég ez, vagy kívülre is kell (R1)? Így gondoltam, mint a mellékelt képen látható. Működő képes megoldás ez? Ha én a bemeneti lábon csak azt nézem, hogy van-e 5V, vagy nincs, azt analóg bemeneten hogy tudom megcsinálni? ADC-t külön be kell kapcsolni, vagy automatikusan átalakítja a megfelelő digitális jellé? És ezt, hogy tudom felhasználni? A segítségetek előre is köszönöm.
Ha INPUT_PULLUP ként adod meg a lábat, nem kell külső felhúzó ellenállás. Nem kell bekapcsolni, csak arra a lábra kell kötni a bemenetet, mint amelyiknek megmondod, hogy bemenet, és a programban lekéred az értéket.
Jól gondolom, hogy a második mondatod a második kérdésemre a válasz?
Akkor ezek szerint rákötöm az 5V-ot az analog bemenetre és beolvasom az értékét. Az eredményül 1023-at kapok? Jól gondolom? Ehhez viszont gondolom használnom kell a referencia lábat is amire 5V-ot kell kötnöm? INPUT_PULLUP esetén nem kell külön bekapcsolnom a felhúzó ellenállást. Jól gondolom? A hozzászólás módosítva: Jan 2, 2015
Ha a setupban úgy adod meg, hogy
pinMode(pin, INPUT); akkor neked kell felhúzó ellenállás, ha pedig pinMode(pin, INPUT_PULLUP); akkor nem kell külön felhúzó ellenállat. Ha ertek = digitalRead(pin); sort használod, akkor az értéked 0-1023 között alakul. 5V-nál 1023 lesz. Ha az arduino panelen dolgozol, nem kell kötnöd semmit a ref lábra tudtommal, legalábbis én nem kötök oda semmit. A hozzászólás módosítva: Jan 2, 2015
Óvatosan a belső hőmérővel. Ha külső analóg referencia feszültséget használsz (ami javasolt ha pontosan akarsz mérni) és váltogatod a referenciaforrást, tönkreteheted (kb. 100% eséllyel) a kontrollert (rövidre zárja a belső 1V1-et és a külső referenciát). Bár a kézikönyvben azt írja, hogy át kell váltani a hőmérsékletméréshez a belső 1V1-re, valójában ez nem teljesen igaz. Lehet használni a külső 5V-t is csak nem lesz különösebben pontos a hőmérsékletmérés: kb. 5K-es (Kelvin) felbontása lesz (túlmelegedés ellenőrzésére ez is megteszi).
A gond as SRAM-oddal van. Ugye 2K áll rendelkezésre és azt írja ki, hogy 297 szabad. Azonban az valójában azt írja, hogy minimum mennyi szükséges a futtatáshoz.
Pl.: az egyik saját programom: Binary sketch size: 32 242 bytes (used 100% of a 32 256 byte maximum) (7,14 secs) Minimum Memory Usage: 1356 bytes (66% of a 2048 byte maximum) Azt írja, hogy még vagy 33% szabad. A valóságban, ha 100byte-al többet használok már összeomlik. Neked is elfogyott az SRAM-od. Egy viszonlyag jól használható és könnyű trükkel felszabadíthatsz valamennyit. Ahol csak string-eket használsz próbáld ki az F makrót. pl. Serial.println("Valami üzenet"); ---> Serial.println(F("Valami üzenet")); Ez azt csinálja, hogy a szövegeket csak a flash-ben tárolja és onnan tölti be. Ha hagyományosan adod meg, akkor mindig leképzi az SRAM-ban is, ezért az a 2K rohamosan fogy. A módzser hátránya, hogy az így megadott string-ek egyszer használatosak (valójában a fenti példa szintén egyszer használatos stringet eredményez a hagyományos módszernél is). Ha többször használatos kell, akkor jöhet szóba a PROGMEM használata, ha érdekel mutathatok példát arra is.
Ehhez a témához kapcsolódik még, hogy nem csak a belső hőmérsékletet lehet megmérni az analóg bemenetekkel hanem az 1V1 belső referenciafeszültséget is (plusz a GND-t). Ez látszólag céltalannak tűnik, azonban az 1V1 feszültsége nagyon stabil (bár pontatlan, hisz uC-ről uC-re változik egy elég nagy tartományban, tehát használata előtt kalibrálni kell). Amit valójában mérünk tehát az az AVCC-re kötött feszültség (AREF-et most nem használunk), hisz a mért érték ennek a feszültségnek a függvényében változik majd. Ez nagyon hasznos lehet akkumulátorról / elemről működő alkalmazásoknál az akkumulátor / elem feszültségének meghatározására. Így még időben kiírhatjuk az adatokat EEPROM-ra, illetve meggyújthatunk egy figyelmeztető LED-et. A legszebb az egészben, hogy nincs szükség ehhez semmilyen külön hardverre.
Azóta teszteltem, szerintem tényleg a program memóriám fogyott el, mert pont annyit foglal a bootloader, amennyivel hamarabb megtelik. Mindenképpen kipróbálom majd azt a módszert, amit írtál. Már rendeltem egy Arduino Mega panelt Ebayról, hamarosan megérkezik.
|
Bejelentkezés
Hirdetés |