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   520 / 840
(#) Ktulu válasza csabeszq hozzászólására (») Feb 19, 2013 /
 
Ezt nem egészen értem. RTS CTS hol?
A max-nál csak RX TX van használva. A soros programozó CTS-t használ bemenetnek, DTR-t kimenetnek: Bővebben: Link
Mivel rögtön az AVR mellett van az ISP header, (jtag nincs) nem hiszem, hogy letiltották volna. Bár ki tudja...
AtMega128-nál a programozás PE0 PE1 lábakon zajlik tudtommal. PE0-t kötöttem a programozó MOSI lábára.
(Annyit még hozzátennék, hogy nagyon bezavar minden a programozó SCK és MOSI jeljeibe. pl ha mozgatom az egeret. De valószínű ezzel tud mit kezdeni)
A hozzászólás módosítva: Feb 19, 2013
(#) every hozzászólása Feb 19, 2013 /
 
Sziasztok! ATmega8ps-pu ból sikerült kizátnom magam, hogy lehetne könnyen vissza állítani? Köszi!
(#) TavIR-AVR válasza every hozzászólására (») Feb 19, 2013 /
 
Kizárás defníciója?
- disable reset?
- disable ISP?
- hibás órajelállítás?
(#) TavIR-AVR válasza H2opok hozzászólására (») Feb 19, 2013 /
 
A 644P az nem Arduino, hanem a Wiringnek a chipje. Az Arduino csak összevissza hekkelve - esetleg - fordít valamit...
wiring.org.co oldalon a fordító.

Hátha segítettem....
Robert
(#) every válasza TavIR-AVR hozzászólására (») Feb 19, 2013 /
 
Ezt a .hex -et töltöttem bele (ez labortáphoz valő), de lehet nem is kellene a fuse biteket állítani? Vagy ennél az atmega8pa-pu nál az avr studioba mikre kellene állítani a frekiket, hogy tuti ne legyen baj. Hogyan lehet megoldani, hogy ne járjak így legközelebb. köszi!
A hozzászólás módosítva: Feb 19, 2013

ddcp.hex
    
(#) TavIR-AVR válasza every hozzászólására (») Feb 19, 2013 /
 
A HEX NEM tartalmazza a fusebiteket. Én a leírásból/kapcsolási rajzból szoktam kitalálni...
Ha van Kvarc: External quartz. BOD: 4.3V (5V táp esetén), különben 2.7V. Általában ennyi elég.
(#) every válasza TavIR-AVR hozzászólására (») Feb 19, 2013 /
 
(#) TavIR-AVR válasza every hozzászólására (») Feb 20, 2013 /
 
Az oldalon írják: Belső, 4 MHz.
(#) Ktulu válasza csabeszq hozzászólására (») Feb 20, 2013 /
 
Igazad volt. Elvágtam mindkét adatvonalat a MAX felé, és tökéletesen működik mindenik programozóval. (legalábbis az olvasás. írni vagy törölni még nem próbáltam. Minden lock bit be van égetve, a cím alsó bájtját olvassa vissza minden memória címen. Ez normális az adatlap szerint. Esetleg ha meg tudnál erősíteni ebben)
A hozzászólás módosítva: Feb 20, 2013
(#) csabeszq válasza Ktulu hozzászólására (») Feb 20, 2013 /
 
Hát, sajnos megfelelő mennyiségben szívtam már ilyen dolgokkal breadboardon.

Sajnos egyáltalán nem mindegy, hogy mit kötsz a MISO/MOSI/SCK-ra. Ha lehet, akkor szabadonhagyom őket, de nyomógombnak is ideális.

Nagyon sok eszközt nem lehet rákötni azokra a tűkre, mert programozhatatlanná válik tőle az AVR.
A hozzászólás módosítva: Feb 20, 2013
(#) zombee válasza Ktulu hozzászólására (») Feb 20, 2013 /
 
Ha a MAX és az AVR közé ellenállásokat kötsz(legfeljebb 6.8-10kOhm),
akkor is programozható marad, és a MAX is tud vele kommunikálni.
Ez főképp a programozótól(kimenő ellenállás) és a MAX-tól(bemenő ellenállás) függ.
Ha nem adja, akkor jumper használata célszerű. Ilyenkor elég csak az Rx-ként használt
lábat jumperolni, mert ezt a vonalat hajtja a MAX is. A TX-et az AVR hajtja, ezért azt nem kell.
A hozzászólás módosítva: Feb 20, 2013
(#) zombee válasza csabeszq hozzászólására (») Feb 20, 2013 /
 
Programozótól, és a rákötött cucc ellenállásától függ. DIP-kapcsolót és LED-et nem menő rákötni.
Profi távirányító-forgalmazó partnerünk mégis megtette, így programozásnál a 6-7-8 kapcsolókra
mindig oda kell figyelni. Ez van, ATMega8-nál kevés a láb, programozásra fenntartani luxus...
A hozzászólás módosítva: Feb 20, 2013
(#) H2opok válasza TavIR-AVR hozzászólására (») Feb 20, 2013 /
 
Köszi. Próbáltuk, ez .pde file-t kér, az meg nincs az állományban. Igaz ezt sem értem, mert némelyik mert a régebbi verzióban meg van. Hogyan lehet ilyet létrehozni?
A hozzászólás módosítva: Feb 20, 2013
(#) csabeszq válasza zombee hozzászólására (») Feb 21, 2013 /
 
A nagy ATmegák esetén szerintem már az is elég, ha a 8 kapcsoló megfelelő átállítása után az IC programozhatóvá válik.

Én bootloaderrel UART-on fogom programozni az IC-t az esetek 99%-ában. A maradék 1% akkor kell, ha a hiba a bootloaderben van, vagy a biztosítékokat akarom megváltoztatni.
(#) icserny válasza H2opok hozzászólására (») Feb 21, 2013 /
 
Ha van .ino, akkor nevezd át .pde-nek!
(#) H2opok válasza icserny hozzászólására (») Feb 21, 2013 /
 
Próbáltam már, sajnos nem jó. A WIRING programmal is, hibával fordul. (tegnap egy régebbit sikerült lefordítani, ma meg már az sem megy)
Valaki próbálja már meg legyen oly szives, mert már arra gyanakszom hogy a valami program kompatibilitási sza...ág van a gépemmel, mivel tegnap refordult ma meg már nem.
Ezt kellene, ATmega644p-hez:
Bővebben: Link

Köszi
A hozzászólás módosítva: Feb 21, 2013
(#) meone hozzászólása Feb 22, 2013 /
 
Sziasztok!

Megint akad egy kis problémám.
Ha bekapcsolom a Raspberry PI-met a rendszer betöltését követően PHP-n keresztül kiakarok a mikrokontrollere küldeni egy üzenetet akkor a mikrokontroller nem fogadja azt, hanem automatikusan újraindul.
Ha viszont elindítom az Arduino IDE programot és egyszer megnyitom a Soros monitort azt követően jól működik a PHP-n keresztül való kommunikálás.

Mi lehet a hibája?
Valaki találkozott már hasonló problémával?

Köszi előre is.
A hozzászólás módosítva: Feb 22, 2013
(#) zombee válasza meone hozzászólására (») Feb 22, 2013 /
 
Nekem az jut eszembe hogy alapból a bootloader indul el,
és az Arduino IDE-vel lényegében "kilépteted" belőle.
(#) every hozzászólása Feb 22, 2013 /
 
Kérlek segítsetek lefordítani .hex-be az alábbi oldalon levő legújabb verziójú file-t. köszi!
http://tuxgraphics.org/common/src2/article10051/
(#) kiborg válasza kiborg hozzászólására (») Feb 23, 2013 /
 
Meguntam a hibaüzenetet és próbaképpen kicseréltem a vezérlőt egy másik Mega16-ra és láss csodát megszűnt a hibajelzésem.
Szóval az AVR volt a bűnös. De miért? Nem világos számomra.
Kiborg
(#) tej válasza meone hozzászólására (») Feb 23, 2013 /
 
Szerintem a soros port DTR vonala reseteli az AVR-t.

Bővebben: Link
(#) szdani hozzászólása Feb 24, 2013 /
 
Sziasztok,
segítséget szeretnék kérni, a pwm jelemet szeretnék 20KHz-re állítani de nem sikerül. atmega 168-at használok, 8MHz-es órajellel
  1. int main(void) {
  2.  
  3.         lcd_init();
  4.  
  5.         _delay_ms(100);
  6.  
  7. lcd_contrast(0x10);
  8.  
  9.  
  10.  
  11.         lcd_clear();
  12.         lcd_contrast(0x10);
  13.  
  14.        
  15.  
  16.         samplesPos = 0;
  17.         bufferUsedSpace = 0;
  18.         pwm_dysp = 0;
  19.     minSampleTime = MAX_SAMPLE_TIME;
  20.  
  21.  
  22.  
  23.  
  24. DDRD=0x00;
  25. PORTD=0xFF;
  26. PORTC=0xFF;
  27. DDRB=0xFF;
  28.  
  29. ICR1=640;
  30.  
  31. TCCR1A|=(0<<COM1A0)|(1<<COM1A1)|(0<<COM1B0)|(0<<COM1B1)|
  32.  
  33. (0<<FOC1A)|(0<<FOC1B)|(1<<WGM11)|(0<<WGM10);
  34.  
  35. TCCR1B|=(0<<ICNC1)|(0<<ICES1)|(1<<WGM12)|(1<<WGM13)| (0<<CS12)|(1<<CS11)|(0<<CS10);
  36.  
  37.  
  38.  
  39. OCR1A=0;
  40. for (;;) {
  41.                 pwm_plus();
  42.         pwm_minusz();
  43.  
  44.  
  45.  
  46.  
  47.  
  48. }
  49.  
  50. }
(#) Istvanpisti válasza szdani hozzászólására (») Feb 24, 2013 /
 
Szia !

Fast PWM esetén :
"The PWM frequency for the output can be calculated by the following equation:
fOCnxPWM=fclk_I/O/(N ⋅ (1 + TOP))"

A Te esetedben az fclk_I/O=8MHz, az N=8, a TOP=640 (ICR1), ezekből nem feltétlenül jön ki a 20kHz.
Másrészt viszont :
"The ICR1 Register can only be written when using a Waveform Generation mode that utilizes
the ICR1 Register for defining the counter’s TOP value. In these cases the Waveform Generation mode (WGM13:0) bits must be set before the TOP value can be written to the ICR1
Register."

Tehát először a WGM biteket állítsd be és utána az ICR1 regisztert.
(#) szdani válasza Istvanpisti hozzászólására (») Feb 24, 2013 /
 
Értem, köszönöm szépen
(#) karika200 hozzászólása Feb 25, 2013 /
 
Üdv!

ISmerkedek az AVR-el, azon belül egy ATmega8-al. Ez a cikk alapján indultam el, és a polling módszeren alapuló soros portos mintaprogramot szeretném kipróbálni(5. Oldal: Mintaprogram 1.). A kódot lefordítottam avr-gcc-vel, csináltam belőle intel hexet, avrdude-al felírtam az MCU-ba egy STK200 párhuzamos programozón keresztül. A fuse bitek beállítás utáni visszaolvasott értéke: Alsó: 0xe1 Felső: 0xd9

Egy próbapenelen van egy max232 pár kondival, egész pontosan így. Az ATmega8 pedig kopaszon egymagában ül a panelen. A reset lábán van +5V egy ellenálláson keresztül és a 2-es lábán kapcsolódik a MAX232 RX lába a harmadik lábon pedig a szintillesztő Tx lába van.

A terminál programban beállítottam a megfelelő sebességet, paritást, stop biteket, adat biteket és "átvitel vezérlést"(flow control). Bármit írok a terminálra az sajnos nem jön vissza. Egyszerűség a dologban, hogy én nem USB-n keresztül próbálkozok, hanem natív RS-232 porton. A panelt természetesen számtalanszor átnéztem, de nem találtam hibát, de átnézem újra és újra. Szerintetek hol lehet a gond? Mit hagyhattam le? Hogyan tovább?

Köszönöm!
(#) zombee válasza karika200 hozzászólására (») Feb 25, 2013 /
 
A flow control ugye "kikapcsolva"? Az AVR-es alkalmazások több mint 99%-ánál így megy.
Ekkor csak az Rx és Tx játszik. Legelső mozzanat az lenne hogy kikötöd az AVR-t,
majd a MAX232-ből kijövő két szálat(TnIN és RnOUT) simán összekötöd, és így terminálozol.
(#) karika200 válasza zombee hozzászólására (») Feb 25, 2013 /
 
A flow control kikapcsolva. A szintillesztő rendben van. Szépen visszakapom így amit elküldök. Akkor csak az ATmega8 körül van valami hiba. Lehet valami órajel gond lesz? Egy fontos dolog az előbbi leírásomból kimaradt: a 7,3728MHz kristály természetesen a helyén van.
A hozzászólás módosítva: Feb 25, 2013
(#) pici válasza karika200 hozzászólására (») Feb 25, 2013 /
 
GND-je összekötve mindenkinek?
(#) karika200 válasza pici hozzászólására (») Feb 25, 2013 /
 
Újra végigsípoltam az összes GND-t multiméterrel, minde rendben van. Annyi, hogy az ATmega8 8-as lába van csak GND-n, a 22-es külön nincs. De multiméterrel kisipoltam és rendben van az is, tehát belül össze van huzalozva.
(#) Istvanpisti válasza karika200 hozzászólására (») Feb 25, 2013 /
 
Szia !

Idézet:
„egy ellenálláson keresztül és a 2-es lábán kapcsolódik a MAX232 RX lába a harmadik lábon pedig a szintillesztő Tx lába van.”

Én úgy értelmezem ebből, meg a rajzból, hogy az ATMEGA8-as 2. lábára kötötted a MAX232 11-es lábát az RXD-t. Ha jól értem, akkor szerintem nem jó.
Az ATMEGA8 2. lába az RX - a controller szempontjából. Ide a MAX 232-nek a TX lábának kellene csatlakoznia, ami a 12-es. A MEGA8 3. lábára, ami aTX, ide kell a MAX232 RX lábát kötni, ami az RX. Ha így van, akkor nem szóltam.

max232.jpg
    
Következő: »»   520 / 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