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   361 / 840
(#) zombee válasza abcdabcd hozzászólására (») Szept 23, 2011 /
 
A tartalmát már nem néztem meg, maga a forma már minden sorában fagyásveszélyt hordozott.
Az végülis mindegy, mert a TCCR1B beállítását sem kerülheted el, ugyanis itt van az osztó.
Ha nem nyúlsz hozzá akkor a timered el sem fog indulni...
(#) abcdabcd válasza zombee hozzászólására (») Szept 23, 2011 /
 
Pedig tccr1b-ben a ' b' helyet 'a ' lett írva és a kód, mint a kisangyal működik! Egyébként meg 5x8 bemenetet meg 8 kimenet tud egyelőre kezelni a kis proci és ami még jobb ez sima SO tokban is kapható a "nagytestvérekkel" ellentétben...

Illetve az a "fagyásveszélyesnek" titulált kódrész a (< < bitnev) arra ad lehetoseget, hogy egy év mélva is tudjam, hogy melyik biteket állítottam be, nem úgy mintha 0x57-et írnék oda... akkor kommentbe írhatnám oda ugyanezt... itt meg mindegy hány órajelet fogyaszt a dolog egyébként... talán ez inkább a kezdők által nem annyira értékelt dolog(a szükség meg úgyis meghozza, ha esetleg gyorsabb megoldás kell valahova, hogy az ember az ilyen finomságokat kimazsolázza, hogy hogy lehet gyorsítani ha kell), mintsem a láb-multiplexelés, amihez csak alapvető digitális technikai ismeretek kellenek és működtethető is szépen!>>
(#) zombee válasza abcdabcd hozzászólására (») Szept 23, 2011 /
 
Sima SO tokban kapható még minden, maximum 20 lábú AVR. És minden maximum 40 lábú AVR DIP tokosba is van.
Ha a méret is számít és elég 13 láb, akkor ATTiny24 a nyerő, ez vékony SO tokos, míg a 2313 az már széles.

Na, írok gyorsan egy kódot hogy ne maradjak adósod. Nem rejtettem el benne hibát, de nem is ellenőriztem!

  1. .include t2313def.inc
  2. .equ COUNT_MAX = (20000000/1024)-1;
  3.  
  4. .org 0x0000
  5. rjmp eleje
  6. .org 0x0004
  7. rjmp timer1_megsz
  8.  
  9. .org 0x0013
  10. eleje:
  11. LDI r16,(RAMEND)
  12. OUT SPL,temp1
  13. ;TIMER INIT:
  14. ldi r16, (0<<WGM11) | (0<<WGM10)
  15. out TCCR1A, r16
  16. ldi r16, (0<<WGM13) | (1<<WGM12) | (1<<CS12) | (0<<CS11) | (1<<CS10)
  17. out TCCR1B, r16
  18. ldi r16, LOW(COUNT_MAX)
  19. out OCR1AL, r16
  20. ldi r16, HIGH(COUNT_MAX)
  21. out OCR1AH, r16
  22. ldi r16, 1<<OCIE1A
  23. out TIMSK, r16
  24. sei
  25. ;timer init vege
  26.  
  27. ;...tobbi programresz...
  28.  
  29. timer1_megsz:
  30. push r16
  31. in r16, SREG
  32. push r16
  33.  
  34. ;...megszakitasrutin
  35.  
  36. pop r16
  37. out SREG, r16
  38. pop r16
  39. reti
(#) zolee1209 válasza zombee hozzászólására (») Szept 23, 2011 /
 
Interruptból való visszatérés esetén nem kell újra "sei"? Mondjuk ez lehet a főprogramban, ami itt most nincs, de ettől függetlenül kérdezem.
(#) abcdabcd válasza zombee hozzászólására (») Szept 23, 2011 /
 
Na pont ezaz, a mega procik már 20 láb fölött vannak, rendszert nem tudtam, hogy lenne benne viszont végignéztem az mscbp-nél kapható összes procit, és egy valamilyen számomra egzotikusnak tűnő CAN protkollt hardveresen támogató procin kívül nem találtam másmilyet, ami megfelelt volna annak a kritériumnak, hogy hagyományos SO tokja legyen, a többi tiny, meg túl kevés lábú, mivel az is lényeg volt, hogy minnél kevesebb egyéb áramkör kelljen hozzá!

Na a kód az enyém is hasonló, az org 0x13 értem mire van, hogy a vektortábla után kezdődjon a kód, mindenképp, na ez az enyémben nincs benne! köszi, tegnap jobban kapóra jött volna mert ahogy írtam azóta sikerült működésre bírnom, de azért kösz! A többi tccr1b ben lévő biteket én nem bántottam elvileg az én általam használt megszakítást azok nem befolyásolják, de gondolom jobb ha be vannak állítva, a végleges kódba lehet belírom...
(#) zombee válasza abcdabcd hozzászólására (») Szept 23, 2011 /
 
Próbáld a Compatel-t és Elektro Kontha üzleteket! Esetleg HEStore, hogy ő se maradjon ki...
"beállított bitek a TCCR1B-ben" - ha látni hogy 0 van a << után, akkor olyan mintha ott se volna.
Csak a szemléletesség kedvéért tettem be.

Egy korábbi kérdésre:
A WGM11, CS10, stb. makrók csak definíciók, azt jelölik hogy hányadik biten vannak, magát a regisztert nem!
Így persze hogy nem okoz hibát ha mondjuk az OCR1AL-be töltöd az 1<>>>>
(#) abcdabcd válasza zombee hozzászólására (») Szept 23, 2011 /
 
Ja, azt nem figyeltem miket írtál az '...A' regiszterbe
A konthában most néztem ott se láttam SO tokos megát, meg az mscbp a magyar forgalmazó eddig akármilyen avr-t vettem ott volt a legolcsóbb... meg ha valamit a forgalmazónál nem lehet kapni arra lehet nem érdemes számítani, hogy sok helyen lehet kapni, ha kellene később még belőle...
(#) zombee válasza zolee1209 hozzászólására (») Szept 23, 2011 /
 
Tapasztalt ember vagy, csodálom hogy ilyet megkérdezel. Engem egy ilyen kérdésért majdnem megbuktattak mérés2-n.
De én mondok jobbat is! Az interrupt végén ha nem "reti" lenne hanem sima "ret" akkor igazad is lenne!
Ilyet már csináltam kezdőkoromban amikor bajos lett volna ha az interrupt után újra lefutna valami.

Tessék megnézni a "reti" jelentését!
Idézet:
„The I-bit is automatically set when a Return from Interrupt instruction – RETI – is executed.”
(#) zombee válasza abcdabcd hozzászólására (») Szept 23, 2011 /
 
Már értelek. Mindenképp SO tokos kell. Valóban, a megák esetében a "legnagyobb" SMD is TQFP tokozású.
Marad a DIP tok, de valahogy kezdem érezni hogy az Neked nem lenne jó.

Anno(kb. 2 éve) én is idegenkedtem a TQFP tokoktól, nehéz rá tervezni, maratni, forrasztani, javítani, stb.
Érdekes módon, ma már minden programozóm lelkét ilyen alkatrészek adják, és nem idegenkedem
a forrasztásuktól sem. Megtanultam rendesen áramkört tervezni, bár még mindig egyoldalasokkal dolgozom.
Épp a napokban terveztem és marattam ki egy GSM modul + ATMega128 panelt, ez már rutin volt számomra...
(#) zolee1209 válasza zombee hozzászólására (») Szept 23, 2011 /
 
Tapasztaltnak azért nem mondanám magam, sok dolog (alap),amit még nemtudok. Mint példáull ez is. Valószínűleg még a kezdőkorból maradt meg, hogy szimulátorban, illetve a processzoron is csak úgy akart működni a megszakítás, ha visszatérés előtt adtam neki egy sei-t... Azóta mindig teszek... Majd ha lesz időm, akkor ránézek erre újból. És ha igazad lesz (miért ne lenne? ), akkor minden bizonnyal felszabadul néhány mikroszekundum abban a pár programban,amit eddig írtam... : D
(#) varttina hozzászólása Szept 25, 2011 /
 
Sziasztok!
Atmega64-hez tervezek fejlesztőpanelt, és a overline{PEN} kivezetésnél elakadtam. Ha jól értelmezem, programozásnál GND-re kell kötni. Mehet közvetlen a GND-re, vagy kell közé valamilyen ellenállás? Programozás után maradhat a GND-n?
(#) zombee válasza varttina hozzászólására (») Szept 25, 2011 /
 
Belső felhúzó ellenállással rendelkezik, és nem értelmezed jól, azt szabadon kell hagyni.
Ha indításkor a földpontra van kapcsolva, programozási módba kapcsolja az AVR-t, más szerepe nincs.
(#) almacsutka hozzászólása Szept 25, 2011 /
 
sziasztok!

Megépítettem ezt a kapcsolást:rs232 programmer
Sajnos nem működik. A probléma az lehetett, hogy a bc549-et rosszul kötöttem be.
Kijavítottam a tranzisztor bekötését de azóta (és előtte is ez a hibaüzenet: "Device missing or unknown device (-24)
Ettől elszálhatott az atmega 8-am? Azért nem tudom már programozni, vagy valami más hiba lehet?
Probe-ra "ok"-t ír. Stabil 5v-ot kap a kapcsolás.
Választ előre is köszönöm!
(#) dB_Thunder válasza almacsutka hozzászólására (») Szept 25, 2011 /
 
Használsz hozzá külső 5 voltos tápot?
(#) varttina válasza almacsutka hozzászólására (») Szept 25, 2011 /
 
Szia!
Elsőre nekem sem működött a kapcsolás. A cikkben leírt módon próbáltam összeépíteni. Ahogy belegyömöszöltem az aprócska próbanyák darabot a csatlakozó házába, az egyik vezeték megszakadt. Amikor rámértem persze érintkezett, így jónak mutatkozott, viszont összerakva ismét megszakadt. A jelenlegi verziómhoz főként SMD alkatrészeket használtam, a BC549-et BCW66-tal helyettesítettem, így már működik.
A fordítva bekötött tranyó miatt szerintem nem mehetett tönkre az AVR, esetleg nem reset-elt.
Ha jól emlékszem első az programozás előtt a beállításoknál kalibrálni kellett az időzítést. Sima Ponyprog-gal nem bírtam működésre bírni, csak Ponyprog2000-rel.
(#) Robi98 hozzászólása Szept 25, 2011 /
 
Sziasztok!
Van egy kis gond.
Most készíteném el életem 3.programozását egy ATmega8-as ic-vel.A kódot normálisan, hiba nélkül megírtam, ami volt kijavítottam, a gond valahol a Fuse-biteknél van.Amikor megnyitom a Fuse biteket kijön a szokásos duma, hogy az ISP freki az órajel negyedétől kisebb legyen.Ez az üzenet bár akkor is kijön, ha valami nem érintkezik a próbapanelen; bár ezt kizártam, mert amikor az üzenet kijön, a LED-ek amik a programozólábakra vannak kötve felvillannak.Szóval a hiba a szoftverben van.Észrevételeim, hogy az órajel (fuse) alapértelmezettként a 16Mhz-es kristályon van.Az optimalizációs órajel pedig természetesen 1Mhz-en van.
Azért csináltam így mert amikor ATTiny45-öt programoztam az órajelhez hozzá se kellett nyúlnom mert az alapértelmezettként 8Mhz-en volt; és a CKDIV8 segítségével 1Mhz-re osztottam.Most is így akarom, de még CKDIV8 sincs.Az ISP freki meg kisebb a negyedénél.
Kérlek segítsetek rajtam mert antalbajt fogok kapni. Köszönöm!
(#) Ricsi89 válasza Robi98 hozzászólására (») Szept 25, 2011 /
 
Akkor rakni kellene a kontrollerre egy kvarcot, mert lehet, hogy külső órajelre van állítva és így várhatod, hogy beinduljon.
(#) Robi98 válasza Ricsi89 hozzászólására (») Szept 25, 2011 /
 
Már megépítettem a Topiféle órajel generátort 4Mhz-es kvarccal, de azzal sem indul be.Vagy csak simán egy 8Mhz-es kvarcot használjak?
(#) Ricsi89 válasza Robi98 hozzászólására (») Szept 25, 2011 /
 
Csak simán kvarc és két 22pf-os kondit használj.
(#) Robi98 válasza Ricsi89 hozzászólására (») Szept 25, 2011 /
 
Köszönöm!8Mhz-es jó lesz?
(#) Ricsi89 válasza Robi98 hozzászólására (») Szept 25, 2011 /
 
Jó lesz.
(#) balu87 hozzászólása Szept 26, 2011 /
 
Hali!

A problémám azzal lenne, hogy nem sikerül logikai változót (bool-t) deklarálni. Ahogy kivettem a keresgetések során a header fájlt kellene include-olnom, becsatolnom, azonban ekkor úgy ahogy van lefagy az AVR stúdió és a projekt is meghal - újra létre kell hoznom. Ha jól sejtem, akkor vmiért nem éri el, a WINAVR fájlai között pedig megtaláltam. Másik kell hozzá, vagy meg kell valahogy adni hol találja, esetleg máshogyan kell megoldani a problémát?

Köszi a válaszokat!

Balázs
(#) Robi98 válasza Ricsi89 hozzászólására (») Szept 26, 2011 /
 
Megpróbáltam, de mindig ugyanaz az üzenet jön ki, és CKDIV8 hiányában nem tudom leosztani 1Mhz-ere a 8Mhz-es frekit.
(#) UbiLinux hozzászólása Szept 27, 2011 /
 
Összegányoltam ezt egy próbapanelon, megy is rendesen:

Bővebben: Link

Aztán lenyomtattam rendesen, smd alkatrészekkel és valami olyan hülye hibát generál, hogy a hajam tépem. Ha bedugom az ethernet csatit, leáll az ENC oszcillátora. Agyonmértem az ethernet csati lábai között, szemmel nem látható zárlatot keresve, de semmi. Mindent agyonhidegítettem, a tápfeszen kerestem valami röccenést a csatlakoztatás pillanatában, de sziklakemény, a szeme sem rebben, mikor bedugom a csatit. Semmi nem melegszik, ami életjel van, ott tiszta logikai szintek, semmi összeakadára utaló jel. (Meg hát akkor hal meg a dolog, mikor az ethernet csatit csatlakoztatom. Már nincs ötletem, mit mérjek még. Illetve egy dolog gyanús: amit kaptam smd ethernet csatit, http://w3.hdsnet.hu/evoran/tmp/TRJ19201.pdf. abban 15 ohm-os ellenállások vannak. Lehet, hogy az ENC nem bírja kihajtani...? Akkor mire jó ez a csati?
(#) Reggie válasza UbiLinux hozzászólására (») Szept 27, 2011 /
 
Az a 15 Ohm semmit sem befolyasol, csak akkor szamitana, ha lenne kozos modusu jel a vezeteken, de a te alkalmazasodban ez biztos nem fordul elo. (PoE)

Amugy a megadott URL-en sokfele csatinak van egy kozos doksija, kene a tipusszam is.
(#) UbiLinux válasza Reggie hozzászólására (») Szept 27, 2011 /
 
A típus az, ami a link nevében van, a TRJ19201.
(#) Reggie válasza UbiLinux hozzászólására (») Szept 28, 2011 /
 
Erdekes problema. Esetleg azt meg tudod nezni, hogy nem teljes reset tortenik? Irjal valamelyik regiszterbe egy erteket (pl. a led kijelzes tipusat valtoztasd meg) es nezd meg, hogy a bedugas utan a reset utani erteket veszi-e fel vagy az marad amit te beirtal.
(#) kiborg válasza sikolymester hozzászólására (») Szept 28, 2011 /
 
Szia!

Bluetoothra tudsz példát mondani, hogy milyet lenne érdemes? Zigbee szintén zenész.
Üdv Kiborg
(#) TavIR-AVR válasza kiborg hozzászólására (») Szept 28, 2011 /
 
Ezek transzparens soros portok
(#) kiborg válasza TavIR-AVR hozzászólására (») Szept 28, 2011 /
 
Nekem olyan kellene, amivel kommunikációt lehet megvalósítani két AVR között, anélkül, hogy foglalkoznom kellene a rádióval(ki-be kapcsolás), kódolgatni(433MHz - Manchester,stb..), hanem csak simán van egy RX és TX-em, és ha egyiken beküldöm, akkor kijön a másikon, nem téved el és nem zavarja össze vissza más ketyere.
Az ok , hogy transzparens, meg hogy soros port, de mitől mozog ? Szóval mitől fognak egymással (ÉS NEM PC-vel) kommunikálni ?
Következő: »»   361 / 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