Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   411 / 840
(#) Fish válasza zombee hozzászólására (») Feb 10, 2012 /
 
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.
(#) zolee1209 válasza Fish hozzászólására (») Feb 10, 2012 /
 
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...
(#) Axel válasza szdani hozzászólására (») Feb 10, 2012 /
 
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.
(#) gtk válasza zolee1209 hozzászólására (») Feb 10, 2012 /
 
Hat attol fugg. iButtonnal sincs 3 lab.
(#) nolex hozzászólása Feb 10, 2012 /
 
Az alábbi beállítás 9 bites PWM, de nem működik, miért? 20mhz-es kvarcot használok 22pf-os kondikkal.
  1. TCCR1A=(1<<COM1A0)|(1<<COM1B0)|(1<<WGM11);
  2. TCCR1B=(1<<CS10)/*|(1<<CS11)*/|(1<<WGM12);
  3. OCR1A=0x0030;
  4. DDRB =(1<<PB2)|(1<<PB1);

adatlap
(#) jodri2003 hozzászólása Feb 10, 2012 /
 
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
(#) nolex válasza jodri2003 hozzászólására (») Feb 10, 2012 /
 
mit állítottál el? Attól függ.
(#) zombee válasza jodri2003 hozzászólására (») Feb 10, 2012 /
 
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...
(#) zombee válasza Fish hozzászólására (») Feb 10, 2012 /
 
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.
(#) mzozo95 hozzászólása Feb 10, 2012 /
 
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!

rc osci.JPG
    
(#) brugo hozzászólása Feb 10, 2012 /
 
Miért olyan szőrnyü drága egy JTAGICE-MK2 ?
(#) sgt válasza edison14 hozzászólására (») Feb 10, 2012 /
 
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: .
(#) sgt válasza brugo hozzászólására (») Feb 10, 2012 /
 
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.
(#) Bender hozzászólása Feb 10, 2012 /
 
Ü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.
(#) pooler hozzászólása Feb 10, 2012 /
 
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.
(#) Suncorgo válasza pooler hozzászólására (») Feb 10, 2012 /
 
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).
(#) pooler válasza Suncorgo hozzászólására (») Feb 10, 2012 /
 
Akkor ez nem jött be Köszönöm!
(#) zombee válasza pooler hozzászólására (») Feb 11, 2012 /
 
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!
(#) Tetye válasza zombee hozzászólására (») Feb 11, 2012 /
 
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.
(#) zombee válasza Tetye hozzászólására (») Feb 11, 2012 /
 
Az EEPROM kódot beégetted? EESAVE-t beállítottad?
(#) TavIR-AVR válasza Tetye hozzászólására (») Feb 11, 2012 /
 
A visszaállítandó chip és a programozóchip közt a kommunikáció minden lábon rendben?
12V ott van a resetlábon?
(#) Tetye válasza zombee hozzászólására (») Feb 11, 2012 /
 
Igen, amihez volt.

Robi: Át mérem az egészet újra.
(#) zombee válasza Tetye hozzászólására (») Feb 11, 2012 /
 
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ó...
(#) pooler válasza zombee hozzászólására (») Feb 11, 2012 /
 
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?
(#) pooler válasza pooler hozzászólására (») Feb 11, 2012 /
 
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.
(#) zombee válasza pooler hozzászólására (») Feb 11, 2012 /
 
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!
(#) pooler válasza zombee hozzászólására (») Feb 11, 2012 /
 
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:
  1. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
  2. pwm1a = 255
(#) zombee válasza pooler hozzászólására (») Feb 11, 2012 /
 
C-ben, ASM-ben vagy regiszterekben tudnék segíteni, inkább valami bascom-os fant kéne megkérdezni...
(#) pooler válasza zombee hozzászólására (») Feb 11, 2012 /
 
Bocsi, az én hülyeségem volt, túl nagy ellenállást tettem a tranyó elé.
(#) sgt válasza pooler hozzászólására (») Feb 11, 2012 /
 
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.
Következő: »»   411 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem