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   294 / 840
(#) Reggie válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Igen. Idealis esetben, ha a faziszaj periodusideje es a port iras periodusideje egymasnak egesz szamu tobbszorose. Viszont mint tudjuk a VCO fki/ube karakterisztikaja homerseklet es tapfeszultseg fuggo, igy erre kicsi az esely.
(#) Kafka válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Szia! Azt hiszem értem, tehát azonos kvarcnál az avr 4x gyorsabb a pic-nél. Vagyis a kérdező meg tudja oldani a feladatát úgy, hogy felhasználja a meglévő ATtiny2313-at ugyanezzel a kvarccal és minden portkiírás után berak 6 NOP utasítást kivéve az utolsónál. Ott 4-et a másik 2 maga lesz a GOTO utasítás. Jól gondolom?
(#) vilmosd válasza Kafka hozzászólására (») Dec 31, 2010 /
 
Gondolo, nem tudom. A kollega nagyon titkolodzik.
Amugy en forditva vagyok mint Te. Nem ismerem nagyon az AVR-eket. Ott nem tudom hany orajel az utasitasok hossza. Regen a Z80, a 8085 tipusoknal volt akar 3 ciklus hosszu is. Ez nagyon bekavarhat az ilyen szamolgatos idoziteseknel.
(#) ZsoltyFM hozzászólása Dec 31, 2010 /
 
Sziasztok!
Látom hogy többen hozzászóltok a problémámhoz
És azt is látom hogy Reggie helyettem sok mindent meg válaszolt.
Mivel én pic-et használtam és ez órajelzabáló, így nem tudom a kellő időzítést beállítani.
ezért a döntésem az volt hogy ezt a kis project-et egy avr-be viszem át. Közben találtam egy magyar doksit ami az atmega 128-at tárgyalja. És a programozását avr stúdió-val . Csak az assembly parancsok fordítása hiányzik belőle. De Reggie-nek köszönhetően már az is megvan
(#) trudnai válasza Kafka hozzászólására (») Dec 31, 2010 /
 
AVR-nek teljesen mas az architekturaja, igy nem minden esetben 4x gyorsabb! Ilyen nagyon egyszeru eseteknel igy van, van ahol sajnos nagyon hasonlo sebesseget lehet csak AVR-el elerni. Cserebe viszont az aramfelvetele nagyobb, korulbelul akkora amekkora a PIC-nek lenne 4x magasabb orajel mellett. Sajnos AVR-nek vannak hatranyai, igy a beszerzes, a tipus valasztek es a dokumentacio azok amik a PIC moge helyezik. Architekturalisan mivel ujabb nyilvan megvannak a regi PIC-ekkel szemben az elonyei.

Amugy mikor 'PIC'-rol beszelunk legtobbszor a mar eleg regi architekturat ertjuk, ami meg a mai napig eleg sokmindenre jo (mint ahogy egy Intel 8051 is). Viszont manapsag egy 16 bites 24H sorozatbol valo peldany hasonlo arban van mint a 8 bitesek, es ott mar eleve 2-es osztas van csak, van benne DMA amivel memoria irast lehet megvalositani a CPU igenybe vetele nelkul, es 16 bites muveleteket vegezhetunk.

Amugy a mostani esetnel en nem tudom mit kell megvalositani, de ha ilyen finom hangolt oszcillatorokrol beszelunk akkor nyilvan nem a hany utasitas / hany orajel az ami gond lesz. Valamifele szinkronizaciora igy is ugy is szukseg lesz kulonben nagyon bizonytalanul fog mukodni, es a szinkronizacio soran bele kell ferjen az ugras is.
(#) ZsoltyFM válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Ugrással együtt az AVR-nél 3 órajel telik el míg a következő érték a porta íródik. Ugyanennél a feladatnál a pic esetében 16 órajel szükségeltetik. azt hiszem igen látványos a különbség.
(#) vilmosd válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Neked lehet, nekem nem. Az hogy Te nem hasznalsz 4x es kristalyt, vagy PLL-t atol meg a PIC is ugyanannyi ido alatt hajtana vegre mint az AVR. Kulonben is megbeszeltuk mar, hogy az AVR is 2 clockot hasznal az ugras utasitasara, tehat egyforman 4 ciklus lesz. A vegrehajtas idejet es a ciklusszamot ne keverjuk! Az AVR clock egyenlo a PIC ciklussal, es a vegrehajtasi ido teljesen fuggetlen ettol. A vegrehajtasi ido csak a kvarc frekvenciajatol fugg.
(#) ZsoltyFM válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Már annyiszor előjött ez a PLL dolog.
de Én jelen esetben a pll-ről hallani sem akarok!
Többet árthat mint használ. Ha van rá módom hogy elkerüljem a használatát akkor megteszem. A pic ben 4 órajel csak úgy eltűnik a semmiben. egy utasítás 4 órajelet emészt fel minimum. A goto pl 2 utasításciklus azaz 8 órajel. a pic ben hogy kiírjak egy értéket portra 2 utasítás szükséges. tehát a 2 utasítás ami két ciklusnak felel meg, megint csak 8 órajel. Azt hiszem jól számolok.
Vagy nem ???
AVR-nél ha minden igaz egy porta közvetlen kiírhatok egy utasításciklus azaz egy órajelnyi idő alatt. az ugrás 2 ciklus azaz 2 órajel.
(#) zolee1209 hozzászólása Dec 31, 2010 /
 
Ha így halad tovább, inkább a PIC vs AVR topikban kellene megvitatni... Kezdünk totyikosodni...
(#) vilmosd válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Idézet:
„AVR-nél ha minden igaz egy porta közvetlen kiírhatok egy utasításciklus azaz egy órajelnyi idő alatt. az ugrás 2 ciklus azaz 2 órajel.”
A "movff" utasitas is hasonlo. Csak ez a 18-asoknal divat.
(#) ZsoltyFM válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
A 16f-eseknél ilyen parancs nincs.
Kezdem azt hinni hogy te résztulajdonos vagy a mikrochip-nél
Kihangsúlyozom ismételten hogy nekem 16f-es kontrollereim vannak,meg egy Atiny2313-mas avr-em van.
(#) Reggie válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Ez teljesen igaz.* (Felteve, hogy csak 1 regisztert hasznalsz az avrben)
(#) vilmosd válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Idézet:
„Kezdem azt hinni hogy te résztulajdonos vagy a mikrochip-nél”
Sajnos nem. De kulonben nem olyan deraga a PIC. Olcsobb mint az AVR, es nagyobb a valasztek. Persze ha csak jatszasibol csinalod, akkor mindegy.
(#) trudnai válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Igen, ha olyan regiszter cimen van, ahonnan kiirhatod a portra. Ha nem, akkor RAM-bol pl be kell eloszor toltened, ami 2 ciklus. Ha meg pl van egy valtozod a ram-ban, akkor betoltes, muvelet, vissza toltes. Pl ket valtozo osszeadasa: 2 ciklus beltolteni az elsot, 2 ciklus betolteni a masodikat, majd osszeadas 1 ciklus, majd 2 ciklus az eredmenyt vissza irni. ez 7 ciklus, amit a PIC 2 ciklus alatt hajt vegre, igy 7 orajel van csak a PIC 8-aval szemben... Tenyleg attol fugg mit csinalsz, van ahol gyorsabb, van ahol nem. Es akkor veszel egy 24H-sat ugyanannyiert mint egy 16F-eset es a 8 orajel lecsokken 4-re...
(#) Reggie válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Kicsit elszamoltad. A picnel csak 2 utasitast szamoltal, tehat vagy a w-ben nincs benne az egyik valtozo, vagy nem irtad vissza a memoriaba az erteket. Es mar masok is az aranyok. Valojaban 7 kontra 12 az arany.
(#) kiborg válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Sok minden van itt a fórumban is

Egy kis magyar cucc

Mellesleg az atmel oldaláról szedd le az Instruction Set- et, abban benne van, hogy melyik utasításnak pontosan mennyi órajel a végrehajtási ideje és még sok okosság is.
(#) ZsoltyFM válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Nem tudom biztosan. Lehetséges hogy van olyan művelet amiben éppen számottevően nem gyorsabb az avr. De egy összetettebb program gyakran többféle műveletből épül fel.
Ha általánosságba vesszük akkor mindenképpen az avr látványosan gyorsabb.
(#) Reggie válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Elarulom egy arban vannak. Hasonlitsd ossze oket: www.chipcad.hu www.mscbp.hu

Mindkettonel 2600+fa a legdragabb es legtobbet tudo. Egyedul a PIC eseten a legkisebb tudasu daraboknal van max 100Ft elteres, de hat az Atmel nem gyart ennyire kis tudasuakat.
(#) vilmosd válasza Reggie hozzászólására (») Dec 31, 2010 /
 
Mennyi egy Mega8, es hol kaphato (hol nem)? Mennyi egy 16F887? Mondjuk en nem tudom milyen arak vannak otthon, en a Mousertol rendelek alkatreszeket.
(#) Reggie válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Nem viccbol irtam ket webcimet De mind a ketto 520+fa. Mousertol en is szoktam mondjuk nem uC-t, mert abbol ha 1-2 darab kell akkor a magyar cegek boven jo, ha meg gyartasba kell akkor az EMS intezi a beszerzest.
(#) ZsoltyFM válasza kiborg hozzászólására (») Dec 31, 2010 /
 
köszi!
(#) trudnai válasza Reggie hozzászólására (») Dec 31, 2010 / 1
 
Nem szamoltam el magam PIC se nem regiszter, sem pedig akkumulator architekturaju, hanem valahol a ketto kozt. Az eredmenyt kepes a regiszterbe vissza irni.
(#) Reggie válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Ja mar eszrevettem, hogy te b=a+b muveletre gondoltal, en pedig c=a+b -re. Mondjuk hal istennek eleg ritka hogy az elobbire van szukseg, igy altalaban a valtozot a regiszterben lehet hagyni. De valoban ez a legszelsosegesebb eset.
(#) trudnai válasza Reggie hozzászólására (») Dec 31, 2010 /
 
Igen, valoban a c=a+b tobb ido, mint az a+=b, de meg ugy sem 4x a sebesseg kulonbseg (meg 2x sincs). Na mindegy, tenyleg nagyon elkanyarodtunk az eredeti tematol
(#) Reggie válasza trudnai hozzászólására (») Jan 1, 2011 /
 
Igen, ez igaz. Mondjuk lenne ertelme csinalni tipikus kodreszletekre teljesitmeny teszteket(akar szimulacioval), hogy tudja az ember minek mi az elonye, csak forum keretei kozott nehez megoldani flamewar nelkul.
(#) Robi98 hozzászólása Jan 2, 2011 /
 
Sziasztok!
2 kérdés:
Mint tudjuk a CKDIV8 fuse az órajelet osztja 8-cal,az ISP frekvenciának pedig az órajel 1/4-ed részénél kisebbnek kell lenni.Például(ha a CKDIV8 be van kapcsolva) 4Mhz 1/8-ad része 500Khz,ennek a 1/4-e 125khz.Ettől kell kissebbnek lenni az órajelnek?

Mit állít be a SPIEN fuse ?

Előre is köszi minden választ és jótanácsot!
(#) Reggie válasza Robi98 hozzászólására (») Jan 2, 2011 /
 
1. Igen
2. Az SPIEN a soros programletoltest engedelyezi. (Ha ISP-t hasznalsz, akkor ezt neked feltetlen engedelyezni kell)
(#) puli122 hozzászólása Jan 2, 2011 /
 
Sziasztok.
Avr-el vezérelnék egy TTL jeleket váró eszközt, de le kell választanom optocsatolóval. Jó az elgondolásom ? ( mellékelt )
A másik pedig hogy Pwm vezérelnék is opton keresztül, mekkora frekvenciáig oldható ez meg ? Korlátoz valamennyire az opto ? Én KHz-es tartományban gondolkozom.

Köszi

opto.JPG
    
(#) zolee1209 válasza puli122 hozzászólására (») Jan 2, 2011 /
 
Szia!
Picit átollóztam, én így csinálnám...
(#) puli122 válasza zolee1209 hozzászólására (») Jan 2, 2011 /
 
Az opto bal oldala, vagyis a led meghajtása szerintem teljesen mindegy. Lehet hogy tévedek, de akkor elmondod miért jobb így ?
Amúgy meg logikai magas szinttel kellene kapcsolnom a ledet, azt így pedig nemtudom.
A tranyós részt megintcsak nem értem, mert így alap ( vagyis nem vezérelt ) esetben logikai magas szintet kap a ttl eszköz, nekem pedig alacsonyat kellene, ezert gondoltam az általam rajzolt megoldásra. De érdekelne hogy szerinted miért jobb így.

Köszi

szerk: Ja most hogy mégegyszer átgondoltam a rajzod, értem hogy itt hogy megy a vezérlés,és ez így jó is nekem, már csak azt nem értem hogy ez miért jobb.
Következő: »»   294 / 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