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   334 / 840
(#) yoman917 válasza sikolymester hozzászólására (») Jún 25, 2011 /
 
Nagyon ötletes ez a demo mód, még sajnos nem is hallottam róla. Leellenőriztem a programomat és tényleg szinte minden értékem 0 lett :S Haverom ARDUINO -ban programozik, és simán tudja használni a float típusú változót. De nagyon ötletes a megoldásod (őszintén szólva nem is gondoltam volna rá), meg szerintem látjátok, hogy kezdő vagyok az AVR-ben, ezért minden segítség jól jön Megpróbálom ezt az elképzelést, ha megakadok akkor írok
Üdv,
yoman
(#) edison14 hozzászólása Jún 25, 2011 /
 
Helló. A labortápegységemhez készítem a panelmérőt és már teljesen készen van a program és a hardver is. Viszont egy kis gond van a dologgal mivel induktív jellegű terhelésnél az árammérés teljesen megzavarodik és ezzel a feszültség mérését is kiakasztja. A kódot mikroC-ben írtam mivel nem akartam vele sokat hülyéskedni. Remélem javítható ez a probléma. A segítségeteket köszönöm.
(#) Sir-Nyeteg hozzászólása Jún 25, 2011 /
 
Attiny10-hez nincs valakinek Eagle .lbr-je?
Használta már valaki eme kis mütyürt?
(#) TavIR-AVR válasza Sir-Nyeteg hozzászólására (») Jún 25, 2011 /
 
Sima sot223 tok...
Az uj atmel.lbr a ftp.cadsoft.de oldalon mintha fenn lenne....

Programozni mivel fogod? az avr-dragon mintha támogatná....
(#) Sir-Nyeteg válasza TavIR-AVR hozzászólására (») Jún 26, 2011 /
 
Gondolom sot23-6-ot akartál írni. Szeretem egyben látni a dolgokat. Nem pedig helyettesíteni.
AVRFreaks-en van pár megoldás a programozásra.
(#) sikolymester válasza TavIR-AVR hozzászólására (») Jún 26, 2011 /
 
Azt, hogy mivel lehet hivatalosan programozni az itt van: Bővebben: Link

Eagleben alkatrészt csinálni pedig pár perc
(#) Sir-Nyeteg válasza TavIR-AVR hozzászólására (») Jún 26, 2011 /
 
(#) sikolymester válasza Sir-Nyeteg hozzászólására (») Jún 26, 2011 /
 
Idézet:
„Az AVRISP mkII programozó klón az Atmel AVR mikrokontrollerekhez készített
programozó eszköz, amely saját fejlesztés eredménye.”


Höhö! Kis csúsztatást érzek itt. Ez minden kétséget kizáróan ennek a projektnek az eredménye: AVRISP-MKII Clone (2010)
(#) yoman917 hozzászólása Jún 26, 2011 /
 
Sziasztok
Elképzelhető, hogy az AVR elromlik? Programot tudok rá írni, de 7 szegmensre szeretnék kiíratni számokat, de teljesen véletlen számokat ír ki. Ha beállítom, hogy 1,2,3,4 számokat írja ki, akkor is csak hieroglifák sikerülnek.
(#) TavIR-AVR válasza Sir-Nyeteg hozzászólására (») Jún 26, 2011 /
 
Na igen. a szerzői jogi kérdések elég lazán vannak kezelve. Valamint a jelszintillesztése is egy nagy kalap .

Azért XMega chipre nem merném rákötni.... Illetve a szabványt nélkülöző ISP10 csatlakozó is érdekes....

Bár aki begyűjti, meg is érdemli....
(#) Sir-Nyeteg válasza TavIR-AVR hozzászólására (») Jún 26, 2011 /
 
Ezek szerint Zombee fórumtárs nem ért a szabványos dolgokhoz?
Ezt az ISP10-et nem értem. Lehet hogy a nem használt szálakon használná a TPI-t?
Akkor marad az "egy ic-s" programozó?
(#) Istvanpisti válasza yoman917 hozzászólására (») Jún 26, 2011 /
 
Szia !

Elég strapabíró szerkezetek az AVR-ek, nem valószínű, hogy programozható marad, de összevissza működik, de bármi lehet.
Először a kód helyességét kellene eldönteni és ha az jó, csak akkor gyanakodjunk AVR hibára.
Jó lenne, ha a 7 szegmenses kijelzők és az AVR kapcsolatának rajzát fel tudnád tenni, illetve mond meg azt, hogy az eredeti - a 7 szegmensesre író - programkódoddal próbálod, vagy a Sikolymester kódjával.

Üdv.: Istvánpisti
(#) yoman917 válasza Istvanpisti hozzászólására (») Jún 26, 2011 /
 
A 74LS47-es IC-vel csinálom, a bemeneti ABCD portra az Attiny24 PORTB0,1,2,3 lábát csatlakoztattam. Mellékelem a kódot:
  1. #include <avr/io.h>
  2. #include <avr/delay.h>
  3. #define VREF 5
  4. #define F_CPU 800000UL
  5. #define ELTOLAS 100
  6. #define FESZOSZTOFELUL 6800UL
  7. #define FESZOSZTOALUL 2400UL
  8.  
  9.  
  10.  
  11.  
  12. void ADInit()
  13.        {
  14.                
  15.                 ADCSRA|= (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0) ;
  16.                          
  17.                 }
  18.  
  19. unsigned long Beolvas10BitADC(unsigned char csatorna)
  20.                 {
  21.                 ADMUX = (ADMUX & 0b11110000) | csatorna;
  22.                 ADCSRA |= (1<<ADIF);
  23.                 ADCSRA |= (1<<ADSC);
  24.                         while (!(ADCSRA & (1<<ADIF)));
  25.                                                        
  26.                         return ADC;
  27.                 }
  28.  
  29.  
  30.  
  31.  
  32.         int main (void)
  33.         {
  34.                
  35.                
  36.                 DDRA=0xEC;
  37.                 DDRB=0xF;
  38.                 ADInit();              
  39.                                
  40.                                
  41.                                 uint32_t ValosFeszultseg;
  42.                                 uint8_t helyiertek2, helyiertek1, tortertek1, tortertek2;
  43.  
  44.                                
  45.                                
  46.  
  47.  
  48.                
  49.                         while(1)
  50.  
  51.  
  52.                         {
  53.                        
  54.                             ValosFeszultseg =  ((Beolvas10BitADC(4) * VREF * ELTOLAS / 1024 * (FESZOSZTOFELUL + FESZOSZTOALUL)) / FESZOSZTOALUL);
  55.                 helyiertek2 = ValosFeszultseg / 1000;
  56.                 helyiertek1 = ValosFeszultseg / 100 % 10;      
  57.                 tortertek1      = ValosFeszultseg / 10  % 10;
  58.                 tortertek2      = ValosFeszultseg / 1   % 10;
  59.  
  60.                                                 //1. digit beállítása volt
  61.                                 PORTA|=0x80;
  62.                                 PORTB = (helyiertek2);
  63.                                 _delay_us(1300);
  64.                                 PORTA^=0x80;
  65.                                
  66.  
  67.                                                 //2. digit beállítása volt
  68.                                 PORTA|=0x40;
  69.                                 PORTB = (helyiertek1);
  70.                                 _delay_us(1300);
  71.                                 PORTA^=0x40;
  72.                                
  73.                                                 //3. digit beállítása volt
  74.                                 PORTA|=0x20;
  75.                                 PORTB = (tortertek1);
  76.                                 _delay_us(1300);
  77.                                 PORTA^=0x20;
  78.                                  
  79.                                                 //4. digit beállítása volt
  80.                                 PORTA|=0x8;
  81.                                 PORTB =(tortertek2);
  82.                                 _delay_us(1300);
  83.                                 PORTA^=0x8;
  84.                                  
  85.  
  86.  
  87.                        
  88.                        
  89.  
  90.                
  91.  
  92.                
  93.                                
  94.  
  95.                                
  96.                
  97.                        
  98.  
  99.                        
  100.  
  101.  
  102.                        
  103.  
  104.  
  105.                         }
  106.         }

Előre is elnézést kérek az ollózgatásért, de így már legalább értem, hogy mit kéne csinálnia a programnak
Üdv,
yoman
(#) TavIR-AVR válasza Sir-Nyeteg hozzászólására (») Jún 26, 2011 /
 
A programozófelületek 6 pines csatlakozók (2x3). ISP esetén lehet 6 v. 10. ISP10: itt minden láb használt, kivéve a 3-as láb (LED)...

De majd csak kiderül
(#) Steven19 hozzászólása Jún 26, 2011 /
 
Ezt nézzétek meg. A képen egy termosztátot láthattok 3310-es Nokia telefon kijelzőjével,amit egy AVR vezérel, hőmérséklet beállításához forgatható potmétert használok, hőmérséklet mérésére pedig DS1821-et használok. Mit szóltok hozzá?
Tudásáról még annyit hogy a kazánom keringető szivattyúját indítja majd el a beállított hőmérséklet felett, alatta leállítja,méri a külső hőmérsékletet is amit kijelez,negatív hőmérsékletet még nem tud mérni de majd fog.Ezt magam csináltam neten található library alapján és ismerős kevés segítségével.

Kép0018.jpg
    
(#) Istvanpisti válasza yoman917 hozzászólására (») Jún 26, 2011 /
 
Szia !

Azt látom, hogy a PORTA0, PORTA1, PORTA4 bemenet (PA4 a feszültségmérő), a többi kimenet. Ez Ok, a PORTB0..3 kimenet ez is OK.

Jó sorrendben van rákötve a 74LS47 A..D bemenetére a PB0..3 AVR kimenet ? Az AVR-en a PB2-és PB3 nem sorrendben következnek.
A jó bekötés szerintem
AVR 74LS47
PB0 2 -> 7
PB1 3 -> 1
PB2 5 -> 2
PB3 4 -> 6 láb

A hétszegmenses kijelzőre jól vannak bekötve a 74LS47 a..g kimenetei ?

Mit ír ki az 1,2,3,4-re, mely szegmensek világítanak ?

Üdv.: Istvánpisti
(#) yoman917 hozzászólása Jún 26, 2011 /
 
Igen minden jól van bekötve, már legalább 5-ször ellenőriztem. Ilyeneket ír ki: 1 -esre: 9 , 2-esre: 'kis c betű'(10-nek megfelelő karakter), 3-asra: ' (fordított kis c betű(11-nek megfelelő karakter))', 4-esre: '(nagy H betű felső nyaka'(12-nek megfelelő karakter)).
(#) Istvanpisti válasza yoman917 hozzászólására (») Jún 26, 2011 /
 
Szia !

Úgy tűnik nekem, hogy a 74LS47 D bemenete vagy lóg a levegőben és emiatt H szinten van, vagy tényleg baja lehet az AVR PB3-nak. Próbálj meg nullát kiküldeni mind a négy helyiértékre és ha tudsz, mérj feszültséget az AVR PB0..3 lábain és a 74LS47 A..D bemenetein.

Üdv.: Istvánpisti
(#) zombee válasza TavIR-AVR hozzászólására (») Jún 26, 2011 /
 
Sziasztok!

Ha már úgyis az én termékemről van szó(AVRISP mkII), nekem is illene pár szót mondanom. Mindenesetre szíven ütött hogy a kedves TavIR kolléga így leszólja ezt az eszközt, miközben egy ennél kevesebbet tudó, feszültségillesztést teljesen nélkülöző, bedobozolatlan eszközt árul majdnem azonos áron.

Jópár darabot eladtam, eddig nem volt gond vele, minden visszajelzés pozitív. Csúsztatás pedig nincs benne.
A(z összes) szabványt valóban nem követi, de nem azért mert "nem értenék hozzá".
Egyetlen, praktikus oka van: a kicsi dobozba nem férne bele 3 csatlakozó. Vagy 4, mert akkor ISP-6 és ISP-10 kivezetést is akarnék neki csinálni...
Másik ok, hogy a felhasználónak folyton át kéne dugdosni ha más típusú kontrollert akar programozni.
A programozó kimenetei az ISP-10 szabványt követik egy kis "csúsztatással", hogy a kolléga szavaival éljek.
A nem használt és a vele szemközti kimenet kapta meg a CLK és a DATA kimenetet, ahogy a képen látható.
Nem éppen profi megoldás, de a programozó nem is profiknak készült hanem hobbistáknak! Aki profi, a gyárit fogja megvenni.
Ettől függetlenül, ATXMega kontrollereket is tudja programozni, és eddig egyet sem csesztem el vele.

A jelszintillesztés 3.3V/300mA-os stabilizátorral működik. Ez a programozó második legdrágább eleme, nem értem hogy mi a probléma vele. Megint ott tartunk hogy lehetne 1.8, 2.7V, stb. de őszintén szólva erre nincs szükség.
Ez a stabilizátor (ha be van kapcsolva) táplálja a programozó logikát is, és nem a kimeneti ellenállásokon esik a feszültségkülönbözet!
A kimeneten - jelenleg - a klasszikus ellenállásos leválasztás (nem jelszintillesztés!) van, ami tökéletesen megfelel a legtöbb áramkörbe.
Persze ha perverzkedni akarok akkor hamar építek olyan áramkört aminél megterhelem a MOSI/SCK lábat valami erős LED-el és akkor valóban nem működik...

Ez utóbbi miatt a későbbi változatba buffer IC is fog kerülni, illetve a programozó segédórajelet is fog adni az esetlegesen "félreállított" AVR-ek érdekében.
Egyébként jelenleg ez a programozó is "egycsipes", ha a stabilizátort nem nézzük.

A célom nem a gyári AVRISP mkII leutánzása(szép is lenne!), hanem egy vele kompatíbilis, kompakt, hobbicélokra kiválóan alkalmazható, és nem utolsósorban olcsó programozó elkészítése volt amire a mindennapi munkám során is tudok számítani.

Hogy nem csak egy "fekete dobozt" árulok, a második képen az általam készített kapcsolási rajz látható. Pár apróság már máshová került és a kvarckristályt 8MHz-esre cseréltem, de szerintem a lényeg kiolvasható.
Ha végzek a fejlesztéssel(buffer IC illesztés és segédórajel még kell bele), a teljes projektet meg fogom jelentetni. Ha felteszik, itt a Hobbielektronikán is olvasható lesz!

Remélhetőleg minden kérdésre válaszoltam, és hozzászólásommal lezárhatom ezt az értelmetlen vitát.
Privát üzenetben mindenkinek szívesen válaszolok, de az eszköz további fejlesztésével kapcsolatos tanácsokat is meghallgatom.
(#) kovacsj válasza zombee hozzászólására (») Jún 26, 2011 /
 
Én is tőled vettem, és nagyon meg vagyok vele elégedve.
(#) Reggie válasza sikolymester hozzászólására (») Jún 27, 2011 /
 
Ha ugyan azt a(z egyszeru) funkciot szeretned megvalositani nagyjabol 30 alkatresszel (amelyeknek 60%-a passziv alkatresz es mindossze egy uC), akkor a megszuleto eredmenyek eleve hasonlitani fognak egymashoz, mert sok variacio nincs. Raadasul jonehany kulonbseget tudnek felsorolni. (Sot megkockaztatom, hogy tobbet mint hasonlosagot. )
Azert alaptalanul megvadolni valakit szellemi tulajdon lopasaval nem egy illendo dolog, remelem tisztaban vagy vele.
(#) TavIR-AVR válasza zombee hozzászólására (») Jún 27, 2011 /
 
Néhány észrevétel:
1, az 5V rendszerek programozása 3.3V-os programozóval (jelszintek és illesztései) elég messze van a korrekttől.
2, Az, hogy nem ismeri a XMegák esetén bevett alacsonyabb feszültséget - nem baj. A belső védődiódára épít, hogy lehessen programozni. Nálam is így van megoldva STK500 esetén - csak ugye azt leszóljuk, a sajátunk meg maga a tökély (nem necces egy kicsit?) Nem programozható így pl. arduino áramkör (mert az ellenálláson és a Arduinon eső feszültség már a tiltott tartományba kerül)
3, A szabványtól való eltérés hasonló ahhoz, hogy valami barkács vagy sem. Jó lesz ez így is, mint pl. zöldsárga vezetéken a fázis. Végülis működik....
4, A szoftver esetén van valami jogi kitétel is:
valami commercial / noncommercial sor
(#) zombee válasza TavIR-AVR hozzászólására (») Jún 27, 2011 /
 
1,2: A programozó kézzel átkapcsolható 3.3V és 5V között. Az így beállított feszültség a programozó logikát és a kimenetet is érinti. Lásd: 2-es kapcsoló.
Ha egyszer buffer IC is kerül bele, akkor a diódák sem fognak hiányozni.
3: Ez az egyetlen amiben igazat tudok adni Neked, de legalább az ISP-10 szabványos kiosztásához illeszkedik.
Mint egyszerű eszköz, a TPI/PDI kiosztása valóban nem szabványos, de legalább működik.
Ezen még tudok módosítani a következő változatoknál, de akkor valóban nem fog beleférni a pici dobozba. Még megvárom a visszajelzéseket ezzel kapcsolatban.
4: Az eszköz hobbicélokat szolgál nem kereskedelmi. A terméklap összeállításánál ezt is figyelembe veszem.
(#) yoman917 válasza Istvanpisti hozzászólására (») Jún 27, 2011 /
 
Hello
Sikerül leméregetnem az AVR B portjain kimenő feszültséget. Ha 0-t küldök ki rajta, akkor csak a PB3-on van feszültség: 4,3 V; illetve a D portra is ez a feszültség megy. Ez szerintem nagyon nem klappol
Üdv,
yoman
(#) Massawa hozzászólása Jún 27, 2011 /
 
Sziasztok

egy macrot irogatok ASM-ben PWM-re (sajnos még nem megy )


Olyan kellene, ahol egy változo van a frekvenciára (10-1000 Hz közötti tartományban) és egy másik meg a kitöltési tényezöre (8-16 lépésben 0-100% között).

Kösz a segitséget.
(#) Istvanpisti válasza yoman917 hozzászólására (») Jún 27, 2011 /
 
Szia !

Nem túl biztató. Még egyet próbálj mérni úgy, hogy a 74LS47 D bemenete nincs a PB3-on. Ha ekkor is magas szint lesz itt 0 kiírása után, akkor az AVR cseréjét kellene megpróbálni.

Üdv.: Istvánpisti
(#) yoman917 válasza Istvanpisti hozzászólására (») Jún 27, 2011 /
 
Egyébként a programban jól gondoltam a kiíratást?
  1. //1. digit beállítása volt
  2.                                 PORTA|=0x80;
  3.                                 PORTB = 0;
  4.                                 _delay_us(1300);
  5.                                 PORTA^=0x80;
  6.                                
  7.  
  8.                                                 //2. digit beállítása volt
  9.                                 PORTA|=0x40;
  10.                                 PORTB = 0;
  11.                                 _delay_us(1300);
  12.                                 PORTA^=0x40;
  13.                                
  14.                                                 //3. digit beállítása volt
  15.                                 PORTA|=0x20;
  16.                                 PORTB = 0;
  17.                                 _delay_us(1300);
  18.                                 PORTA^=0x20;
  19.                                  
  20.                                                 //4. digit beállítása volt
  21.                                 PORTA|=0x8;
  22.                                 PORTB =0;
  23.                                 _delay_us(1300);
  24.                                 PORTA^=0x8;
(#) Istvanpisti válasza yoman917 hozzászólására (») Jún 27, 2011 /
 
Szia !

Csak leírom harmadszor is, jó lenne látni a kapcsolási rajzot.
A 74LS47 opencollector-os kimeneteire kell csatlakozniuk a ledek katódjainak, (közös anódos kijelző). Az anódokat közvetlenül a PORTA 3,5,6,7-ről vezérled, vagy tranzisztoron keresztül ? Ha nincs rajz (bár kézzel skiccelve, telefonnal lefényképezve és becsatolva sem tart sokáig megcsinálni), akkor legalább részletesen írd le. A kapcsolási rajz erősen befolyásolhatja a kód jóságát.

Üdv.: Istvánpisti
(#) yoman917 válasza Istvanpisti hozzászólására (») Jún 27, 2011 /
 
Mellékelem a nyáktervet, elég sok minden kiderül belőle. Úgy csináltam meg, ahogy írtad, a PORTA 7,6,5,3 mennek az anódok.
Üdv,
yoman

Layout3.lay
    
(#) Istvanpisti válasza yoman917 hozzászólására (») Jún 27, 2011 /
 
Szia !

Ez így logikailag helyes, a kiírató kód szerintem jó.
Még az merül fel, hogy mekkora áramot vesznek fel a LED-ek (mekkora előtét ellenállás van a 74LS47 a..g kimenete és a LED katódja között), mivel egy helyiérték LED-jeinek árama átfolyik a PORTA 3,5,6,7 lábon. Az abszolut maximum áram az AVR gépkönyve szerint I/O lábanként 40 mA, 7 LED világíthat egyszerre (8 megjelenítése esetén). Igaz hogy idő-multiplexben megy és az idő 25%-ban vezet csak.

Üdv.: Istvánpisti
Következő: »»   334 / 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