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   293 / 840
(#) Reggie válasza ZsoltyFM hozzászólására (») Dec 30, 2010 /
 
Toltsd teli a PIC programtarjat(azaz fejtsd ki a ciklust), es majd a PC tulcsordulasa miatt ismet 0x0000-rol fog folytatodni a program. Igy meg lehet sporolni az ugrast. De termeszetesen nem akarlak eltantoritani az AVR-ektol, sot csak javasolni tudom!
(#) ZsoltyFM válasza Reggie hozzászólására (») Dec 30, 2010 /
 
Hasonló csavaros gondolataim nekem is voltak.
De ezzel az a gáz hogy akkor hova rakjam a konfigurációs programrészt. Amire meg szükség van
(#) Reggie válasza ZsoltyFM hozzászólására (») Dec 30, 2010 /
 
Valoban erre nem is gondoltam. Mondjuk beszurhatod egy olyan sor moge, ahol a w erteke pont megfelelo. Igy lesz ott es kis kesleltetes, de nem annyi mint gotonal. Viszont ettol mar nem 2 hatvanya lesz a felhasznalhato hely, igy azert, hogy ne legyen majdnem egy ciklusnyi szabad hely, ezert NOP-okat kell elszorni a kodban megfelelo helyekre. Ha meg belefer ennyi kesleltetes akkor megfontolando.
(#) ZsoltyFM válasza Reggie hozzászólására (») Dec 30, 2010 /
 
Nem lehet késés. Sőtt olyannyira nem hogy még a kavics frekvenciáját is stabilan kell tartani. Finomrahangolni a frekvenciáját trimmerrel. Azon is gondolkodtam hogy termosztátba rakom. de ahhoz már kell a méret.
(#) Reggie válasza ZsoltyFM hozzászólására (») Dec 30, 2010 /
 
Mondjuk egy sztereo encoderhez csak eleg a kvarc ~50ppm pontossaga. Viszont a kondival valo hangolassal az a gond, hogy a kondi homerseklet fuggese nagyobb mint a kvarce, tehat csak egy adott homersekleten lesz pontosabb.
De a temahoz visszaterve: marad az AVR.

Az ATtiny2313 adatlapjan az 50. oldalon talalsz peldat a port kezelesehez assemblyban. Label ugyan ugy van mint barhol mashol, ugrashoz pedig az rjmp utasitas kell neked.
(#) Reggie válasza Robi98 hozzászólására (») Dec 30, 2010 /
 
CKDIV8 a fuse neve(ez leosztja az orajelet 8-cal), de elvileg meg eppen alatta vagy(ugyanis igy a max megengedheto 125KHz-re jon ki).
(#) ZsoltyFM válasza Reggie hozzászólására (») Dec 30, 2010 /
 

Látom belátod hogy hajthatatlan vagyok
Igen kétségkívül a kondenzátornak nagyobb a hőmérsékletfüggése.
De :
Már eleve a kristály beindításánál is szükségesek a kondenzátorok. Az is igaz hogy ezek nem sorban vannak a kvarc-al. tehát nem az a szerepe hogy feljebb húzza a frekvenciát. Nem kívánom nagyon szélsőséges hőmérsékleti viszonyok közt alkalmazni az áramkört.
Meg a kapacitás eleve sem képes nagyon elhúzni a rezonanciát, és a hőmérséklet változás sem kelt olyan komoly kapacitásváltozást ami számottevő lenne.
Tehát ez még mindig elfogadható szinten marad.
Sok más szempontot is figyelembe véve jutottam el én is erre a döntésre hogy AVR
Ebben kérnék segítséget.
Assembly parancsok kellenének és némi instrukció az alapkonfigurációhoz. Aztán go !
Ez nem egy bonyolult program. mondhatni semmiség.
De az AVR-eket alap szinten sem ismerem. Sajnos nemigazán találok róluk magyar dokumentációt.
(#) Reggie válasza ZsoltyFM hozzászólására (») Dec 30, 2010 /
 
Nem a hajthatatlansagod szamit(mert az fuggetlen tolem es viszont), csak engem valahogy jobban izgatnak az ilyen nehezebben megoldhato kerdesek, minthogy a lustak szamara google interfesz legyek Ugyhogy korbejartam a kerdest mert miert ne alapon es belattam, hogy a szamodra adott PIC-kel valoban nem megoldhato.
(#) ZsoltyFM válasza Reggie hozzászólására (») Dec 30, 2010 /
 
A google-t már rendesen körbejártam magyar dokumentációk felderítése terén. Szerencsére sok magyar szakdolgozat fent van a neten ami már eddigi problémáim során nagy segítség volt.
De valahogy az AVR-ek lelkivilága még eddig nem éritntett meg egy szakdolgozatírót sem sajnos.
Legalábbis én még eddig nem találtam ezekről sokmindent. Csak felületes ismertetést.
(#) Reggie válasza ZsoltyFM hozzászólására (») Dec 30, 2010 /
 
Hat en csak angolul olvasok doksikat es nem is kutakodtam magyar doksik utan, igy ha neked mindenkep magyar doksi kell, akkor abban nem tudok segiteni sajnos. Viszont az Atmeles doksik olyan egyszeru nyelvezetuek, hogy google translatorral barki megerti(szerintem). (A googles dolgot pedig nem rad ertettem).
(#) ZsoltyFM válasza Reggie hozzászólására (») Dec 30, 2010 /
 
Értelek ! csak próbálod felmérni a problémát, hogy lusta emberrel állsz e szembe vagy tényleges problémával
Bár abból hogy meglehetősen hanyagolod az ékezetes betűket leszűrhető hogy nem csak a magyarnak élsz
Nekem is megfordult a fejemben rengetegszer hogy de jó volna nem csak felületesen tudni angolul. Mert néhány szó ismerete még igen kevés ahhoz hogy kiértelmezzek egy dokumentációt. A google fordító meg eléggé szétcincálja a pdf-et ha megpróbálom lefordítani.
(#) Reggie válasza ZsoltyFM hozzászólására (») Dec 30, 2010 /
 
Na az ekezetes betuk hanyagolasa az inkabb megszokas. Amikor kezdtem meg fasorban sem voltak.

Viszont konkret kerdesekre tudok konkret valaszt adni neked (mert igy altalanossagban oldalakat tudnek irni, viszont ugy meg a sajat dolgomra nem eleg jut ido)
(#) vilmosd válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Hali
Erdekes modszer a tied. Mar megbocsass, de ez a gombhoz a kabat modszere. Most utananeztem a neten, es ilyen keszuleket lehet talalni es pont 18F 1220 IC-ve. A hapsi (talan cseh) 6 MHz kristallyal, HS PLL oszcival csinalt ilyet. Sztereo bemenet, 19 kHz, es MPX kimenet. De vegulis, ha van idod kiserletezzel. En inkabb vennek egy nagyobb PIC-et, es a minta alapjan kijatszanam a keszuleket.
(#) ZsoltyFM válasza Reggie hozzászólására (») Dec 31, 2010 /
 
Esetleg msn-ed van ? Ha igen akkor elküldhetnéd a cimed az email-emre . zsoltyfm@freemail.hu
(#) trudnai válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
De figyi, ha nem tudod hogyan mukodik az AVR, akkor honnan jon a dontes, hogy az lesz lgmegfelelobb a szamodra?
(#) Reggie válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Hat lentebb irta, hogy neki csak az a baja, hogy 8 orajel ciklus ez a manover PIC-kel, es ket frissites kozott pont orajel/8 idonek kell eltelnie, igy ezert a PIC ugro utasitasa mar nem fer bele, viszont az AVR jonehany muveletet 1 orajel ciklus alatt tud vegrehajtani, igy ebben az esetben jut ido az ugrasra.
(#) vilmosd válasza Reggie hozzászólására (») Dec 31, 2010 /
 
A picnel csak az ugro utasitas ket ciklus. Az ossze tobbi 1.
(#) Reggie válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Igen, de PIC-nel az (kvarc)orajel frekvencia negyede a mag orajele, es en a kvarchoz viszonyitottam(meg o is).
(#) ZsoltyFM válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Ismerem azt a kódert. néztem én is neten. Bevallom tartok az ilyen pll-es dologtól kicsit,a fáziszaj miatt.
mert az csak tovább erősödhet és nem odavaló dolgokat kelt. Én ezt az egészet mondhatni etalon-ként szeretném megépíteni. a vezérlésnél fontosak a határozott és pontos fel és lefutási élek. Tudom hogy túlzásnak tűnik de kíváncsi lennék az eredményre.
Már régóta tervezem hogy hogy építsem meg és sok gyakorlati példát is megnéztem. Ezekből szedtem az ötletet. És olyan dolgokra próbáltam figyelni amikre az ezeket tervezők nem fektettek hangsújt. Sokminden múlik a percíz zavarmentes tápegységen és az áramköri lap vezetékelésén. Mit sem érnek a professzionális hangtechnikában alkalmazott félvezetők ha már itt elbukik a dolog. Meg a kábelezés. Egy rövidebb audió kábelszakaszon is fontos a jó illesztés. meghajtási és fogadási oldalon is.
a kábelben fellépő zavarok kioltása , induktív kapacitív hatások. Már így is túl sokat írtam Lényeg hogy átfogóan belekóstoltam sok területbe és ezeket az ismereteket összevetve próbálom kitalálni hogy legyen
(#) ZsoltyFM válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Mert tudom hogy jobban kihasználja az órajeleket.
(#) trudnai válasza Reggie hozzászólására (») Dec 31, 2010 /
 
Csakhogy nem vettetek figyelembe, hogy 18F-ben van PLL, sot egy 24H vagy dsPic meg mar 16 bitesen szamol Fosc/2-vel. Na mindegy, nem ez a lenyeg, nyilvan AVR is tokeletes a feladatra, de en is ugy tudom arra joval kevesebb a dokumentacio, sot Magyar nyelvubol igen keves van.
(#) ZsoltyFM válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Na most.
Mellékesen nem is akarok ágyúval lőni verébre.
Feleslegesnek látom egy komolyabb processzor alkalmazását egy igen egyszerű feladatkörben.
Adott a kvarc adottak az eszközök. És az információk tekintetében a célnak tökéletesen megfelel az avr.
Nekem egy atiny 2313-mam van. amivel gyakorlatilag kivitelezhető. Csupán csak amódot kell megtalálnom.
A feledet még ennek a processzornak a tömérdek képességét sem használja ki.
Akkor tehát miért is ne válasszam ezt ?
(#) Kafka válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Szia!
Távol álljon tőlem, hogy bele akarnék szólni az ötleteidbe. Pláne ha rádiótechnikáról van szó, az nem az én világom. Elhiszem, hogy ilyen szoros korlátok közé vagy szorítva. Szerintem térjünk vissza az eredeti kérésedre.
ATtiny2313, 4.864Mhz -> 1 órajel = 205.5921ns
  1. label:
  2. ldi R16, 0b01000001  ;-> 1 órajel
  3. out PORTB, R16          ;-> 1 órajel
  4. rjmp label                   ;-> 2 órajel

Jól érten hogy a pic-nél a port kiiratás 8 órajel? (1 parancs = 4 órajel?) Mert ha igen akkor ezzel így már lehet kezdeni esetleg valamit, persze azt még nem mondtad, hogy az értékek honnan jönnek. Egy másik megoldás ha végtelenszer akarod körbeírni a kimenetet:
  1. ldi R16, 0b00000000
  2. label:
  3. inc R16                 ;-> 1 órajel
  4. out PORTB, R16    ;-> 1 órajel
  5. rjmp label             ;-> 2 órajel

Mindkét program 4 órajel összesen, lehet kell nop utasítás bele a pontos időzítésért.
(#) vilmosd válasza Kafka hozzászólására (») Dec 31, 2010 /
 
Hali
Ha ez igy van ahogy leirtad, akkor ugyanaz a leanyzo fekvese. Eredetileg is ez volt a problema, hogy a goto utasitas a PIC-ben 2 ciklusos, mig az osszes tobbi 1 ciklusos. Azert nincs az annyira elmaradva, hogy 8 ciklus legyen egy port iras. Ja egy ciklus az orajel 1/4-de termeszetesen, de amit ajanlottam tartalmaz PLL, igy 4x orajelbol a ciklus 4,xxx MHz-en mukodik.
(#) trudnai válasza ZsoltyFM hozzászólására (») Dec 31, 2010 /
 
Idézet:
„Akkor tehát miért is ne válasszam ezt ?”


Nem mondtam, hogy ne valaszd ezt, csupan azt, hogy joval kevesebb AVR Assembly-re a doksi, mint PIC-ekre, igy nehezebb feladatod lesz. Anno mikor kezdtem atnyergelni AVR-ekre eleg szukos doksikat talaltam cak, azt is amit megleltem Angol nyelvu volt (nekem szerencsere ez nem jelent nehezseget, de van akinek igen). Legtobben avr-gcc-ben (WinAVR-ben), illetve BASCOM-ban fejlesztenek AVR-re, amivel ilyen jellegu orajel-pontos idoziteseket lehetetlen, vagy csak nagyon korulmenyes megvalositani.
(#) Kafka válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
Szia!
Pic-hez nem értek valószínűleg azért is nem teljesen világos számomra. Vegyünk egy példát:
AVR-ben:
f=1Mhz -> 1 órajel = 1us (az órajel az maga a ciklus vagyis 1 órajel = 1 ciklus, avr-nél nincs értelme külön órajelről és ciklusról beszélni mivel ugyanaz)
Példa program:[/quote]
  1. label:
  2. ldi R16, 0b01000001   ;-> 1 órajel = 1us
  3. out PORTB, R16           ;-> 1 órajel = 1us
  4. rjmp label                    ;-> 2 órajel = 2us

Le tudnád irni ugyanezen példán keresztül, hogy ez hogy valósul meg pic esetén? (az, hogy a parancs formátumok mások most tekintsünk el)

Én abból táplálkoztam, hogy ZsoltyFM ezt írta:
Idézet:
„Ez két utasítás kell ahhoz hogy egy tetszőleges értéket írassak ki a portra. Ez egészen pontosan 8 órajel ill.
goto utasítást használok ,(nincs más utasítás amivel ez kevesebb órajelvesztéssel kiváltható lenne) és ez önmagában két utasításnyi időt vesz el azaz 8 órajelnyi időt.”

Nem fordítva van, hogy 1 ciklus 4 órajel?
Valószínű ha meglátom a pic-es példaprogramot azonnal világos lesz. Köszi!
(#) Reggie válasza trudnai hozzászólására (») Dec 31, 2010 /
 
Szerintem az inline assembly nem korulmenyes. Legalabbis nem korulmenyesebb mint eleve assemblyben programozni. Sot meg a 32 bites AVR-nel, ha sajat megszakitas kezelot akarsz irni es nem a gyarolag adottat hasznalni, akkor kenyszerulsz assemblyben is programozni.
(#) Reggie válasza vilmosd hozzászólására (») Dec 31, 2010 /
 
A PLL-nek faziszaja van.
(#) vilmosd válasza Kafka hozzászólására (») Dec 31, 2010 /
 
Hali
A PIC-nel annyi a kulonbseg, hogy az orajelet leosztja negyedere, tehat 4 MHz oszcinal a ciklusom 1 uS. Viszont a PIC utasitasai (kiveve a "goto") 1 ciklus alatt hajtodnak vegre. Tehat a PIC 4 MHz orajele ugyanazt a sebesseget adja mint az AVR 1 MHz orajelnel. Ebbol nem is adodik problema a kerdezonel. Nala az a problema, hogy ha csinal egy hurkot, es a vegerol visszaugrik az elejere, nem lesznek egyformak az idok az utolsoval, mivel a "goto" 2 ciklus hosszu.
  1. Loop
  2. .
  3. .
  4. movlw   .20                             ; 1 ciklus
  5. movwf   PORTB                   ;1 ciklus
  6. goto         Loop                         ; 2 ciklus
Tehat vegulis a ket rivalis szinte egyforman dolgozik, csak az orajel es a vegrehajtasi ciklus kozott van elteres. Ezert ajanlottam a kolleganak a 18F1220 tipust, mert felszorozza a kvarc frekijet 4-el es igy a ciklusido meg fog egyezni a kvarc frekijevel.
Csa Vili
(#) vilmosd válasza Reggie hozzászólására (») Dec 31, 2010 /
 
Hali
Tudom hogy van faziszaja, de mivel itt 19 kHz-et kell eloallitani es a pll kimeneti frekije 19 MHz feltt van, igy ennek a hatasa szinte semmi.
Következő: »»   293 / 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