Fórum témák
» Több friss téma |
WinAVR / GCC alapszabályok: 1. Ha ISR-ben használsz globális változót, az legyen "volatile" 2. Soha ne érjen véget a main() függvény 3. UART/USART hibák 99,9% a rossz órajel miatt van 4. Kerüld el a -O0 optimalizációs beállítást minden áron 5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás 6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et Bővebben: AVR-libc FAQ
Bocsi, lehet hogy nem voltam világos ,de nem az ICről beszéltem,amikor azt mondtam, hogy I2Chez kevés, '-wire hoz sok, hanem ennek a kis nyáknak a másik oldalára, ugyanis ha megnézed a képek, ott láthatod. hogy három érintkező sáv van. A 1-wire hoz kettő érintkező kellene, (pl a HP P1105 "tonercsipp" 1-wire) az I2c-hez meg 4 kivezetés (pl Canon IP4600 ) .de ezen a kis panelol (ezt értem tonercsipp alatt) 3 érintkező-sáv van.
Lehet, hogy valamiről nem tudok, de az 1-wire kommunikációhoz miért lenne sok a 3 érintkező? Táp két érintkező, a harmadik pedig a busz...
Szia!
Jó pár átváltó alkalmazás van a neten is. Például itt is van egy ami vált mindent mindenbe ami kellhet.
Az alábbi beállítás 9 bites PWM, de nem működik, miért?
![]()
adatlap
Atmega 128-as processzor programozásánál a fuse biteket ami a külső kristályról működést biztosítja, rosszul állítottam be. Így most nem érem el a programozón keresztül (AVRISP MK II). A processzort újra hogyan érhetem el?
Köszi
Először próbálj meg egy minimum 1MHz-es jelet adni az XTAL1 lábra és úgy próbáld meg ISP-vel!
Ha nem megy, de a JTAGEN-t még nem piszkáltad akkor JTAG ICE. Ha már kikapcsoltad akkor HVPP Fusebit Doctor(vajon támogatja?), végső esetben AVR-Dragon vagy STK500, ez utóbbiból gyári, illetve HVPP-képes klónok jöhetnek szóba. Sajnos HVPP esetében 20 vezetéket kell bekötnöd, míg ISP és JTAG esetében maximum 6-ot kell...
Bocsánat, már egy kicsit késő volt, álmosan néztem meg. Most mást fogok mondani: De hisz ez egy ATTiny45!
Tehát nem EEPROM, hanem mikrokontroller. Be van égetve egy program, és azzal kommunikál. Valószínűleg ez számlálja a lapokat(saját EEPROM-ban le is tárolja) és a eredetiségét is biztosíthatja. Ha utántöltöd a tonert, vagy utángyártottra cseréled, akkor egy bizonyos lapszám fölött nem engedi. Szerintem a protokoll egyedi és csak 1 vezetéket használ. Aszinkron átvitel oda és vissza. De lehet hogy csak vissza(elküldi a lapszámot), és minden bekapcsoláskor 1-el növeli. A kristály is aszinkron átvitelt sejtet, ahhoz pontos időzítés kell hidegben-melegben! De van még egy lehetőség I2C-re is mert a csavarhelyek is galvánozottak, az is érintkezhet... Én a helyedben megnézném hogy a táplábak melyik 2 kimenetre mennek, a harmadikat pedig rákötném egy MAX-232 Rx bemenetére(esetleg USB-re MCP2200 vagy FT232 közvetítésével). Egy terminálban(pl. TeraTerm) pedig nézném hogy miket bekapcsoláskor küld, persze a baud rate meg egyebekkel jáccani kell. Ha már érthető a logika, lehet hogy egy "körbeszámoltatással" lehet frissíteni.
Sziasztok!
Lehet hogy csak az én kezdő butaságom volt, rájöttem, hogy nem a programba kell írni az oszcillátor frekvenciáját, hanem az égető résznél kell beállítani, ezzel szívtam egy hetet, mert nem azon a frekvencián pörgött az atmega8, mint én akartam, ma este jöttem erre rá örömünnep közepette... ![]() ![]() Tehát másoknak is mondom, akinek esetleg hasonló gondja lenne, mellékeltem egy képet, az avr studio 4 nél agy kell frekvenciát állítani!
Ez számomra új elgondolás.
Mi ezt úgy csináltuk, hogy különböző osztók között kapcsolgatunk éppen a mérésnek megfelelően. Az AD ref fesze pedig minden esetben állandó vagy az osztók úgy vannak kiszámolva, hogy az általunk kitalált max bemeneti feszültség az osztó után pont az AD-re köthető legnagyobb feszültséggel egyezzen meg. Ezután tudjuk az AD felbontást, és hogy mekkora a legnagyobb feszültség, amiből ki lehet számolni, hogy az AD által adott érték valójában mekkora feszültségnek felel meg. Maga a beszabályozás úgy szokott történni (ha jól tudom), hogy a műszerre rákötnek egy jó pár nagyobb pontossági osztályú etalont, majd összehasonlítják az elvárt és a mért értéket. (ez eddig kalibrálás) Majd analóg módon (trimmer ellenállás stb..), vagy digitális módon (korrigálási érték megadásával/módosításával) addig addig állítgatják amíg az elvárt bizonytalansági tartományon belül van. Ezt otthon úgy tudod megcsinálni, hogy veszel egy feszültség referenciát (meglepően olcsó), és egy kis bemeneti offestű műveleti erősítőt (azaz csak bipoláris jöhet szóba, ami már kicsit drágább) és egy követő erősítőt csinálsz belőle. Rákötöd az áramkörödre és megnézed hogy mekkora az eltérés, és korrigálhatod az AVR-en belül. Am ma már kb mindenki lesz.rja hogy kalibrálás helyett beszabályozást mondjon. Sajnos :no: .
Szerintem azért, mert szinte minden AVR-t támogat. Microchipnél is az ICD2 meg az ICD3 borzasztó sokba kerül. Sőt ott még normális csatlakozó felületed sincs, mert a telefon zsinór semmire sem jó, és minden méreg drága hozzá. PIC-hez szerintem a PICkit3 a legjobb választás, szinte minden 8, 16 bitest tud, és még néhány 32 bitest is.
Üdv!
AT90CAN128-ban szeretnék bootloadert írni. bootsz0, bootsz1, bootrst: programmed. A 0xF000 címről bootol. Az MCUCR regiszterben az IVSEL bit is 1. Ha kiolvasom akkor is. JTAG nincs, de ha a bit 1 akkor világít a led ![]() De ha valami megszakítás érkezik (USART0 RX) akkor valamiért a 0x0000 címnél lévő megszakításvektort hívja meg szerintem, mert mindig újrabootol a ketyere. És mivel a UCSR0A RXC0 bit 1 így megint megszakítást érez és végtelen bootloopba kerül. Mi lehet a gáz, hogy nem a bootloader részben lévő megszakításvektorokat használja? Jaés MEGA162-n is ugyanez történik.
Sziasztok!
Lehet bugyuta lesz a kérdésem, de csak nemrég kezdtem el foglalkozni az elektronikával, az avr-ekkel meg tegnapelőtt ![]() Szóval: Atmega8 pwm lábáról meghajtható közvetlenül egy normál 16x2 kijelző háttérvilágítása? (természetesen előtéttel, bár ha jól látom bele van építve egy 33 ohmos alapból) Az adatlap szerint 40mA kell neki. Vagy kell hozzá tranzisztor? Bár nem túl elegáns, de ha elbírná akkor kihagynám.
AVRek IO lábát nem illik megterhelni egy led-nél többel. Szóval ha 20mA-től több akkor kell az a tranyó. Vagy FET (pl BS170).
Egy LCD háttérvilágítása általában nagyobb áramot vesz fel, a mostanság olcsó és divatos kékek
amin fehérek a betűk, az például 40-50mA-t, amihez egy 68Ohm ellenállás kell 5V-os fesz mellett. Szerintem elég egyszerű: kell egy NPN tranzisztor open-collector módban, a bázisára meg mehet a PWM!
Ja igen, bocs azt valahogy nem illesztette be.
Az a lényeg most hogy akármit sírok az avrbe próbáltam M8-at és M168 is használni hozzá, de bármi próbálok vele feltámasztani azt írja hogy nem találja az adatbázisban ezt a típusú chipet. Se attiny2313 se M8 se M168. Mindre azt írja hogy nem ismeri.
Az EEPROM kódot beégetted? EESAVE-t beállítottad?
A visszaállítandó chip és a programozóchip közt a kommunikáció minden lábon rendben?
12V ott van a resetlábon?
Igen, amihez volt.
Robi: Át mérem az egészet újra.
Ja és 1-1 lehúzó ellenállás sem árt a +5V és +12V oldalára mert ha marad ott feszültség az nem jó...
Szia, köszönöm neked is
![]() Annyi kérdésem még lenne, hogy mennyire normális az hogy a pwm jelet maximumra állítva fele fényerővel világít a kijelző, mintha közvetlen az 5V-ra kötném?
Azt elfelejtettem írni hogy 4MHz-es belső oszcillátorral, 8 biten megy a pwm, ha ez számít valamit. Az órajelet próbáltam emelni, de nem láttam érdemi változást 8MHz-en sem.
Közvetlenül AVR-ről hajtod? Szerintem már említettem meg más is hogy nem kéne...
Biztos hogy maximum az a maximum? Próbáld ki pwm nélkül, simán úgy hogy a portot beállítod!
Nem közvetlen hajtom, egy BC817-es tranyón keresztül megy a földre, amit a pwm hajt. Próbáltam pwm nélkül csak simán a portot nyitni, úgy rendesen világít.
Biztos hogy maximumon megy, már ha 8 biten 255 a maximum. A bascom kódrész így néz ki:
C-ben, ASM-ben vagy regiszterekben tudnék segíteni, inkább valami bascom-os fant kéne megkérdezni...
Bocsi, az én hülyeségem volt, túl nagy ellenállást tettem a tranyó elé.
![]()
Amit használsz Timer-t az alapvetően 16 bites. A Waveform Generation Mode Bit Description táblázatban tudod beállítani, hogy a 16-ból mennyit akarsz használni, ha figyelmetlenül állítottad be akkor a TOP értéke nem 255 hanem több is lehet. Ha több akkor pedig nem éri el a maxot.
|
Bejelentkezés
Hirdetés |