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 ![]() ![]() 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
![]()
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 |