Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Köszönöm a válaszod!
Melyik regisztereket kell modositsam? A fusebit-eket kell állítani?
16 bites timerrel:
TCCR1A = _BV(WGM11) | _BV(COM1A1); TCCR1B = _BV(WGM13) | _BV(CS10) | _BV(WGM12); ICR1 = 233; //Ez a frekvencia OCR1A = 116; //ez a kitöltés 8 bites timerrel: TCCR2A = _BV(WGM20) | _BV(COM2B1) | _BV(COM2B0) | _BV(WGM21); TCCR2B = _BV(CS20) | _BV(WGM22); OCR2A = 233; //freki OCR2B = 116; //kitöltés A hozzászólás módosítva: Dec 21, 2016
Köszönöm, az Arduinohoz végül ezzel oldottam meg: Bővebben: Link
Amit küldtél, az müködne az ATtiny85-tel? Mi a külömbség a 8 és 16 bites timer között?
_BV(WGM11) helyett lehet használni a (1<<WGM11) -et, így nem kell ezt a makrót megkeresned.
A 8 bites timerrel az 255 a legnagyobb osztás. 16 bitesnél értelem szerűen több, tehát finomabb lépés közökkel tudod állítani a frekvenciát.
Arra figyeljél, ha állítgatod a timereket, hogy ha nem muszáj, akkor a timer0-át ne tekergessed el, mert akkor állítódik vele a delay, a millis is.
Működik ATtiny85-tel is, de abban csak 8 bites timer van. Tehát ennek megfelelően kell módosítani a regisztereket, és a biteket is.
Számolgattam...
Az Attiny85 1mHz-es belső orajellel 8biten 66,66kHz-et vagy 71,42kHz-et ad le, ami nekem nem jó. Külső 8mHz-es órajellel 68,37kHz-et tudok elérni, ami nekem tökéletes. Ha a program nem kell egyeben tudjon a frekv. generáláson kivül, akkor használhatom a timer0-át is? Egyébként ez egy CCFL inverterben meghalt vezérlő IC-t fog helyettesíteni fényerő szabályzás és egyéb védelmek nélkül. Idézet: „Ha a program nem kell egyeben tudjon a frekv. generáláson kivül, akkor használhatom a timer0-át is?” Használhatod a timer0-t Arduinonál is. Csak a timer0 976.5 Hz-es frekvenciájától függ a delay(), a micros(), a millis() függvény időzítése. És mivel ezeket sok más függvénykönyvtár is használhatja, így ezek is borulnak, illetve pontatlanná válnak. Erre kell figyelni.
Sziasztok!
Egy fontos és viszonylag sürgős segítségre lenne szükségem: Arduinoval szeretnék beégetni egy ATMega8A típusú vezérlőt. Múltkor (kb. fél éve) már beleraktam a kívánt programot, de "lassú" a mikrovezérlő, meg furcsán reagál. Amikor feltettem a kérdést itt a fórumon, mi okozhatja a gondot, azt mondták, ki kell kapcsolni a fusebiteknél a div8-at, és 8x gyorsabb lesz a vezérlő. Na, nekem ez annyi érthetőt rejt, mint kínainak az Anyám tyúkja, szóval kérném a segítségeteket. Tegnap próbáltam valahogy beégetni, de nem sikerült a kapcsolatot sem létrehoznom, stb. Viszont ami nagyobb gond volt, hogy nem tudom, majd hol keressem ezt a fusebit beállítást. A tutorial videót ha megtalálom az égetésről, akkor az valószínűleg nem lesz gond, viszont a beállításra nem találtam semmi hasznosat az interneten.
Ehhez a forráskódhoz az OCR1C = 127; helyére mennyit kellene írjak?
A 255 mekkora frekvenciának felelne meg? Idézet: „A 255 mekkora frekvenciának felelne meg?” Előosztó nélkül az órajel osztva 255-tel. 31372Hz.
Az nekem kevés.
Az előosztó mit jelent? Szerk: Rájöttem... 117-et számoltam, kiprobálom. A hozzászólás módosítva: Dec 22, 2016
Idézet: „Az előosztó mit jelent?” A timer egy programozható osztón keresztül kapja az órajelet. Az előosztón. Viszonylag nagy lépésekben lehet vele leosztani. /8, /64, /256, /1024.
Az miért van, hogy ha az alábbi kódban benne van a for és a delay, akkor müködik az inverter, de ha kiveszem, a for vagy a delay egyikét, akkor nem kapcsol be?
A for ciklus, és a delay szerintem tök fölösleges bele. Minek kell tízszer beállítani a frekvenciát?
A kitöltési tényezőt 134-re állítod, holott a frekvencia 117, így a kitöltési tényező maximum értéke is ennyi lehet. Ez így túlcsordul 117-nél, és 17-et fog eredményezni.
A frekvenciát jobb beállítani 10-szer mint egyszer sem.
Közel 2 napja szerencsétlenkedek vele, errefel nekem leírod a megoldást 3 sorban... Köszönöm szépen! Még egy annyi kérdésem volna, hogy ha 60%-os PWM-et akarok, akkor azt hogyan tudom kiszámítani, hogy az OCR1B-hez mit kell írjak?
Ebben az esetben ugye a 0%-os kitöltési tényező az a 0. (Általában ez máskor is igaz). A 100%-os kitöltési tényező pedig a 117, azaz az OCR1C értéke. Kicsit matekolni kell. A 60%-os kitöltést nagyjából a 70-es érték fogja hozni. De ugye az is kiszámolható, hogy ez nem pont 60% lesz, hanem csak 59.82905982%.
Köszönöm a segítségedet!
Ezekkel az értékekkel ugy müködik, mint ahogyan a nagy könyvben is le van írva:
A képernyő fényes, az inverteren kb. 10 percnyi müködés után a két kicsike trafó langyosodik, de nem melegednek túl. Köszönöm szépen a segítségedet! Boldog karácsonyt!
Ebben az esetben az OCR1C=122, ami 65573 Hz, és így az CR1B 70-es értéke sem 60%-os kitöltés.
Persze, ettől függetlenül még lehet, hogy így jó.
Sziasztok!
Arduinoval szeretnék 0-5V-ig feszültséget de nem add ki megfelelő értéket mi lehet vele a baj? Teljesen gyári program.
Segítséget előre is köszönöm! Kellemes Ünnepeket!
Mihez képest nem jó?
Lehet átlagolni kéne a méréseket és azt megjeleníteni. 0 és 5 volton mit jelenít meg? Ha megmutatnád mit ír ki ilyenkor a sorosmonitorra többet látnánk mi is. Esetleg fél - 1 voltonkénti választ is le írhattad volna.(soros monitorra írt értékeket) Akkor láthatnánk valami tendenciát, változást a mérési eredményekből. Lehet a potid kontakt hibás ... bármi megeshet. Amikor fixen áll valahol a poti akkor mi történik? Rengeteg a hiányzó információ még. A hozzászólás módosítva: Dec 24, 2016
Szia!
Most hogy így mondod tényleg elég hiányosan adtam meg. Csak egy sima 4.2V li-ion cellát kötöttem rá a multiméter ennyit is mutat de a soros porton 4.71-4.74V-ig mutogatja és ha úgy beállítom hogy jó legyen a feszültség értéke és csökken akkor megint különbözik. Például most mérem multiméter: 4.13V Arduino: 4.37V A hozzászólás módosítva: Dec 24, 2016
Milyen tápról hajtod az Arduino-t? Annak a szűretlensége is nagyban befolyásolja a mérést.
Ha az én PC-m USB-jén lévő 5 voltot veszem alapul, akkor az siralmas eredményt adhat.
Ilyenkor talán jobb eredményt kapnál, ha a saját 3.3 voltos referenciáját használnád, és egy csomó mérés eredményét átlagolnád.
A kódban szerepel az 5-ös szám, ami a tápfeszültséf 5V-ját jelentené. Nálad valószínűleg nem 5.000V a tápod, ezért kapsz hibás eredményt. Én beállítanám a belső 1.1V-os referenciát, megmérném multival a pontos értékét, ezt a programba beírnám, majd feszültség osztóval leosztanám az akksi feszültségét akkorára, hogy maximum 1.0V-ot kapjak, így biztosan belefér az 1.1V-os tartományba. Az ellenállásokat ia ki lehet pontosan mérni, és a programban ezeket használni, vagy soros porton visszaírod a mért ADC értéket, multiméterről leolvasod az akksifeszültséget, majd kiszámolod a kettő közti aránszámot. Pontos lesz a végeredmény. Valaki írta, hogy a belső referencia nem pontos. Ez nem igaz. Valóban nem 1.100V, ettől van egy kis eltérése, viszont ha megméred hogy pontosan mennyi, ezt tartani fogja tápfeszültség és hőmérséklet változástól függetlenül, amennyira bírja.
Valóban ha meg mérem hogy mennyi is a belső "5v" feszültséget és a helyes értéket íróm be annak az 5-nek a helyére akkor rendben működik. Ez a belső referenciás dolog hogyan működik?
Arduino uno-t használok. A hozzászólás módosítva: Dec 24, 2016
Van róla sok szép leírás, kicsit olvasgass utána. Hasznos dolog nagyon, én sokszor használom a belső 1.1V-ot.
De én úgy tudom hogy az csak arduino mega esetén van vagy rosszul tudom?
|
Bejelentkezés
Hirdetés |