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   720 / 840
(#) Ivan93 válasza vyky hozzászólására (») Jan 30, 2016 /
 
A relés kapcsolást nem tudom ellenőrizni, próbáld meg, hogy helyette egy ledet kötsz a lábra, így látszik majd, hogy a program a hibás vagy a kapcsolás.
(#) vyky válasza Tetye hozzászólására (») Jan 30, 2016 /
 
Szia.Köszönöm.
Akkor azért nem azt csinálja amit akarok
És ezt hogy lehetne megoldani?
(#) AxaGame hozzászólása Jan 30, 2016 /
 
Sziasztok!
Gépcsere után telepítettem a atmel studio 7-et.
Viszont nem tudom megnyitni a 6.2-ben elkészített és működő solution file-kat.
Találkozott már valaki ezzel a problémával?
(#) Tetye válasza vyky hozzászólására (») Jan 30, 2016 /
 
Szükséged lesz még egy optocsatolóra, a reléket ne úgy kösd hogy az egyik a másikat kapcsolja, hanem az egyik avr láb az egyik relét a másik a másikat vezérelje.
Onnan már csak programozni kell.
A diódát meg úgy oda ne tegyél. Vagy oda rakd ahol nem váltasz polaritást, vagy sehova.
a relék lábára viszont csak kéne.
(#) Ivan93 válasza Attilawap hozzászólására (») Jan 30, 2016 /
 
A fuse biteknek nem vagyok mestere, de függ magától a programtól, hogy elég az avr belső órajele, vagy (különleges értékű) külső kristályról kell járatni. Le tudod tiltani rajta az spi-on való programozást, kikapcsolhatod a reset lábat, ha kevés az i/o, védheted az eeprom-ot...
És minden típushoz mást jelenthet egy fuse byte, kiválasztásához használhatsz online kalkulátort, vagy pl. az atmelstudioban csak be kell pipálni, hogy mire van szükséged, és ő kiszámolja a fuse biteket.
Ha utánépítesz egy projektet, akkor ott le kéne legyen írva, hogy mit kell beállítani.
(#) vyky válasza Tetye hozzászólására (») Jan 30, 2016 /
 
Megpróbálom átkötni ahogy írtad,de előtte értelmeznem is kell
(#) vyky válasza vyky hozzászólására (») Jan 30, 2016 /
 
Sajna nem változik semmi
(#) Sick-Bastard válasza vyky hozzászólására (») Jan 31, 2016 /
 
  1. #include<avr/io.h>
  2. #include<util/delay.h>
  3. int main(void)
  4. {
  5.         // DDRD = 0;
  6.         DDRC = 0x03;
  7.         while(1)
  8.         {
  9.                 if(!(PIND & (1<<PIND6)))
  10.                 {
  11.                         /*PB0 pin of PortB is declared output (Appliance is connected through Relay)*/
  12.                         PORTC |= 0x01;                  // motor bekapcs
  13.                         _delay_ms(2000);
  14.                         PORTC |= 0x02;                  // motor irány megfordít
  15.                         /*Appliance is ON*/
  16.                         _delay_ms(2000);
  17.                         PORTC &= ~0x03;                 // motor kikapcs és irány visszaáll alapállapotba
  18.                 }
  19.                 /*Appliance is ON*/
  20.         }
  21. }


Az optotriac, ha DC-t kapcsolgatna, akkor az nem marad mindig ON állapotban?
Helyette inkább nem egy optotranzisztior kellene(ha feltétlen kell a kapcsolásba az opto izolálás)?

Minden esetre én így módosítanám a kapcsolást, hogy a célnak megfeleljen.
Tetye, te is valahogy így gondoltad ugye?
(#) Tetye válasza Sick-Bastard hozzászólására (») Jan 31, 2016 /
 
A számból vetted ki a szót, illetve az eagle-emből a sketch.et.
Igen, így gondoltam én is.
(#) vyky válasza Sick-Bastard hozzászólására (») Jan 31, 2016 /
 
Szia. Hálás köszönet ismét
Megpróbálom lemásolni
(#) Sick-Bastard hozzászólása Jan 31, 2016 /
 
Üdv!

Azt szeretném megkérdezni, hogy a következő okozhatja e az AVR-em váratlan újraindulását:
Az UCSR0B regiszterben az (1<<RXCIE0) engedélyezve van, de a hozzá tartozó ISR nincs implementálva, az RXD láb is be van kötve az USB<->RS232 átalakítóba, de nem küldök adatot az AVR felé. Okozhatja-e az RXD-n megjelenő zaj a hibát, amitől azt hiszi, hogy adatot kapna és utána megpróbál ISR-ba belépni, de mivel az nincs ezért újraindul az AVR? (én erre tippelek)

Böngészéskor találkoztam még a BADISR_vect interruptal. Jól értelmeztem, hogy ez akkor fut le, ha van egy engedélyezett interrupt, mint a fenti esetben és nincs hozzá megfelelő ISR?
(#) rolandgw válasza Sick-Bastard hozzászólására (») Jan 31, 2016 /
 
Itt le van írva,de ha belenézel az lss fájlba,látod is.
(#) rolandgw válasza rolandgw hozzászólására (») Jan 31, 2016 /
 
Ha csak reti utasítást szeretnél,mint az asm-ben szokás: EMPTY_INTERRUPT(BADISR_vect);
(#) fecus hozzászólása Jan 31, 2016 /
 
ATMega328P-re kötöttem egy kínai DS3231-es modult. Ha jól értem ehhez a twi.h, twi.c és egy ds3231.h, ds3231.c könyvtár kellene. A másodikat sehol sem találom a Neten. Csupa cpp kiterjesztésű van, de ha jól értem az nekem nem jó. Atmel Studio 7.
Biztosan meg tudom írni, de a múltkor is úgy jártam, hogy később megtaláltam egy könyvtárat, ami jóval frappánsabb volt mint az én megoldásom.
Ki tudtok segíteni egy linkkel?
(#) vyky válasza Sick-Bastard hozzászólására (») Jan 31, 2016 /
 
Lekopíroztam,de a motor gombnyomás lékül is csak forog
(#) Kovidivi válasza vyky hozzászólására (») Jan 31, 2016 /
 
Azt próbáltad-e már, hogy az Arduino-t kiveszed a képből, és te kapcsolgatod a motor vezérlését kézzel? Esetleg Arduinoban írni egy programot, ami 2mp-ig forgatja a motort, 2mp-ig pedig nem. Akkor kiderülne, hogy működik-e egyáltalán a motort vezérlő áramkör. Remélem nem az AVR lábára van kötve a motor direktben!
(#) Tetye válasza Tetye hozzászólására (») Jan 31, 2016 /
 
Bár ami azt illeti egy ellenállást még tennék az avr meg a gate közé 100R kb.
(#) vyky válasza Kovidivi hozzászólására (») Jan 31, 2016 /
 
Ugyan így rajzoltam meg a kapcsolást ahogy te ide felraktad.
És megpróbálom atmega nélkül a kapocslást.
A hozzászólás módosítva: Jan 31, 2016
(#) Kovidivi válasza vyky hozzászólására (») Jan 31, 2016 /
 
Én raktam fel? Hol? Tesztelgesd a komponenseket külön-külön, lépésenként haladva.
(#) vyky válasza Kovidivi hozzászólására (») Jan 31, 2016 /
 
Bocsánat nem te tetted fel,csak izgalmamban elnéztem a nickeket.
Tesztelem komponensenként,de nem sok sikerrel
(#) Kovidivi válasza vyky hozzászólására (») Jan 31, 2016 /
 
Attól belinkelhetnéd, hogy is van meghajtva a motor, mert ezt eddig jól titkoltad!
(#) zombee válasza fecus hozzászólására (») Jan 31, 2016 /
 
A neten én nem találtam jó I2C könyvtárat, ezért magam írtam egyet. Nem valami teljes, meg tele van "nem-szabványos" részekkel de jól működik. Például külön timeout van mindenre amit egy hibajelző bájtban kapok vissza. Ha valami hibás az áramkörben, azt nem abból fogom látni hogy leáll az egész. Még jól működő áramkörökben is előfordul itt-ott egy kis hiba az átvitelben, és nem akarom hogy gallyra vágja az egész cuccost.

Csatolok egyet. Ez még 2011-ben készült, MCP23009 és PCF8574 kezeléséhez. Utóbbival(egybájtos regiszter) 100% hogy korrekt. A "repeated start" még nincs kezelve, emlékeim szerint ettől még működött MCP23009-el is(ebben regiszterek vannak, úgy mint az RTC-ben). Nagyon fapad, de ha érted az i2c lényegét akkor nagy segítség. Majd előkeresem az idei "verziót" ami MCP23017-el ragyogóan megy ipari áramkörökben, abban komplett regiszter írás-olvasás művelet is bele van égetve.

Apróság: a "byte" és "word" helyett "uint8_t"-t és uint16_t"-t használj.
A hozzászólás módosítva: Jan 31, 2016

i2c.h
    
(#) vyky válasza Kovidivi hozzászólására (») Jan 31, 2016 /
 
Az alap elképzelésem ez volt.
Amit Sick-Bastard rajzolt az pedig ez.
De nem sok sikerrel jártam eddig
(#) Sick-Bastard válasza vyky hozzászólására (») Jan 31, 2016 /
 
Mellékeltem a teles proteus rajzot. Ebben kihagytam a diódákat, mivel a szimulációt zavarta. Azért ez a proteus még most sem a kedvencem...

Kovidivi javaslatát kövesd. Építsd meg legalább két lépésben. Az AVR kimeneteire csak LED-eket tegyél a program teszteléshez. A másikba meg a motor vezérlést rakd össze nyomógombokkal.

Ha a gomb lenyomása nélkül is forog, akkor valószínű, hogy az első relé rosszul van bekötve.

motor.rar
    
(#) Ricsi89 válasza vyky hozzászólására (») Jan 31, 2016 /
 
Ajj basszus. A te alap rajzodon már alapból is megy a motor egyik irányba, mivel a relén keresztül állandóan kapja a feszt. Majd ha a relé meghúz, akkor vált forgásirányt. Ha elenged, akkor ismét. Tehát ahogy feszültség alá helyezed az áramkört a motor elindul! Második rajz már jobb, mert ott az egyik relé a motor tápfeszt kapcsolja, a másik pedig a forgásirányt. A te rajzodon az egyik relének nincs is értelme.
(#) Sick-Bastard válasza rolandgw hozzászólására (») Jan 31, 2016 /
 
Köszönöm a választ!
Idézet:
„If an unexpected interrupt occurs (interrupt is enabled and no handler is installed, which usually indicates a bug), then the default action is to reset the device by jumping to the reset vector. You can override this by supplying a function named BADISR_vect which should be defined with ISR() as such. (The name BADISR_vect is actually an alias for __vector_default. The latter must be used inside assembly code in case <avr/interrupt.h> is not included.)”

Ez a leírása, amit kb. jól értelmeztem ezek szerint.

Az lss fileba belenéztem, de közel van nekem a kínaihoz. ASM-el is csak futólag volt dolgom, amikor egy UDPs bootloaderrel próbálkoztam.
(#) gerry válasza vyky hozzászólására (») Jan 31, 2016 /
 
Relés motorvezérlésre a mellékelt rajzot építettem meg annó C64-re.

r-47.jpg
    
(#) Axel hozzászólása Jan 31, 2016 /
 
Sziasztok!

Amikor programozás után az AVRDude visszaolvassa memóriatartalmat akkor a végén ez az üzenet látható:

Idézet:
„Reading | ################################################## | 100% 2.23s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0100
0xff != 0x31
avrdude: verification error; content mismatch

avrdude done. Thank you.”


Jól sejtem, hogy vége van az AVR-emnek? Nekem legalábbis úgy tűnik, hogy 0x0100 címtől nem tudok már beleírni semmit sem, legyen szó akármilyen hex. fájlról. Mondjuk mivel 6000 Ft-os kínai fejlesztői panelről van szó nem volnék meglepve ha hamisítvány volna a proci, azoknál meg előfordulhat ilyen ha jól tudom.
(#) rolandgw válasza Sick-Bastard hozzászólására (») Jan 31, 2016 /
 
Egy sorban van a lényeg,reset-re ugrik ha nincs kiszolgáló rutin:

  1. 00000054 <__bad_interrupt>:
  2.  54:    d5 cf           rjmp    .-86            ; 0x0 <__vectors>
(#) zombee válasza Axel hozzászólására (») Feb 1, 2016 /
 
Állítsd be az AVR típusát! Nem feltétlenül hibás. Ha egy másik ugyanolyan IC-vel nem csinálja
akkor lehet hogy kuka(egy fusebit doctort azért még megpróbálnék).
A hozzászólás módosítva: Feb 1, 2016
Következő: »»   720 / 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