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   264 / 840
(#) Sir-Nyeteg válasza Possessed hozzászólására (») Szept 15, 2010 /
 
Nem ismeri fel az AVR-t, avagy nincs csatlakoztatva. Tápot kap a programozandó AVR? Kábele nem túl hosszú? Kommunikációs frekvencia nem túl magas?
(#) zolee1209 válasza Possessed hozzászólására (») Szept 15, 2010 /
 
Ha a programozó "kifagy", világít folyamatosan a LED, akkor elég kihúzni az USB-ből, a kapcsolatot megszüntetni, majd vissza az egész... Ritkább esetben az AVR Studiot is be kell zárni, de teljes restart még nálam nem volt szükséges.
(#) Possessed válasza Sir-Nyeteg hozzászólására (») Szept 15, 2010 /
 
Amennyiben a "csatlakoztatva" azt jelenti, hogy a megfelelő lábai a programozóra vannak kötve, akkor csatlakoztatva van. A programozandó AVR az USB-ről megkapja a tápot (a megfelelő jumper a helyén van). Az USB kábel kb. 1,5-2m a programozót az AVR-rel összekötő valamivel kevesebb mint 1m. A kommunikációs frekvenciát a minimumra állítva is jelentkezett a hiba.
(#) zolee1209 válasza Possessed hozzászólására (») Szept 15, 2010 / 1
 
Szia!

Az a majdnem 1 méter a programozó és az AVR között nagyon sok! Ez érdekes helyzet volt nálam... Régebben WIN7-et használtam, az alatt a programozó stabil volt, fél méteres (!) volt a szalagkábel a programozó és AVR között. Utána átmentem XP-re, nem akart menni a programozás. Le kellett csapnom 15 centire a szalagkábelt, és még így is kifagyogat...
(#) huba válasza zolee1209 hozzászólására (») Szept 15, 2010 /
 
Velem egy attiny2313 szórakozott. Általában mindig bajom volt ezzel a fajjal, de valahogy felcsúszott a program. Eleinte kontakthibára gyanakodtam, mivel ha fogtam a vezetéket működött tökéletesen. Végül az arasznyi szalagkábel alufóliával való betekerése hozta meg a javulást.
Azt sem zárom ki hogy a buffer ic-m haldoklik, de elég körülményes cserélni.
(#) SZAsza21 hozzászólása Szept 16, 2010 /
 
Sziasztok! olyan kérdésem lenne , hogy avrstudioban hogyan kell külső 4mhz-es oszcilátort beállítani atmega8-hoz! valaki tudna segiteni igazából a mellékelt rajzhoz kellene ha ez segít. elöre is köszönöm!

schema.png
    
(#) Fizikus válasza SZAsza21 hozzászólására (») Szept 16, 2010 /
 
Az alabb linkelt oldal legaljat nezzed meg:
Bővebben: Link
(#) cape-t válasza luxmanpower hozzászólására (») Szept 16, 2010 /
 
Szia!

Az a bajom, hogy a .hex fájl is túl nagy...
Idézet:
„Ha programozás módban a .hex fájlt töltöm be, az alábbi üzenetet kapom:
"Fill too large to fit in buffer"”
(#) luxmanpower válasza cape-t hozzászólására (») Szept 16, 2010 /
 
Én kipróbáltam nálam működik! Töltsd le a hex-et újra valahova ahol nincs más. indítsd el a bascom programozóját, program->send to chip-> manual program

Hibaüzenetekre ok, majd van egy olyan gomb hogy "load file into buffer" ott kiválasztod ezt a hex-t, és szépen be is tölti, anélkül hogy morogna. Ügyelj arra hogy a kiválasztott chip attiny2313 legyen, +a fuse bitek beállítására
(#) Sick-Bastard hozzászólása Szept 16, 2010 /
 
Üdv!

Programozás terén kérnék egy kis és/vagy egy nagy segítséget.

A kis segítség alatt azt értem, hogy tudnátok olyan könyvet ajánlani amiből meg tudnám tanulni az avr programozás alapjait? C/C++ nyelven szeretném megtanulni, lehetőleg magyar könyvből, de az angol sem a világ vége.

Vagy a legnagyobb segítség az lenne, ha valaki rám szánná szabadidejének egy részét és segítene a program megírásában.

Az elképzelés megvan, a program vázlata is, meg a hozzá tartozó nyáké is.

ATmega8535ös ICt használnék erre a célra, aminek az lenne a feladata, hogy az akváriumaimat vezérelje. Első lépésben:
- hőmérséklet mérése legalább 1 vagy akár 4 hőérzékelő segítségével és ennek átlagolása
- víz hűtése vagy fűtése egy peltier elem segítségével az átlag hőmérséklet alapján (lényegében 2 db relé vezérlése)
- 6-8db 230VAC konnektor (megint csak relék) külön-külön! kezelése(shift registerrel 74HC595-öt javasolták), amiket naponta 2x ki- és be lehet kapcsolni
- hőmérsékleti adatok mentése SD kártyára
- a beállítások nyomógombok segítségével történő beállítása (melyik relé/konnektor mikor kapcsoljon ki/be, milyen hőmérséklet felett vagy alatt hűtsön vagy fűtsön... stb.)
- alap adatok 128x64es LCDn megjelenítése
...

A többit nem is írom le, az még ráér

SB
(#) vzoole válasza Sick-Bastard hozzászólására (») Szept 16, 2010 /
 
(#) zolee1209 hozzászólása Szept 17, 2010 /
 
Sziasztok!
A segítségetek kérném I2C ügyben. A master egy mega32, a szolga jelen pillanatban egy TLC59116. Sajnos a kommunikáció ott elbukik, hogy a slave adress kiküldése után a státusz kód nem egyezik az elvárttal, így elmegy "error"-ra. Tanácstalan vagyok, miért nem hajlandó ez menni, mert már volt dolgom I2C-vel... Bekötés sokadik átnézés után is helyesnek tűnik, a slave adress is jó elvileg. Már IC-t is cseréltem, mert hibásnak véltem az IC-t. De a helyzet változatlan. Ami miatt nem értem, hogy miért nem megy, az az, hogy egy MAX6964-es IC-vel tökéletesen működött a kommunikáció, csak a slave adress volt különböző. Tudtok valami tippet mondani, miért nem megy, nem mehet a kommunikáció?!

TLC59116
MAX6964
(#) zolee1209 válasza zolee1209 hozzászólására (») Szept 17, 2010 /
 
Akkor válaszolnék a saját kérdésemre...
Lefelejtettem a RESET lábról a felhúzó ellenállást! Mostmár működik szépen...
(#) trudnai válasza zolee1209 hozzászólására (») Szept 18, 2010 /
 
Hat igen, erre szoktak mondani, hogy ha csatoltad volna a kapcsolast, akkor (hamarabb) kaphattal volna valaszt ra Viszont orulok, hogy rajottel sajat magad, ezt sajnos egyre kevesebben mondhatjak el magukrol manapsag az emberek.
(#) zolee1209 válasza trudnai hozzászólására (») Szept 18, 2010 /
 
Kapcsolás nem is készült hozzá, két IC, közötte két vezeték... Nem tudom, hogy tudtam így elsiklani felette, és mikor rájöttem, hogy csak ennyi volt a baja, hát nem tudtam, örüljek-e, vagy sírjak. Tegnap délután 4-5 órától ezzel kínlódtam, és láthatod, hogy 10 után jöttem rá, mi volt a gebasz. Leginkább az SMD IC cseréjét sajnálom, de majd legközelebb figyelmesebb leszek!
(#) trudnai válasza zolee1209 hozzászólására (») Szept 18, 2010 /
 
A kapcsolas sohasem ket IC kozott ket vezetek Pl hidegito kondiknak kellene ott lennie, ugye a reset felhuzasanak, ill specifikalni kellene a tapot is. Meg hat nem tudom mit faragsz, de ha csak ket IC van benne es nincs sem bejovo sem kimeno jel akkor nem tudom mi a celja az aramkornek? Tehat a be/kimeno jeleket is specifikalni kell, jelszintek, terheles esetleg, varhato jel/zaj viszonyok stb.
(#) Axel hozzászólása Szept 18, 2010 /
 
Sziasztok!

AVR-rel kezelek egy 3x4-es bill.-t. Próbapanelon minden hibátlanul működött most viszont egy kis nyákot készítettem amire a szükséges ellenállások és csatlakozók lettek helyezve. (Gyufásdoboznyi méretű nyák, a jobb helykihasználás miatt lesz külön a főpaneltől)
Mármost a probléma következő: a row1 azaz az első sor billenytyűi vagyis az 1,2,3 az istennek sem akar működni. Egyszerűen nem érzékel a proci semmit. Ha viszont a megfelelő vezetékeket lehúzom a bill.ről és összeértetem őket akkor megtörténik a sikeres bevitel. Rámértem már a billentyűzetre is szakadásvizsgálóval és ott nem volt gond mert sípolt, a vezeték sem szakadt. Ez csak az első sor esetében van így minden más hibátlan. Próbáltam cserélgetni a vezetékeket de semmi. Elvileg minden jó de gyakorlatilag nem történik semmi A vezeték az jó hosszú, vagy 30 centi de a többi esetben ez nem okoz hibát. Kicsit furcsa lehet a kérdés de végső elkeseredésemben írtam mert egész délelőtt nem jöttem rá a hibára. Bármilyen jó tanácsot szívesen fogadok.
(#) boomerang hozzászólása Szept 18, 2010 /
 
Sziasztok !

Szeretnék egy Atmega 8 kontrollerrel soros kommunikációt megvalósítani a laptopommal. A MAX232-es ic-t néztem ki, de ugyebár a laptopon nincsen az ehez kellő port. A kérdésem az lenne, hogy az USB rendszerű FT-232-es ic ugyanúgy működne az AVR-rel ?
Én úgy értelmezem az adatlapot hogy igen, de azért a nálam tapasztaltabb kollegák segítségét szívesen elfogadom.

Köszönöm szépen.
Balázs
(#) zolee1209 válasza trudnai hozzászólására (») Szept 18, 2010 /
 
Végső soron igazad van, én vettem felületesen a dolgokat. Egyébként amiket írtál, azok megvannak a valóságban. Valószínűleg a "lazaságomnak" köszönhető, hogy ezekről megfeledkeztem kapcsolási rajz szinten, mivel ezeket én természetesnek tartom, hogy szükségesek. Aztán most úgy tűnik, ebbe a hibába estem bele... Még egyszer köszönöm, hogy írtál, látszik közöttünk, van még mit tanulnom, bármennyire is gondolom, hogy már tudok eleget...
(#) trudnai válasza Axel hozzászólására (») Szept 18, 2010 /
 
Jo lenne latni hogy van bekotve az a billentyuzet matrix, hogy lehessen valami ertelmeset modani ra. Nyilvan elsosorban az egesz sorhoz tartozo vezetek kornyeken keresnem a hibat...
(#) trudnai válasza boomerang hozzászólására (») Szept 18, 2010 /
 
Igen, kell mukodnie...
(#) boomerang válasza trudnai hozzászólására (») Szept 18, 2010 /
 
Én is így látom... Elvégre az Rx és Tx lábak mindkét IC-nél univerzálisan megvannak, mást nem is kell az AVR-hez csatlakoztatni, eztán már az ic végzi a munkát... csak ez USB-re dolgozik.

Köszönöm a segítséget.
(#) Axel válasza trudnai hozzászólására (») Szept 18, 2010 /
 
Szia!

Mellékeltem egy képet a primitív panelről.
Kiosztás felül:
PIN1: Col1
PIN2: Col2
PIN3: Col3
PIN4: Row1
PIN5: Row2
PIN6: Row3
PIN7: Row4
PIN8: N.C.
PIN9: Vcc (+5V)

Az első hét az mcu portjaira csatlakozik.

Aluról pedig megy a billentyűzethez a megfelelő sorrendben.

A forrpontok közt ellenállások vannak 4 db 10kohm-os és 3 db-5-ös. Előbbi a stabil logikai szintre való felhúzást (ha nincs lenyomva semmi) utóbbi csak sima áramkorlátot biztosít gomblenyomás esetén.
Érdekes, hogy néha működik az egyes gomb néha nem (2 és 3 eddig soha).
(#) fejlesztő válasza boomerang hozzászólására (») Szept 18, 2010 /
 
Az FT232RL -t javasolom, mert könnyű összehozni az ATmega -val.

http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf

A számítógép felől virtuális soros portként látszik, a driver telepítése után. Ha kis áramfelvételű (max. 500mA) az atmega -s paneled fogyasztása, akkor az USB portról mehet a tápellátás .

http://www.ret.hu -nél 1278Ft/db - van irodájuk itt Bp -is.

Ha megvan a pontos kapcsolási rajzod az atmega -s panelhez, és szükséged van az USB kapcsolat konkrét megvalósítására, akkor írj.
(#) trudnai válasza Axel hozzászólására (») Szept 18, 2010 /
 
Szia, Egy kapcs rajz jobb lenne, mert ebbol nem latom mi hova megy... Olyan rajz lenne jo ahol az AVR is benne van termeszetesen, mert nem az az erdekes itt, hogy a billentyuzet mikent van rakapcsolodva (kulon panel vagy sem). Itt valoszinuleg meg jel/zaj viszony sem oriasi tehat ez a resze most elhanyagolhato.
(#) Possessed válasza zolee1209 hozzászólására (») Szept 18, 2010 /
 
Sziasztok!

Köszönöm a múltkori segítséget. A kábel hosszát jelentősen lecsökkentettem (kb 5cm) és így már sikeresebb volt a kapcsolat az AVR és a számítógép között.
Azonban újabb problémák léptek fel a használat során.
Már a kommunikáció sem volt mindig tökéletes, pl a read signature parancs is sokszor csak egymás után többedszeri próbálkozásra sikerült hibaüzenet nélkül.
De végülis sikerült programot tölteni rá. A hardveres rész jól működik:
Egy 7 szegmenses kijelzőt vezérlek vele. Tesztprogramban az összes szegmens felvillantása sikerrel történt.

Probléma a következővel volt:
Feltöltöttem egy 0-tól 9-ig számokat kiíró programot. Ez a mai nap folyamán már egyszer működött. Ezután töltöttem rá mást. Majd ismét visszatöltöttem rá ezt.
Ekkor már nem akart jól működni. Folyamatosan a 0 villant fel.
Nehéz pontosan megfogalmazni a problémát, mert én sem teljesen értem miért csinálja.

Az alábbi kód jól működik:
  1. #ifndef F_CPU
  2. #define F_CPU 8000000
  3. #endif
  4. #include <avr/io.h>
  5. #include <util/delay.h>
  6. void m_delay_10ms(unsigned char val) {
  7.                  unsigned char i;
  8.                  for(i=0;i<val;i++) {
  9.                      _delay_ms(10);
  10.                  }
  11.       }
  12. int main(void) {        
  13.   DDRA = 0xFF;
  14.                 PORTA = 0x00;    
  15.                 while(1) {
  16.    m_delay_10ms(50);
  17.    PORTA = 0x7F;
  18.    m_delay_10ms(50);
  19.    PORTA = 0x00;
  20.                  }
  21.                  return 0;
  22.       }


A következő már nem: csak a 8-as számjegy villan fel (7F kimeneti kombináció)
  1. #ifndef F_CPU
  2. #define F_CPU 8000000
  3. #endif
  4. #include <avr/io.h>
  5. #include <util/delay.h>
  6. void m_delay_10ms(unsigned char val) {
  7.                  unsigned char i;
  8.                  for(i=0;i<val;i++) {
  9.                      _delay_ms(10);
  10.                  }
  11.       }
  12. int main(void) {        
  13.   DDRA = 0xFF;
  14.                 PORTA = 0x00;    
  15.                 while(1) {
  16.    m_delay_10ms(50);
  17.    PORTA = 0x7F;
  18.    m_delay_10ms(50);
  19.    PORTA = 0x00;
  20.    m_delay_10ms(50);
  21.    PORTA = 0x6F;
  22.    m_delay_10ms(50);
  23.    PORTA = 0x00;
  24.                  }
  25.                  return 0;
  26.       }


Mint mondtam ma már ennél több számot tartalmazó program is működött megfelelően.
Ha rátöltöm a szegmenseket felvillantó programot az megint jól működik, pedig méretileg nagyobb. (felépítés ugyanez, csak kimenetek mások)


Néhány adat:
AVR ATtiny24-et használok, ilyen programozóval.
AVR studio 4.18 SP2vel

Akinek van ötlete, hol lehet a hiba kérem jelezze. Előre is köszönöm: Possessed
(#) luxmanpower válasza Possessed hozzászólására (») Szept 19, 2010 /
 
EZ a rész elég érdekes...

  1. void m_delay_10ms(unsigned char val) {
  2. unsigned char i;
  3. for(i=0;i
  4. _delay_ms(10);
  5. }
  6. }



Itt lemaradt a parancs vége for(i=0;i
(#) Ricsi89 válasza luxmanpower hozzászólására (») Szept 19, 2010 /
 
Nem lemaradt, csak nem tette kód részbe és a fórum levágta, mert nem tetszett neki.
(#) trudnai válasza Ricsi89 hozzászólására (») Szept 19, 2010 /
 
Tanulsag: Tessek a 'Kod' gombot hasznalni ha kodot szurunk be
(#) Robi98 hozzászólása Szept 19, 2010 /
 
Sziasztok!
Lenne egy nagy kérdésem.
Nem tudom,hogy nevezik azt a módot amikor a mikrokontroller felprogramozása után a programozót eltávolítva is működik az áramkör és azt a módot amikor csak úgy működik az áramkör ha a programozóval keresztül össze van kötve a számítógéppel.

A kérdés lehet, hogy nagyon egyszerű,de bármilyen válasznak is nagyn örülnék.

Előre is köszi.
Következő: »»   264 / 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