Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Sziasztok! Arduinoval tudok úgy programozni Atmega328 at, hogy a gyárit kicserélem egy másik atmegara? Próbálkoztam vele az imént, de nem sikerült. A következőt írja:
Előre is köszönöm!
Ez nagyon valószínűnek tűnik, mert ha használom a soros portot, programozó nélkül él.
Annak még nem sikerült utánajárni, hogyan kerül feltöltés állapotba. Mert a 100nF csak egy nagyon rövid impulzust ad a reset lábra. De ha megnövelem, az sem javít a dolgon.
Fordítva: a gyárit benne hagyjuk, beletöltjük a programozó-programot, és ezzel az eszközzel programozzuk a különálló csippet. A különálló csippet például breadboard-ra lehet tenni. Először rá kell tölteni az Arduino bootloadert, azután a fuse biteket be kell állítani, hogy a kvarcot használja, és akkor lesz pont olyan a csip, mint ami az Arduino-ba van szerelve.
Tutorial: https://www.arduino.cc/en/Tutorial/ArduinoISP
Alapszabály: nem használunk ékezetet a fájlok és könyvtárak nevében.
Köszönöm a segítséget! Sikerült megcsinálnom!
Sziasztok!
Azt szeretném kérdezni, Arduino led villogtatáskor milyen frekvencián működik?
Minek a frekvenciajat kerdezed?
Arduino orajelet?(kulso kvarc hatarozza ezt meg) A villogas frekvenciajat? Azt meg a port kapcsolasi idozitesei. A demo blinky az 1sec on 1 sec off 1/2 sec tehat fél Hz korul van.
Csak azért, mert szkóppal rámértem, négyszöget mutat, frekvenciát nem.
mi az ami mutat negyszöget de frekvenciát nem ?
Ha szkoppal mersz akkor nem tudsz vele periodikus jelnek az idejet vagy frekvenciajat meghatarozni? Nem értem A hozzászólás módosítva: Márc 14, 2020
Szkóp méréskor ezt mutatja, fotó mellékelve. Az arduino négyszögjel frekvenciájára lennék kíváncsi.
Kiszámolhatnád.
Ott a bal alsó sarokban, hogy egy rács mennyi idő (500ms).
Nem jöttem még rá, mit kellene beállítani hogy kiírja a szkóp a frekit.
Használati útmutatóban biztosan szerepel.
Tömb az, amit annak használsz
t1 szintén csak egy mutató, amelybe a fordító a lefoglalt terület kezdőcímét töltötte. C-ben külön memóriaterületen elhelyezkedő adatok nem fognak automatikusan összefésülődni, fölösleges ilyen megoldást keresned. A frissítő kódot valakinek meg kell írnia, és minden hivatkozás során le kell futnia (vagy berakni egy háttérben futó rutinba). Amit én írtam, az semmi más, mint egy memóriaterületre két néven hivatkozás egy példája. t2[N] és t1[N+3] ugyanarra a memóriaelemre hivatkozik.
Nem írja ki a frekit, hanem ki kell számolni:
* A képen megnézed, hogy milyen hosszú egy periódus (egy teljes ismétlődés, tehát nem csak egy oldali jel, hanem egy teljes fel-le jelalak az ismétlődésig). Esetedben 4 kocka. (Érdemes belenagyítani addig amíg lehet, hogy a leolvasási hiba mennél kisebb legyen.) * A szkóp megadja, hogy 1 kocka vízszintesen az mennyi idő. Esetedben 500ms, azaz 0,5s * A jelalak idejét kiszámolod: 4*0,5s=2s * A frekvencia a jelalak hosszának reciproka: 1/(2s)= 1/2 Hz * Az egymásra rajzolt jelek nem teljesen pontosan illeszkednek: ez a jelforma, vagy a mérés bizonytalansága. Jelen esetben szerintem a jelforma nem tökéletes, bár nem értem mitől lehet benne ennyi bizonytalanság.
Egy kérdés: Megépitettem ezt a Tekercselögépet. Egész jol müködik, csak egyet hiányolok, hogy a fö léptetö motor egy kicsit lassan megy. Gyorsitani tudnám, de akkor meg induláskor szakitja el a huzalt. A motor megszakitásbol van vezérelve jelenleg kb 120 ford/perc sebességgel. Valami olyasmi kellene ami lassan inditaná majd kb ennek a duplájára azaz 200 ford/percre gyorsulna.
Van erre valami trükk, hogy a megszakitásba raknék egy változot ami jelenlegi indulo sebességröl a maximumra gyorsulna, ha lehet folyamatosan? Kösz az ötleteket!
Többféle megoldás is van:
* Egyik, hogy az interrupt sebességét állíthatóvá teszed. Ezt úgy lehet például megcsinálni például, hogy a timert úgy állítod be, hogy a compare regiszter értékére forduljon át (tehát nem 65536-nál, hanem előbb, ott amit beállítottál), és akkor tudod állítani mennyi időnként jöjjön az interrupt. Az osztóval és a compare értékkel együtt bármilyen periódusidőt el lehet érni, és működés közben finom beosztással lehet állítani. * Valószínűleg valójában felesleges interruptból hajtani a tekercselőt, átírhatod olyanra a programot, hogy a fő loop-ból hajtod a tekercselőt, és a várakozási időket hangolod. (Ha a loop-ban nem csinálsz blokkoló várakozást, akkor lesz ez igaz. A serial.read illetve Serial.write az például, ami blokkol ameddig az adott karakter ki/be nem megy: ezeket kell elkerülni működés közben, ha ilyen megoldást csinálsz.) * Fixen gyorsabbra veszed az IT-t, és induláskor beteszel plusz egy osztó számlálót, hogy csak X IT-nként léptetsz, amivel lassítod az indulást. A hozzászólás módosítva: Márc 15, 2020
Azt hiszem az lesz, hogy a timerbe beteszek egy változot aminek a kezdö értéke a jelenlegi, majd minden ISR-ben röviditem, amig el nem éri a kivánt maximumot.
Ki fogom probálni. Kösz!
Sziasztok
Float to char érdekelne, de nem találok érthető példát ré Tehát : xx.xx C° ezt kellene kiíratnom.
Az xx.xx-et felszorozd 100-zal, ekkor kapsz xxxx-et. Ez még mindig float, viszont ezt át tudod adni int-nek (nem char-nak!). Ezek után ha pl. LCD-re íratod ki, akkor lcd.print(temp/100) (ez lesz az első két számjegy, utána lcd.print('.'), majd lcd.print(temp%100) - maradékos osztás százzal, ez lesz az utolsó két számjegy.
Ha kerekíteni akarsz egy tizedesjegyre, akkor +5, majd /10. A hozzászólás módosítva: Márc 15, 2020
Egyvalamire vigyázni kell! Ha a törtrész 07 például, akkor abból ez a módszer levágja a 0-t, mivel az egészet felvezető 0 nélkül írja ki. Ezt lehet kezelni, de gondolni kell rá!
8 bites proci esetén elég sok processzoridőt meg lehet spórolni a szorzás/osztás megspórolásával, ha inkább stringbe íratod ki a (xxxx) számot, megnöveled a string hosszát (xxxx ), majd a két utolsó karaktert jobbra tolod (xx xx), berakod a tizedesvesszőt (xx.xx), aztán a string-et iratod ki.
Köszi, közbe rájöttem, 2 lépésnél nem sikrerült rövidebbre:
A hozzászólás módosítva: Márc 15, 2020
Hát nem tudom, egy művelet a stringgel gyorsabb lenne-e, mint egy alap szorzás művelet... Valószínűleg nem. Ki kell próbálni, meg kell mérni micros() fv-nyel.
Zsoltee0001: attól, hogy 2 lépés, nem fog gyorsabban futni, csak szólok. Asch: jogos, erre figyelni kell! Én mindig berakok egy if(xx<10) lcd.print('0')-t.
Szerencsére nem annyira lényeg, viszont következő feladat százalékba való kiírás, sajna a művelet allergiás a % karakterre.
Szia!
ATmega328P PU-ba töltöttem bootladert és programozón keresztül lehet rá bármit feltölteni. Minden jól működik, de a szokásos soros porton nem tudom programozni, mert nem látja. A reset láb 100nF-al rá van kötve a DTR-re, de el sem indul a feltöltés. Lehetséges ezen valamit beállítani?
Órajel rendben van? A soros vonal eléggé ideges tud lenni miatta.
Ez nem lenne hosszabb 1-2 mikrosecnél:
Persze ez csak akkor jó, ha a xxxx számnak mind a 4 karaktere fel van töltve és nincs elnyomva a kezdő 0 (vagy legalább szóköz van helyette). |
Bejelentkezés
Hirdetés |