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   492 / 840
(#) Ricsi89 hozzászólása Nov 1, 2012 /
 
Egy apró kérdésem lenne. Atmega8 timer2 pwm. Elvileg a ha a TCRR2 regiszterben beállítgatom a dolgokat és az OCR2-nek értéket adok meg, akkor mennie kellene, nem?nekem most így van, de nem jó, valamiért megáll a program az OCR2 értékadásnál és nem lép tovább.
Így van beállítva. Ez egy elektronikus sebességmérőt működtetne, tehát ezzel szépen fel kellene mennie max értékre.
  1. TCCR2 |= ( (1<<WGM20) | (1<<COM21) | (1<<COM20) | (1<<CS21));

És így adtam értéket az OCR2-nek.
  1. for(i=0;i<256; i++){
  2.                 OCR2=i;
  3.                 _delay_ms(5);
  4.         }
(#) Dokikaa hozzászólása Nov 1, 2012 /
 
Üdv!

Tudnátok valami olyan oldalt, ahol levannak írva kezdőknek az alapok, megszakítások, elágazások, késleltetés stb esetleg magyarul? (atmega 128). Segítséget előre is köszi.
(#) Ricsi89 válasza Ricsi89 hozzászólására (») Nov 1, 2012 /
 
Sikerült megoldani, igazából nem tudom mi volt a hiba, de most megy. Annyi biztos, hogy a mérőt fordítva kötöttem be, de hogy miért állt meg a program ott, arra nem jöttem rá, de mindegy is, mert szépen megy.
(#) svandras0404 válasza zombee hozzászólására (») Nov 1, 2012 /
 
Üdv Zombee!
Köszi a választ.
Ugyan ilyen kártyát kellene programozni Kandós feladat
Nagyon jól jönne egy kis segítség.
A kártyán lévő CAN-t kellene be progr. a többi talán menne.
Abban tudnál-e segíteni, hogy a Master kártyán 8 biten beállított érték alapján a slave kártyának analóg feszt kellene kiadnia.
A 8bites értéket kellene CAN -al átvinni.
Előre is köszi
svandras0404@freemail.hu
(#) zombee válasza svandras0404 hozzászólására (») Nov 1, 2012 /
 
Sajnos nem tudok segíteni, CAN busszal életemben nem foglalkoztam. Ami volt azt is elfelejtettem.
A házim (meg a megszerzett kredit) az egyetlen nyoma hogy valaha foglalkoztam C8051-el...
A hozzászólás módosítva: Nov 1, 2012
(#) icserny hozzászólása Nov 2, 2012 /
 
Kimio Kosakának nem reszketett a keze!
(#) Pacikoma hozzászólása Nov 2, 2012 /
 
Üdv
Van valaki esetleg ért az AVR programozáshoz....?
van nekem egy *.pde / *.ino file-om ez a teljes program amit magára rá kell égetni a AtMega 328 ra vagy ehhez kell még valami....?
Ill van egy Khazeama AVR programer - és USBasp programozó hiba üzenetet ir ki a az égetésnél ill a chip törlésnél ( Error Setting USBASP ISP Clock... )
(#) dr prof hozzászólása Nov 2, 2012 /
 
Hello, bocs ha nem ide illo a kerdes ebben is van AVR. Kb fel evvel ezelott csinaltam egy vonal koveto robotot. Most ujra elovettem es par masodperc utan ugy csinal mintha lemerult volna az elem(9v-os). Probaltam masikkal is de ugyenez a helyzet, sot meg dugasztapal is. Nem bonyolult a felepitese, a motoroknak is csak 2 tranyo van. Probapanelen van osszerakva, programkodom mar nincs meg, ezelott meg mukodott.
Orulnek ha valaki segitene mert nekem mar nincs otletem mi lehet a problema.
(#) sikolymester válasza dr prof hozzászólására (») Nov 2, 2012 /
 
Rossz a forrasztás valahol.
(#) dr prof válasza sikolymester hozzászólására (») Nov 2, 2012 /
 
Kosz a gyors reagalast. Azt vettem eszre hogy az avr "bolondul" meg. Peldaul van egy led ami azt jelzi hogy vonalon van, egy kis ido utan ez is elkezd gyorsan villogni mintha az egesz avr belassulna. szerintem az orajelekkel lehet valami gond mert csak azt valtoztattam meg mivel az atmega8 mashol dolgozott. Most visszaallitottam belso osszcillatorra.
A hozzászólás módosítva: Nov 2, 2012
(#) girhes.main hozzászólása Nov 2, 2012 /
 
Találtam egy ilyet: (ds1621 hőmérőhöz)

  1. unsigned char* getTemperature(void)
  2. {
  3.   char temperature, counter, slope;
  4.   int temp;
  5.   float actualTemp;
  6.  
  7.   ds1621_sendCommand ( START_CONVERT );
  8.  
  9.   delay_ms(1000);
  10.  
  11.   temperature = ds1621_readValue ( READ_TEMP );
  12.   counter = ds1621_readValue ( READ_COUNTER );
  13.   slope = ds1621_readValue ( READ_SLOPE );  
  14.  
  15.   actualTemp = (float)temperature - 0.25 + ((float)(slope - counter) / (float)slope);
  16.   //  innen nem vágom a dolgot lefelé
  17.         temp=(int)(actualTemp * 10.0);   //to include decimal point for display
  18.        
  19.         if((actualTemp*10.0 - temp) >= 0.5) temp=temp+1;
  20.        
  21.         tempDisplay[4] = ((unsigned char)(temp%10)) | 0x30;
  22.         temp=temp/10;
  23.        
  24.         tempDisplay[2] = ((unsigned char)(temp%10)) | 0x30;
  25.         temp=temp/10;
  26.        
  27.         tempDisplay[1] = ((unsigned char)(temp%10)) | 0x30;
  28.         temp=temp/10;
  29.        
  30.         return tempDisplay;
  31. }


Az actualTemp változó után nem nagyon tudom értelmezni. Egyszerű a magyarázat: Nem tudom, milyen értéket van a actualTemp .Tudom, hogy float, de azon belül? (Hány tizedes jegy van).

Próbáltam kiíratni uart-al de nem sok sikerrel!

Köszönöm előre is a segítséget!
A hozzászólás módosítva: Nov 2, 2012
(#) Fizikus válasza Pacikoma hozzászólására (») Nov 2, 2012 /
 
A pde es az ino fajlokat az Arduino hasznalja. Azzal kell leforditani es csak utana tudod beegetni az ATMega 328-ba.
(#) TavIR-AVR válasza Pacikoma hozzászólására (») Nov 2, 2012 /
 
A kód Arduino-hoz van. A pde az a -0023-hoz, az ino meg a 1.x verzióhoz. Az 1.x esetén upload via programmer sorral a programozóval is feltölthető a chipbe a kód...
Ha érdekelne 60 napos ingyenes tanfolyam Arduinoról, akkor Katt ide!.
(#) Pacikoma válasza TavIR-AVR hozzászólására (») Nov 3, 2012 /
 
Rendben köszönöm a segítséget, de elvileg ha feldugom magára az Arduino programra a chip-et akkor csak egy szimpla feltöltéssel meg is csinálja a felírást? ( az eepromot is és a flesht-is? )
És a hiba üzenetet mitől dobhatja ki?
És az a program amit mellékeltem az előző kommentben az elegendő a feltanításhoz?
Válaszodat előre is köszönöm
(#) icserny válasza Pacikoma hozzászólására (») Nov 3, 2012 /
 
Idézet:
„ha feldugom magára az Arduino programra a chip-et akkor csak egy szimpla feltöltéssel meg is csinálja a felírást?”
Szerintem erre csak a bootloaderrel előzetesen beprogramozott Arduino kártyák vannak felkészülve. Más esetben szükség lesz egy programozó készülékre is.
(#) TavIR-AVR válasza Pacikoma hozzászólására (») Nov 4, 2012 /
 
Az Arduino 1.x alatt 2 feltöltés van:
- Upload to board (bootloaderes)
- Uload via programmer (ez kell neked, ekkor programozón át tölti fel)
(#) blackdog hozzászólása Nov 4, 2012 /
 
Sziasztok!

Mi a lényegi (főként programozás szempontjából) különbség egy P és egy PA AVR között?
Az én esetemben konkrétam atmega324p és atmega342pa.
Én az adatlapon nem láttam vagy nem vettem észre különséget, de a gcc regisztrerek neveinél nyavajog, hogy nem azonosak. Viszont 324pa-t 324p beállításaival programoztam avrstudio4-ben és nem tapasztalok semmit.
(#) TavIR-AVR válasza blackdog hozzászólására (») Nov 4, 2012 /
 
ATMega324P és ATMega324PA?

Elvileg azonos. A kisebb csíkszélesség van csak ott.
Fordítsd le a kódot a 324P-re és utána a PA-ra simán beégetheted. (HEX azonos, ChipID eltér!)

Viszont a ATMega324A és ATMega324PA eltér!
A P a PicoPower technológiát jelenti.

http://www.atmel.com/Images/doc8190.pdf
(#) zombee válasza blackdog hozzászólására (») Nov 4, 2012 /
 
Programozás szempontjából semmi(studio6 esetében már sokan panaszkodtak rá), a signature is azonos.
(#) blackdog hozzászólása Nov 5, 2012 /
 
Sziasztok!

Végül nem használtam kapcsolóüzemű tápot az AVR-hez hanem lemezes trafó+egynirányító+puffer+7812+7805.
A gondom az, hogy bekapcsoláskor néha az SPI-re kötött shift-regiszteren keresztül bekapcsol az összes relé. Más kimeneten még nem találkoztam bekapcsoláskori rendellenességgel. Mivel a hardweren már nem tudok módosítani így azt kérdezem, hogy szoftveresen van-e valami lehetőség?
Tettem a kódba 3000ms várakozást minden elé, de ennek ellenére néha mégis bekapcsolnak a relék.
(#) zolee1209 válasza blackdog hozzászólására (») Nov 5, 2012 /
 
Milyen típusú shift regisztert használsz? Illetve a kapcsolási rajzod is jól jönne...
A hozzászólás módosítva: Nov 5, 2012
(#) blackdog válasza zolee1209 hozzászólására (») Nov 5, 2012 /
 
74hc595 SMD. Nem készítettem külön kapcsolási rajzot hozzá. Annyira nem bonyolult. Erről van szó:
Bővebben: Link
A hozzászólás módosítva: Nov 5, 2012
(#) zolee1209 válasza blackdog hozzászólására (») Nov 5, 2012 /
 
A kapcsolási rajzra azért lenne szükség, mert akkor meg tudom mondani, hogy mit tehetsz... Bár anélkül is, igaz.

Amit belinkeltél adatlapot, annak tekerj a harmadik oldalára, ott találsz egy táblázatot, annak a második sorát kell figyelembe venned.

Két lehetőséged lehet arra, hogy a bekapcsolási szemét ne kerüljön ki a relékre.

1.: Lehúzó ellenállásokat teszel az /OE és /MR lábakra.
2.: A NYÁK feliratok alapján úgy látom, lesz benne majd LCD. Az AVR órajelét úgy állítsd be, hogy a leghamarabb elinduljon a proci, és az első funkciók között az legyen, hogy ezt a két lábat alacsonynak állítod programból, így talán nem lesz a reléknek idejük meghúzni. Ezután LCD inicializálás és a többi...
(#) blackdog válasza zolee1209 hozzászólására (») Nov 5, 2012 /
 
Most így indul a program main:
  1. int main(void) {
  2.  
  3.  
  4. _delay_ms(1000);_delay_ms(1000);_delay_ms(1000);_delay_ms(1000);
  5.  
  6. // Kimenetek beállítása
  7. DDRB  |= (1<<PB3);                     // LCD háttérvilágítás
  8. DDRC |= (1<<LEDZ) | (1<<LEDP)// duoLED
  9. DDRD |= (1<<PIEZO);             // Piezo
  10.  
  11. PIEZOKI; LEDZBE; LEDPKI;
  12.  
  13. lcd_init(LCD_DISP_ON);
  14. lcd_clrscr();
  15.  
  16. lcd_puts("Teszt !\n");
  17. LCDhatter(1);  
  18.  
  19. // SPI init
  20. DDRB  |= (1<<PB4)|(1<<PB5)|(1<<PB7);
  21. SPCR   = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  22. PORTB |= (1<<PB4);
  23. SPI_Write(0x00);


Akkor itt próbálok változtatni.
16 MHz-en kellene, hogy menjen amúgy a proci.
(#) zolee1209 válasza blackdog hozzászólására (») Nov 5, 2012 / 1
 
Valami ilyesmire gondoltam, mint a csatolmányban.

Azt a 4 másodperces késleltetést dobd ki onnan, ha szükséges valami miatt ekkora a késleltetés, az később legyen. C-ben nem tudom, hogyan vannak a dolgok, de sorrendileg:

- Bekapcsolás
- Proci elmegy RESET vektorra, SP inicializálása (innen ugrik ugye vissza a program legelejére)
- Megfelelő port(lábak) kimenetnek állítani, majd alacsony szintre kapcsolni
- Minden más...

órajel.JPG
    
(#) blackdog válasza zolee1209 hozzászólására (») Nov 5, 2012 /
 
Megpróbálom a Fuse bit-et átállítani mert úgy emlékszem más beállítás van nekem.
(#) zolee1209 válasza blackdog hozzászólására (») Nov 5, 2012 /
 
Még régebben készítettem egy programot, ami a relé kapcsolási idejét méri... Ebből látszik, hogy ez a típus ~5ms alatt kapcsol be, fogjuk rá, hogy ennyi körül van a tied is, bár elvileg az adatlapjában benne van. Arra kell törekedned, hogy ennél kevesebb idő alatt a relét már kikapcsolt állapotba tedd bekapcsolástól számítva.

Bővebben: Link
(#) zombee válasza blackdog hozzászólására (») Nov 5, 2012 / 1
 
Hello!

74hc595: sajnos reménytelen, ez minden bekapcsoláskor "villant" egyet. Fél éve nekem is volt
hasonló problémám(USB interfészt építettem) és akármit csináltam vele, le-meg felhúzó ellenállásokat
kötöttem a /MR meg /OE bemenetekre, bekapcsoláskor ígyis-úgyis felvillantotta az összes LED-et!

Azért nem teljesen reménytelen a dolog. Ha maradsz a 74hc595 mellett, akkor a relék közös pontját
szakítsd meg, iktass be egy bipoláris tranzisztort amit az AVR-ről vezérelsz.
Indításnál - ahogy a kolléga említette - az AVR várjon minimum 5ms-t amíg a shift regiszter "beáll".

Az én cuccomba egyébként a végén más típusú shift regiszter került(74hc164)...
A hozzászólás módosítva: Nov 5, 2012
(#) blackdog válasza zombee hozzászólására (») Nov 5, 2012 /
 
Mivel a hardweren már nem szeretnék módosítani így ez marad. Ez úgyis csak prototípus. A következőnél figyelembe veszem amiket írtatok. Köszönöm!
(#) 06smici hozzászólása Nov 5, 2012 /
 
Sziasztok. Nem tudjátok, itthon létezik valamilyen bascom tanfolyam? És ha igen mennyiért?
Következő: »»   492 / 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