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   4 / 840
(#) Pavel válasza Gory hozzászólására (») Aug 26, 2006 /
 
(#) vegyészmérnök válasza szal hozzászólására (») Aug 27, 2006 /
 
Szia! Már megépítettem a legegyszerűbb programozót AT89C2051-hez, ami csak írni tud. Futófényt próbáltam csinálni vele, de valami nem stimmelt, minden kimenet H maradt, mintha folyamatosan resetelve lenne. Pedig a reset áramör és az oszcillátor is rendesen működik (megnéztem szkóppal). A programozás sebességét (a delay-t) is próbáltam változtatni, de eredményt nem értem el vele. A programozónak vagy csak a törlés funkciója működik rendesen, vagy rosszak az IC-k amiket kaptam...:nemtudom: Most tervezem az AtTiny2313 programozómat...
(#) Gory válasza vegyészmérnök hozzászólására (») Aug 27, 2006 /
 
Ezt építsd meg ami a lap alján van. A tápot a céláramkörből veszi a programozó, úgy hogy a pozitív feszt, a csatlakozó 2 lábához, a földet pedig a 10-hez kell kötni.
(#) vegyészmérnök válasza Gory hozzászólására (») Aug 27, 2006 /
 
Én 74LS245 IC-vel csinálom, mert olyanom van, 244-est meg nem kaptam Kaposváron. IDC10-es csatlakozó helyett meg PIN20-as foglalatot teszek rá, amiben az AtTiny2313-at tudom programozni. Ha meg esetleg mégis In System szeretnék Programozni, akkor még mindig készíthetek hozzá IDC10-es csatlakozót. Tápfeszt adok neki.
(#) IMi válasza Gory hozzászólására (») Aug 27, 2006 /
 
Hello!
Egy lehetséges megoldás (EAGLE):
(#) d0b0s válasza vegyészmérnök hozzászólására (») Szept 1, 2006 /
 
Ezen a fórumon hasznos irományokat találsz, ha mégse működne a programozód, vagy ha félted a számítógéped párhuzamos portját ...[link=http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=33265]itt..
[/link]
Szerintem érdemes átolvasni.
Jó szórakozást !
(#) d0b0s válasza d0b0s hozzászólására (») Szept 1, 2006 /
 
(#) vegyészmérnök válasza vegyészmérnök hozzászólására (») Szept 1, 2006 /
 
Rájötem mi volt a probléma. Kellett egy 100 nF-os hidegítő kondenzátor az égetőbe. Így már sikerült beprogramoznom a 89C2051-eseket. (Megcsináltam életem első mikrokontrolleres projektjét. ) És az AtTiny2313 programozóm is elkészült már.
(#) gtk válasza vegyészmérnök hozzászólására (») Szept 1, 2006 /
 
Gratulalok!

Mi az a hidegito kondenzator?
(#) vegyészmérnök válasza gtk hozzászólására (») Szept 1, 2006 /
 
Kösz.
Hidegítő kondenzátort at IC-k Vcc és GND lábai közé szoktak tenni, hogy kiszűrje a zavaró tüskéket. (A PC kapcsoló üzemű tápja által előállított 5 V elég zajos...)
(#) gtk válasza vegyészmérnök hozzászólására (») Szept 1, 2006 /
 
Es ezert nem mukodott? Ujat tanultam

Lenne egy kerdesem hozzatok!
Lebegopontos szamot hogy lehet kezelni avr-gcc -ben?
Igy probalkoztam de nem mukodik:


  1. double i = (double) TCNT1;
  2. i  /= 1000; sprintf(buf, "%f", i);
  3. //.....

es itt kiirtam kijelzore; egy kerdojel jelenik meg. int es uint -tipusnal rendesen atalakit az sprintf es str -kent kiirva jol megjelenik a kijelzon is ..

Van valami otletetek?
(#) gtk válasza gtk hozzászólására (») Szept 3, 2006 /
 
Sziasztok!

mega8 -nal szeretnem a PORTD -t hasznalni bemenetkent,rakottem
3 + 2 nyomogombot; a PD 0,1,4 labakon nyomogombok kulso felhuzo ellenallassal,a PD 5,6 labakat INT -kent szeretnem hasznalni - lefuto elre - ,ezeken is nyomogomb van felhuzo ellenallassal.Gombnyomasra lenne az int es a tobbi gomb allapotanak beolvasasa.
Namost a beallitas igy nez ki:

DDRD = 0x00; vagyis bemenet.

Megis mikor ramerek a PDx labra akkor 0 szinten van,pedig ott e felhuzo ell.

Olvastam az adatlapban errol de nem vilagos..

Kerlek segitsetek nekem ebben
(#) gtk válasza gtk hozzászólására (») Szept 5, 2006 /
 
Negatv tapasztalat:

main(){
for(;{
if(....){}else{}
}
}

Ebben a formaban nem jol ertekelodik ki hosszabb kifejezes az if -ben.Ha rakok a ciklusba egy 10ms delayt,akkor kiertekelodik,csak forditva mukodik.Tehat igaz feltetel eseten az else agat hajtja vegre es forditva
Tapasztalt hasonlot mar valaki?Ket napja ezzel szivok,megoldast nem talaltam,csak antiprogramozost: felcsereltem az if/else tartalmat pff .
avr: mega8
F_CPU 14.31818
kornyezet : avr-gcc
(#) d0b0s válasza gtk hozzászólására (») Szept 5, 2006 /
 
Én ATmega32 tipuson próbáltam hasonlót csinálni.
Nem elég az irányt beállítani, azután a felhúzó ellenállást is be kell kapcsolni egy PORTD=x értékadással. Ha jól emlékszem az 1-es bitérték kapcsolja be a felhúzó ellenállást... remélem ez segít.
(#) gtk válasza d0b0s hozzászólására (») Szept 5, 2006 /
 
Koszi vegulis mukodik...

De nagyon erdekes dolgok vannak,amiket nem ertek.PL az elobb emlitett is,es a timer2 -vel kapcsolatosan is:
  1. //timer2 overflow bekapcsolva
  2. void
  3. timer2_overflow_disable ()
  4. {
  5.   TIMSK &= (0 << TOIE2);
  6. }
  7.  
  8. //timer2 overflow kikapcsolva
  9. void
  10. timer2_overflow_enable ()
  11. {
  12.   TCNT2 = 0x0;
  13.   TIMSK |= (1 << TOIE2);
  14. }

Eddig ok is,csakhogy kikapcsolni kikapcsolja,de be nem .A kikapcsolas,bekapcsolas feltetel 128 eloosztoval beallitott timer1 OVERFLOW rutinban van,hogy ne legyen a main loop-ban,mert ott nem akart mukodni.

Kell figyelni valamelyik regisztert?,szinkronizalas problema vagy mi lehet?
Valakinek ha van otlete please segitsen..Ugylatszik keveset tudok en meg ezekrol
(#) d0b0s válasza gtk hozzászólására (») Szept 6, 2006 /
 
Hát ez elég vad
Mármint ahogy TIMSK-ban nullázni akarsz egy bitet.
Gyakorlatilag itt minden bitet 0-ba állítottál.
A helyes megoldás:

TIMSK &= ~(1<
Szerintem ez okozza (részben) a problémáidat.
A többi dolgot nem értem, talán az egész progit másold be ide.
Persze, ha nem félted a fáradságos szellemi munkával létrehozott szellemi termékedet az ilyesmire kiéhezett közönségtől .>>
(#) d0b0s válasza d0b0s hozzászólására (») Szept 6, 2006 /
 
javítok, mert nem jelent meg (miért ?):
TIMSK &= ~(1 << TOIE2);>>
(#) Moderátor hozzászólása d0b0s hozzászólására (») Szept 6, 2006
 
Azért nem jelent meg, mert a html nyelvben a kisebb-nagyobb, más néven "kacsacsőr" jel a kódokat jelöli. Ha egy ilyet lát a html, akkor azt hiszi, hogy kód következik, ami a "földi halandó" számára nem látható, ezért nem jelent meg a vége a hsz.-odnak.
(#) d0b0s válasza (») Szept 6, 2006 /
 
Köszi, mindig tanul az ember valamit ..
Másodszor viszont megjelent.
Ha a kacsacsőr után szóközt hagyok, akkor nem lesz 'misztikus' a jel ?
Kicsiti furcsa ez a megoldás...
Elvileg azt kéne látnom amit beírok, nem foglalkozva azzal, hogy mivé konvertálja, vagy milyen speciális szekvenciákat ad a begépelt szöveghez a rendszer.
Vagy csak szimplán hülye vagyok ?:eek2:
(#) gtk válasza d0b0s hozzászólására (») Szept 6, 2006 /
 
Koszi szepen!

Hamarosan kiprobalom.
Maszkot hasznalva mukodott volna..Itt tevedtem...
Na de szamomra meg mindig nem vilagos hogy ,hogy van ez a (1< Ha igen ,akkor TIMSK = TIMSK & (0 << TOIE2); miert nem jo?
Valami anyagot kell keressek...>>>>>>
(#) gtk válasza gtk hozzászólására (») Szept 6, 2006 /
 
Oh na..szerencsere van egy olyan megoldas ez esetben hogy megnyitod a html oldalt forraskent es ott megtalalod amit irtal,igy nem kell ujrafogalmazni..Na akkor megegyszer:

Na de szamomra meg mindig nem vilagos hogy ,hogy van ez a (1 << n), (0 << n).(n helyerteku bitet 1be allit,vagy 0ba, nem?)

Ha igen ,akkor TIMSK = TIMSK & (0 << TOIE2); miert nem jo?

Ha kesz lesz a projekt akkor ugyis megosztom.
avr/PWM-el szeretnek hangot generalni,valami pittyogas szeru kelleneNincs veletlenul errol valami anyagod az adatlapon kivul?

Mar azt hittem hogy kihalt ez a topic; jo hogy MEG van valaki aki C -ben progizza az avr-t es hajlando segiteni is!Koszi! >>
(#) gtk válasza (») Szept 6, 2006 /
 
Elvileg a code beszurasban normalisan meg kellene jelenjen,de ott is santit a dolog.Erdemes lenne javitani mert neha azert ertelmes kod is kerul fel a forumra,annak meg masok is hasznat vehetnek.
(#) d0b0s válasza gtk hozzászólására (») Szept 6, 2006 /
 
Azért nem jó a
TIMSK &= (0 << TOIE2);
mert ha 0-t akármennyivel shiftelsz az 0 lesz (az egész byte, holott te valójában nem ezt akartad, hanem csak egy db bitet akartál 0-ba állítani, a többit változatlanul akartad hagyni !), és ha a 0 értékű byte-ot összeéseled valamivel, akkor az a valami tutira 0 lesz.
A
TIMSK |= (1 << TOIE2);
ezzel szemben teljesen jó megoldás, hiszen itt az 1 értékű byte-ot shifteled a TOIE2 értéke szerinti helyiértékre, majd VAGYolod, s így azt a bitet 1-be állítod.
Kicsit mélyedj el ezekben a dolgokban, mert semmire nem fogsz haladni, ha ilyen apróságokon fennakadsz.
Nem tudom, milyen környezetben dolgozol, én a avrstudio4 - et használom winavr fordítóval, a winavr könyvtárban van néhány példa, PWM-re is...
Ha csak csipogni akarsz, akkor fix PWM periódus kell, a kitöltési tényezővel hangszínt tudsz állítani.
Ha komolyabb hangokat akarsz generálni, akkor a PWM kitöltési tényezőjét kell modulálnod (ebben az esetben szükséged lesz a kimeneten egy aluláteresztő szűrőre).

Jó munkát !>>>>
(#) gtk válasza d0b0s hozzászólására (») Szept 6, 2006 /
 
Koszonom!

Maskokkal megy a dolog.A shiftelesben nem voltam biztos,hogy hogy mukodik.
avr-gcc-t hasznalok Linux alatt.

Udv.
(#) gtk válasza d0b0s hozzászólására (») Szept 6, 2006 /
 
Vegulis mindket formaban mukodik most!
Az volt a baj,hogy folyamatosan hivom a fuggvenyt,
az overflow1 -ben,es be volt rakva az enable fv.-be egy TCNT2=0x0;Igy folyamatosan 0 -ban tartotta a TCNT2-t
De ujat tanultam ezzel: TIMSK &= ~(1 << TOIE2);De meg nem igazan ertem..ahogy en neztem igy is a byteban egy helyen lesz csak 1-es,a tobbi(mogotte,az also bitek) 0,de ez is invertalva van,ugy hogy..
Sajna a c konyvek is keveset irnak errol..
Ma neztem a gcc preprocessor kimenetet,sok mindent lehet belole latniPl.hogy milyen cimekre kerulnek milyen ertekek.

A PWM -el kapcsolatosan: en korabban mar atalakitottam egy regebbi peldakodot(LED vezerlo) mega8 -ra.Ott a
  1. SIGNAL(SIG_OVERFLOW1)
-ban kap uj erteket az OCR1A.
Itt az OCR1A a periodus?Es hol lehet a kitoltesi tenyezot allitani?
Legyszi ha idod van nehany alapveto infot irjal rola,amig beletanulok.

Koszonom.
(#) d0b0s válasza gtk hozzászólására (») Szept 7, 2006 /
 
Halló

Az adatlap olvasását akarod megúszni ?
Ezt másképp nem lehet !

A periódust úgy tudod beállítani, hogy a számláló konfigurációs regiszterében beállítasz vmilyen PWM üzemmódot (pl. 10 bitest) és elindítod a számlálót.
Ilyenkor a számláló mindig újraindul.

OCR = Output Compare Register -- ezzel fogod a kitöltési tényezőt változtatni.
A számláló értéke ezzel a regiszterrel kerül összehasonlításra. Ha egyezés van, akkor történik valami, az hogy mégis mi, azt egy speciális regiszterben tudod beállítani.

Ahhoz, hogy korrekt programokat írjál tényleg ALAPOSAN át kell nézned az adatlapot, hiába írsz C-ben, ezt itt nem úszhatod meg !
Talán még jobb is lenne, ha assembly-ben irogatnád az első programjaidat
(#) gtk válasza d0b0s hozzászólására (») Szept 7, 2006 /
 
Koszi.

Sajna pwm-rol keveset tudok..de igy mar tobbet ..
Adatlapot mindenkeppen olvasom,anelkul...
(#) Ant válasza pakibec hozzászólására (») Szept 15, 2006 /
 
Hi!

Én most kezdtem el programozni az AVR-m
De van egy próblémám, nekeme attiny2313 avrm van de ezt nem lehet beállítnani, nem lehet felprogramozni, nem lehet kiválasztani. Csak 90s2313-ast
Ez lehet a baj hogy nem tudom felprogramozni a chipet, vagy más?
Ha ez a baj akkor hogyan lehet beállítani az attiny2313?

Ant
(#) Ant válasza Ant hozzászólására (») Szept 15, 2006 /
 
Ja, meg légyszi azt is mondjátok meg hogy milyen kapcsolás kell a http://avr.tavir oldalon található led villogtatóhoz.

Ant
(#) gtk válasza Ant hozzászólására (») Szept 15, 2006 /
 
Szia!

Ezt olvasd el figyelmesen --ITT--

En nem tanulmanyoztam kulonosebben,de ugy futolag olvastam hogy fuse beallitasokban van kulonbseg,az viszont nagyon fontos!nem elhanyagolhato.
Következő: »»   4 / 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