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   463 / 840
(#) Massawa válasza blackdog hozzászólására (») Júl 30, 2012 /
 
A GND-t mindenhova vezetnék - persze kerülve a hurkot. A Vcc-t akkor, ha nagyobb fogyasztás várható - sok kimenet sok (nagyobb) fogyasztot kapcsol.
(#) Thomy válasza blackdog hozzászólására (») Júl 31, 2012 /
 
Alapszabály, hogy az összes táplábat be kell kötni - nem tudhatod, melyik domaint melyik láb táplálja. Nem feltétlen vannak belül összekötve ugyanis. Meg a költői kérdés: ha nem kéne mindet bekötni, minek vannak?

A 100nF-os kondi "ökölszabály", a tápintegritás nevű műfaj foglalkozik azzal, hogy a kapcsolási tranziensek ne befolyásolják a helyes működést. Érdemes rakni mindenhova, ha elfér, általában elegendő ezen a szinten.
(#) mario1111 válasza mario1111 hozzászólására (») Júl 31, 2012 /
 
Megválaszolom magamnak...

Sikerült megoldani a dolgot. Neten nem nagyon találtam használható megoldást. Végül is AVR Studioban beállítottam a projekt tulajdonságainál,h több egységben kezelje a memóriát és a képeket ezekben a szegmensekben tárolom. Amikor pedig használom őket akkor a "pgm_read_byte_far" fv-el olvasom be őket a flashből úgy, hogy eltolom a címeket statikusan.
256 k flash van benne ugye. Az alsó 128-ban a program van(most kb 70 k). 129-192-ig van egy egyben kezelhető szegmens és 193-256-ig a másik. Ezekben tárolom a bmp képeket. Végül is működik, csak kis odafigyelés kell.

Márió
(#) sikolymester válasza Robi98 hozzászólására (») Júl 31, 2012 /
 
Azt irod, hogy azt vizsgalod amikor a foldre huzod a labat. A kododban megis azt vizsgalod, amikor magasan van. Rapillantva szerintem itt lesz a hiba.
(#) sikolymester válasza Thomy hozzászólására (») Júl 31, 2012 /
 
Hulyeseget ne beszeljunk. Belul termeszetesen ossze vannak kotve a taplabak.

Blackdog:
Kondit mindig minden taplabhoz erdemes tenni. De az igazi okolszabaly megiscsak ez: kovessuk az adatlapok tanacsait, es a kulonbozo tervezesi ajanlasait a gyartonak. Elofordulhat, hogy nem 100nF os kondit javasolnak, hanem mas meretet.
(#) blackdog válasza sikolymester hozzászólására (») Júl 31, 2012 /
 
Nos jól összezavartatok. Szívem szerint bekötnék minden VCC/GND lábat, de jelen esetben bajban vagyok a huzalozással.

Másik felmerült probléma a huzalozás/tervezés közben:
Feltétlenül szükséges a RESET gomb? Nem elég, ha csak 10k felhúzó ellenállás van rajta? Végülis, ha elveszem tőle a tápot és visszaadom akkor is újra indul az AVR.
(#) Thomy válasza sikolymester hozzászólására (») Júl 31, 2012 /
 
Általánosan írtam, nem konkrétan a 3 táplábú AVR-re.
Vannak olyan procik, ahol különböző táplábak különböző domaineket táplálnak meg - core, IO, memória, PLL, periféria. Biztos vagyok benne, hogy ezt Te is tudod. Ezek pedig nincsenek összekötve, de adatlapból is úgy jön le, mintha a párszáz lábú BGA két sarkán lévő VDD sem lenne direkt kontaktban vagy bizonyos tápok diódázva lennének egymás felé. Én erre gondoltam, bár nem néztem meg szemüveggel a die-t.

És légyszíves, ne kezeld le más véleményét ilyen nagyvonalúan, mert azon túl, hogy nem szép dolog, még lehet hogy amúgy egyetértetek, csak a megfogalmazás a fórum hobbi jellege miatt nem korrekt.

Üdv,
Thomy
(#) Thomy válasza blackdog hozzászólására (») Júl 31, 2012 /
 
Kösd be mindet, ha tutira akarsz menni. Lehet, hogy ha nem kötöd be mindet, menni fog, de lehet, hogy megmagyarázhatatlan hibákat fog néha produkálni vagy bizonyos perifériák nem lesznek működőképesek.
(#) blackdog hozzászólása Júl 31, 2012 /
 
Nos eléggé döcögve haladok.
Arra törekszem, hogy minden VCC/GND láb be legyen kötve és szűrve is legyen. Azt is belátom, hogy reset gomb nem létkérdés. De ismét egy új helyzet:
ATMEGA128-nak van |PEN lába. Az adatlap szerint:
Idézet:
„PEN is a programming enable pin for the SPI Serial Programming mode, and is internally pulled
high . By holding this pin low during a Power-on Reset, the device will enter the SPI Serial Programming
mode. PEN has no function during normal operation.”

Ezek szerint csak akkor tudom feltölteni a programot az AVR-re, ha PEN láb bekapcsoláskor alacsony szinten van? Mi van akkor, ha ezt a lábat fixen GND-re kötöm vagy be sem kötöm sehova?
Jól értem, ha magas szinten van akkor nem tudom programozni és futás közben ezen nem tudok változtatni csak reset/újraindításkor dől el, hogy akarok programozni-e vagy sem? Mire jó valójában ez a láb?
(#) Massawa válasza Thomy hozzászólására (») Júl 31, 2012 /
 
Meg a költői kérdés: ha nem kéne mindet bekötni, minek vannak?


Költöi válasz: mert néha kell a masszivabb áramodavazetés, amit csak több láb bevonásával lehet megoldani (föleg belül, ahol a chipet az aranyhuzalokkal kötik a lábakhoz.
(#) sgt válasza blackdog hozzászólására (») Júl 31, 2012 /
 
Ezt olvasd el !
(#) blackdog válasza sgt hozzászólására (») Aug 1, 2012 /
 
Köszönöm!
Viszont a |PEN lábbal nem tudom mit kezdjek.

amúgy kicsit böngésztem az ATMEL oldalán az app.note-ok között. Tetemes anyag van ott
(#) Robi98 válasza sikolymester hozzászólására (») Aug 1, 2012 /
 
Köszönöm az észrevételt, kijavítottam a sort :
  1. while(PINB&(0<<PB4))

Sajnos így a ledek már abszolút nem villannak fel, tehát máshol lehet a hiba. :no:
(#) sgt válasza blackdog hozzászólására (») Aug 1, 2012 /
 
Wazzeg azért lehetnél egy kicsit interaktívabb a mai világban. Bővebben: Link különösen az első találatokat ajánlom.
(#) blackdog válasza sgt hozzászólására (») Aug 1, 2012 /
 
Jogos, igazad van. Ez különösen jól jött: Bővebben: Link[off]
Mentségemre szóljon, hogy amin a napokban keresztül megyek elég rossz. Kevés energiám marad gondolkodni.
Konkrétan a bankom épp felmondta a lakásunk hitelszerződését. Szóval az interktív energiák most másra mennek el, de próbálok kikapcsolódni és ekkor titeket kérdezgetlek. Lenne még egy kérdésem is, de inkább hagyom a fenébe.
(#) sgt válasza blackdog hozzászólására (») Aug 1, 2012 /
 
Amikor ilyen dologgal állok szemben, akkor rögtön a guglihoz fordulok, mert elég egyetemes a felvetés főleg hogy atmega128-ról van szó, ami igen csak elterjedt. Míg ha PERL-ben kellene keresni a win32 key capture-t vagy system environment variable létrehozást az már nem ennyire evidens

Akkor kérdezz wazzeg .

Ehh, az nagyon nem jó.
(#) blackdog válasza sgt hozzászólására (») Aug 1, 2012 /
 
Igazából ez az első ilyen 'nagy' AVR-em. Tervezési irányelvek érdekelnek. Mindenhol az olvasom, hogy kristály és tápszűrő kondi a lehető legközelebb. De mégis mennyire? Most átkötésekkel megoldottam, hogy a 100nF szűrő kondik közvetlen a táp lábaknál legyenek, de a kristály az kb. 2cm-re van. Nem bírom közelebb tenni. Aztán azon is elbizonytalanodtam, hogy külső felhűzó ellenállás mikor kell. A nyomógombok kb. 20 cm-re lesznek az AVR-től szalagkábellel. Én úgy gondolom erre még elegendő a belső felhúzó ellenállás, de biztos ami biztos alapon keresem a helyét a külső ellenállásoknak.
Aztán ezt a számomra "kifordított" logikát sem értem. Alapból minden bemenet magas szinten van és esemény hatására lesz alacsony. Reléket vezérlek opton keresztül. Most nyugalmi helyzetben az opto magas szintet ad. Esemény hatására lesz low. De mi van, ha elszáll az egyik opto? Kapásból alacsony szintre mehet és a relém indokolatlanul behúz és úgy is marad.
(#) sgt válasza blackdog hozzászólására (») Aug 1, 2012 /
 
Én amikor a próba panelemet csináltam, akkor összesen 1 db 100 nF-ost tettem a 7805-höz, ami nem éppen az atmega16-nál volt. Alapvetően az atmegák elég stabil jószágok. Egyik fanatikus tanárunk ívhegesztett közvetlenül az uC felett, és nem igazán hibázott. Hány MHz-es a kvarc? 2 cm nem a világ vége. Természetesen minél közelebb van annál jobb. Programozási probléma, hogy fordított logika. Én ilyenkor így írom fel:
  1. if(!(PINA & (1<<PA0))) { }

vagy valami ilyesmi, és innentől kezdve el is felejtettem, hogy fordított logika van. Nem követtem, hogy eddig mit csináltál, de általában az optot úgy kötöd, ahogy nem szégyelled. Ha FC kapcsolásban akkor ponált, ha FE kapcsolásban akkor negált a működése. Miért szállna el az egyik opto? Ha ilyet sejtesz, akkor csinálj visszacsatolást. Egyéb óhaj sóhaj?
(#) blackdog válasza sgt hozzászólására (») Aug 1, 2012 /
 
Visszacsatolást nem kívánok készíteni mert alapból van 13db opto-m. Ehhez, jön a 16db relé és sok más. Arról már nem is beszélek, hogy kötött a panel fizikai mérete.
Amúgy én 'is' oda jutottam, hogy definiálok egy változót és nem zavar össze az , hogy L szint esemény H szint nyugi. Csak azért zavar mert baj esetén minden megy, adott esetben bekapcsoláskor L szinten maradhat.
A kvarc 16MHz.
Van itthon jó pár gyári panel és egy-kettő elképesztő módon nem foglalkozik a távolságokkal. Én hosszú életű kapcsolást szeretnék építeni
(#) Suncorgo hozzászólása Aug 1, 2012 /
 
Sziasztok

Nem találkozott valaki ezzel a hibával?
- 'USRT_BAUDRATE' was not declared in this scope


  1. UBRRH = (unsigned char)(baud>>8);
  2. UBRRL = (unsigned char)baud;


A felső sorra hozza. Egyszerűen nem tudok mit kezdeni vele. Nem tudom beállítani az UBRR regisztert.
Ez egy ATtiny2313-on lenne. Már próbáltam az adatlapi példával is, szedtem netről is sokfajtát és egyiket se kajálja meg az AVR studio 6.

Van valami ötletetek?

Üdv:Suncorgo
(#) trudnai válasza sgt hozzászólására (») Aug 2, 2012 /
 
Idézet:
„if(!(PINA & (1<


Ilyen csunya szavakat hasznalni...
(#) Hooligan01 válasza Suncorgo hozzászólására (») Aug 2, 2012 / 1
 
Szia!

Kifogástalanul működik a studio6, a hiba nálad van, le is írtad. Az "USRT_BAUDRATE" nincs deklarálva, ezért problémázik a fordító.
A legegyszerűbb megoldás beállítani a baudrate-ot, ha célzottan feltöltöd a regisztereket, pl. ennek a segítségével: Baud Rate Calculator

Szerintem
(#) Suncorgo válasza Hooligan01 hozzászólására (») Aug 3, 2012 /
 
Tegnap megoldódott. Egyszerűen restartolni kellett a gépet... Nem értem én ezt a technikát

Köszi az oldalt
(#) Novak hozzászólása Aug 3, 2012 /
 
Sziasztok,

egy ATMega16-tal építettem áramkört. Olyan érdeles hibajelenséget tapasztalok, hogy C portja abszolút nem működik a kontrollernek.
Minden port (A,B,D) működik kifogástalanul, de a C port tetszőleges lábán még a LED villogtatása sem megy.
Ez már a harmadik mikrokontroller amivel próbálom, és mindig ugyan ez a hiba. Próbáltam már 16A-val és 16L-lel is.
Van esetleg ötletetek, hogy mi lehet a baj? Az AVR minden táplába be van kötve, és meg is van rajta az 5V (vagy épp a 0).
Kezdek tanácstalan lenni
(#) TavIR-AVR válasza Novak hozzászólására (») Aug 3, 2012 / 1
 
JTAG alapban engedélyezett.
Ez a C2..C5 láb.

Fusebitek közt: disable jtag.
(#) Novak válasza TavIR-AVR hozzászólására (») Aug 3, 2012 /
 
És működik Hogy ezzel mit szenvedtem... Köszönöm szépen, sokat segítettél!
(#) zombee válasza Novak hozzászólására (») Aug 3, 2012 1 /
 
már csak a topik fejlécét kéne elolvasni egyszer...
(#) blackdog hozzászólása Aug 4, 2012 /
 
Sziasztok!

Ismét egy nyák tervezési kérdés. STK500 programozóm van. Kétféle csatlakozás "szabványos" az ATMEL-től. ISP6 ISP10.
Az utóbbit egyáltalán nem is értem minek.
Én ISP6 szerint tervezem/tervezném a nyákot, de nagyon nyakatekertek lesznek a vezetősávok.
Mennyi szokás eltérni ezektől? Én szíven szerint eltérnék, hogy áttekinthetőbb és egyszerűbb legyen a nyák aztán készítek egyedi programozó kábelt.
(#) TavIR-AVR válasza blackdog hozzászólására (») Aug 4, 2012 / 1
 
ISP10: stabilabb, zavarvédettebb.
ISP6: elterjedtebb, kisebb nyákot foglal.

Eltérni tőle: Ön és szívatás. Emlkészel rá 1 év múlva?
(#) blackdog válasza TavIR-AVR hozzászólására (») Aug 4, 2012 /
 
Mivel teljesen egyedi dolgról van szó tudni fogom, hogy ehhez egyedi programozó kábel kell.
Ezek szerint, ha legalább 1 méteres vezetéket szeretnék akkor inkább ISP10?
Következő: »»   463 / 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