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   432 / 840
(#) oregharcos hozzászólása Ápr 2, 2012 /
 
Sziasztok!
Elnézést kérek, mert a (#1201395)-ben nem jó kódot illesztettem be!
Előre bocsájtom, hogy nincs nagy gyakorlatom a kódolásban. Különösen vonatkozik ez a C-re.
Régebben a PIC-el foglalkoztam az MPLab-al.
Az AVR-el most ismerkedek.
Sikerült azt a kódot lefordítani amit fentebb beillesztettem.
Szeretnék továbblépni, a Topi által alkotott csengőt
szeretném úgy megoldani, hogy csak egy dallam szóljon. Ha sikerül, akkor megpróbálok egy olyan dallamot csinálni, amire szükségem van.
Letöltöttem a firmware.zip-et. Az nem tiszta, hogy a main.c-t betöltve a winAVR-be, nem fordítja le, hiába próbálom a Makefile-t átállítani, hibát ír ki.
Megpróbáltam AVRStudioban is de ott sem megy.
A kód és a leírás itt található:Bővebben: Link
Ezt a kódot sem bírom lefordítani.
  1. //-----------------------------------------------------------------------------
  2.     u08 PlayMelody(u08 Melody_ID)
  3.     //-----------------------------------------------------------------------------
  4.     {
  5.      
  6.      
  7.       volatile u16 duration = 0;
  8.       volatile u08 octave = 0;
  9.       volatile u16 note = 0;
  10.       volatile u08 van_nyujt = 0;
  11.       volatile u08 ch;
  12.      
  13.      
  14.      gActMelody = Melody_ID;
  15.      // Valós dallam index?
  16.      if (Melody_ID >= LAST_MELODY)
  17.      {
  18.       // Ha nem, akkor reset
  19.       Melody_ID = 0;
  20.       ChrIndex = 0x00;
  21.       gActMelody = 0;
  22.      }
  23.      
  24.      
  25.      // Egyesével végig...
  26.      if(ChrIndex == 0) {
  27.        //ha most indul
  28.        gTempo = GetByteFromData(ChrIndex++);
  29.      }
  30.      
  31.      
  32.      ch = GetByteFromData(ChrIndex++);
  33.      
  34.      
  35.      duration = ch & 0b00111111;
  36.      van_nyujt = ch & 0b10000000;
  37.      
  38.      
  39.      ch = GetByteFromData(ChrIndex++);
  40.      note = pgm_read_byte(Notes+(ch & 0b00001111));
  41.      
  42.      
  43.      octave = (ch & 0b11100000)>>5;
  44.      
  45.      
  46.         PlayNote(note, octave, duration);
  47.      
  48.         // Vége a muzsikának
  49.         if (GetByteFromData(ChrIndex) == 0)
  50.         {
  51.           ChrIndex = 0x00;
  52.           return 1;//igen végzett
  53.         }
  54.      return 0;//nem, nem végzett
  55.     }


Ez nem tartalmazza a dallamok kódját, ezért még a
melodies.c-t is hozzáfűztem, de sikertelen a forditás.
Arra szeretnélek megkérni benneteket, hogy írjátok meg, hogy melyik file-t próbáljam berakni a fordítóba?
Segítségeteket előre is köszönöm!
(#) Moderátor hozzászólása oregharcos hozzászólására (») Ápr 2, 2012
 
Most is a kód beillesztés gombot kellett volna használni!
A [code = c] nek a zárása nem [ / off ], hanem a [ / code ]
(#) oregharcos válasza (») Ápr 2, 2012 /
 
!gazad van én az off-ot használtam. Elnézést!
Tudnál nekem ebben segíteni, hogy csináljam meg az egy dallamos AVR-t?
Köszönettel!
(#) oregharcos válasza (») Ápr 2, 2012 /
 
Nem is tudom, hogy miért nem a nyitó kódot zártam le.
Így biztos jó lesz.
  1. //-----------------------------------------------------------------------------
  2.     u08 PlayMelody(u08 Melody_ID)
  3.     //-----------------------------------------------------------------------------
  4.     {
  5.      
  6.      
  7.       volatile u16 duration = 0;
  8.       volatile u08 octave = 0;
  9.       volatile u16 note = 0;
  10.       volatile u08 van_nyujt = 0;
  11.       volatile u08 ch;
  12.      
  13.      
  14.      gActMelody = Melody_ID;
  15.      // Valós dallam index?
  16.      if (Melody_ID >= LAST_MELODY)
  17.      {
  18.       // Ha nem, akkor reset
  19.       Melody_ID = 0;
  20.       ChrIndex = 0x00;
  21.       gActMelody = 0;
  22.      }
  23.      
  24.      
  25.      // Egyesével végig...
  26.      if(ChrIndex == 0) {
  27.        //ha most indul
  28.        gTempo = GetByteFromData(ChrIndex++);
  29.      }
  30.      
  31.      
  32.      ch = GetByteFromData(ChrIndex++);
  33.      
  34.      
  35.      duration = ch & 0b00111111;
  36.      van_nyujt = ch & 0b10000000;
  37.      
  38.      
  39.      ch = GetByteFromData(ChrIndex++);
  40.      note = pgm_read_byte(Notes+(ch & 0b00001111));
  41.      
  42.      
  43.      octave = (ch & 0b11100000)>>5;
  44.      
  45.      
  46.         PlayNote(note, octave, duration);
  47.      
  48.         // Vége a muzsikának
  49.         if (GetByteFromData(ChrIndex) == 0)
  50.         {
  51.           ChrIndex = 0x00;
  52.           return 1;//igen végzett
  53.         }
  54.      return 0;//nem, nem végzett
  55.     }

Minden jót!
(#) sgt válasza kiborg hozzászólására (») Ápr 2, 2012 /
 
Nem. Én is jobban preferálom a C-t, mert jobban modulárisabb, illetve kényelmesebb. De néha elkap a hév, és csinálok valami egyszerű programot asm-ben (meg hogy ne felejtsem el). Nagyon jó kis agytorna . Csak amikor 100+ utasítás van, akkor nehezebb a szimulálás, és nehezebben átlátható a sok jmp miatt.
(#) kiborg válasza kiborg hozzászólására (») Ápr 3, 2012 /
 
Senki ?
(#) TavIR-AVR válasza boomerang hozzászólására (») Ápr 3, 2012 /
 
A 7805 lábán ott a 2x100nF kondi?
BOD bekapcsolva? A chip MCUSR regisztere mit mond, mi volt a RESET oka?

A resetlábon igaz ott a 100nF+10k kombináció?

Az AVR-en is ott van a100nF kerámia szűrő?
Vcc és VccA is be van kötve?
(#) TavIR-AVR válasza kiborg hozzászólására (») Ápr 3, 2012 /
 
Arduino és Bascom kóddal találkoztam....
(#) boomerang válasza TavIR-AVR hozzászólására (») Ápr 3, 2012 /
 
Minden amit felsoroltál rajtvan. Azóta észrevettem, hogy nem is resetelődik, hanem a főmenüből visszaugrik az üdvözlőképernyőre. Reseteléskor ledeknek kell felvillanniuk, ilyenkor meg nem. De ha kiválasztok egy programot, akkor futás közben már stabil. Ötlet ?
(#) kiborg válasza TavIR-AVR hozzászólására (») Ápr 3, 2012 /
 
Azokkal én is De én ASM-ben szeretném életre kelteni.
Hiába próbálom applikálni a c-ben megírt programot, nem akar sikerülni működésre bírni
BASCOM kódot tudnál linkelni ? Megpróbálom azzal is összehasonlítani.
(#) sgt válasza boomerang hozzászólására (») Ápr 3, 2012 /
 
Mi van még a tápon a MCU-n kívül?
(#) oregharcos válasza sikolymester hozzászólására (») Ápr 3, 2012 /
 
Szia Sikolymester!
Ezen a linken nem talál a google semmit.
(#) oregharcos válasza sgt hozzászólására (») Ápr 3, 2012 /
 
Szia Sgt!
Küldhetek egy privát levelet?
(#) blackdog hozzászólása Ápr 4, 2012 /
 
Sziasztok!

Van egy 4 soros LCD kijelzőm. 2 soros üzemmódba működik. 4bit/2sor: 0b00101000
Hogyan tudom 4bit/4sor üzemmódban inicializálni?
(#) kiborg válasza blackdog hozzászólására (») Ápr 4, 2012 /
 
Szia!
Nem kell külön abban a módban inicializálni(illetve nincs is olyan mód), elég ha megkeresed az adatlapjában hogy melyik címre kell írni a karaktert ahhoz, hogy a 3. és 4. sorban jelenjen meg.
Üdv Kiborg
(#) blackdog válasza kiborg hozzászólására (») Ápr 4, 2012 /
 
Az LCD egy bontott vezérlőből származik nincs meg a típusa. Annyit látok rajta, hogy KS0066 IC vezérli.
Ez elvileg kompatibilis a HD44780 IC-kkel.

ks066.pdf
    
(#) kiborg válasza blackdog hozzászólására (») Ápr 4, 2012 /
 
Ha kompatibilis, akkor tedd ahogy mondtam.
Címezd meg a 4.sor első karakterét.
0x00 cím az első sor első karaktere,
0x40 cím az második sor első karaktere,
0x14 cím az harmadik sor első karaktere,
0x54 cím az negyedik sor első karaktere
Kb ennyi a lényeg.
Üdv Kiborg
(#) blackdog válasza kiborg hozzászólására (») Ápr 4, 2012 /
 
Egy dolgot nem értek a KS0066 adatlapján:
Power Sopply Voltage: +5V +-10%
Supply voltage for display: -5V
Ez azt jelenti, hogy -5V kell az LCD-nek? A 3. lábra?
(#) kiborg válasza blackdog hozzászólására (») Ápr 4, 2012 /
 
Szia!
Ez csak a vezérlő IC adatlapja, magának a modulnak az adatlapjából derül, hogy mit is köss a 3. lábra.
Oda szerintem a kontrasztot kellene kötni. (nálam egy poti, aminek két szélső lába a +5V és GND, a közepe pedig idekötve) 5-10kOhm-os poti.
Kiborg
(#) blackdog válasza kiborg hozzászólására (») Ápr 4, 2012 /
 
Azt Tudom, hogy az a kontraszt láb.
Csak azt a -5V nem tudom mire vélni.
(#) kiborg válasza blackdog hozzászólására (») Ápr 4, 2012 /
 
-5V-ig lehet vele elmenni, szerintem. De ha nem, majd kijavít valaki.
Optimális kontrasztszabályozás 5V és -5V között történne. De mivel nincs -5V, ezért ossza be a kijelző így ahogy van. Ennyi.
Kiborg
(#) zombee válasza kiborg hozzászólására (») Ápr 4, 2012 /
 
A -5V -ot általában a kijelző elektronikája állítja elő. Hasonlóképpen mint a MAX232, csak a kondi már
be van építve. A 3-as(kontraszt) lábra ez a -5V egy ellenálláson keresztül csatlakozik.
Vannak kijelzők aminél meg van cserélve a polaritás, azaz a 3-as kimenetre pozitív fesz kerül.
Erre neked egy mezei ellenállást kell rákötnöd ami a földre(GND) húz, így állítja be a kontraszt feszültséget.
Az ellenállás értéke a kijelző típusától is függ, ezért terjedt el a kényelmesebb, potis megoldás.
A potira nem kell +5V-ot kötni: az egyik vége lóghat, vagy a közepével kötöd össze és készen is vagy!
(#) AMD hozzászólása Ápr 4, 2012 /
 
Sziasztok!
Atmega8-at szeretnék programozni BASCOM-AVR programmal és a Tavir-AVR oldalon található egyszerű programozóval. Programozáskor felvillan a led de elalszik. Visszaolvasva minden jónak tűnik, de az LCD-re nem ír ki semmit. Panelmérő lenne labortápba de nem akar sikerülni. Bővebben: Link Mit rontok el?
Előre is köszönöm a válaszokat!
(#) zombee válasza AMD hozzászólására (») Ápr 4, 2012 /
 
Ha visszaolvasva jó akkor a programozóval nem lehet gond. Esetleg a RESET lehúzva marad? Rossz a program?
(#) blackdog hozzászólása Ápr 4, 2012 /
 
Sziasztok!

Elkészültem az AVR-es kapcsolásommal.
Kérlek bennetek, hogy AVR szempontjából nézzétek meg, hogy nem-e hibáztam. Ez az első AVR 'munkám'.
Jól csináltam-e?:
- 12V előállítása a reléknek és ebből 5V az AVR-nek
- VCC és GND belötések. TQFP tokon van 3db VCC és az AVCC és AREF is kelleni fog.
- 74595 bekötése. Tudom, hogy így csak szoftveresen tudom kezelni, de tervezésnél a fő szempont az elhelyezés volt.
- RESET lábra érdemes-e nyomógombot is tenni?
- A reléket vezérlő tranyók bázis-emittere közé szükséges lenne egy pl.: 10k ellenállás

De mindennemű észrevételt szívesen fogadok. A rajz olyan amilyen. Még nem vagyok profi a sematikus rajzok készítésében.

Előre is köszönöm!
(#) AMD válasza zombee hozzászólására (») Ápr 4, 2012 /
 
A programnak jónak kéne lenni. Egyszer már felprogramoztam de csak 1X16-os kijelzőre. Most két sorosat akarnák rátenni de nem bírom írni sajnos.
(#) zolee1209 válasza blackdog hozzászólására (») Ápr 4, 2012 /
 
Nekem így ránézésre a P1 bekötése nem tiszta. Poti csúszó érintkezője az AVR ADC lábára, az egyik "fix" láb testre, másik "fix" láb pedig VCC-re. VCC, VCC1 és VCC2 elvi bekötése jó (azért írom, hogy elméleti, mert adatlapon nem nézem meg, hogy a hozzátartozó szám valós-e... ), de az analóg tápfeszültségeknél kavar van. AGND jó helyre csatlakozik, viszont AVCC nem. AVCC-t kösd át VCC-hez, az AREF lábat pedig hagyd ahogy van, C12-vel a test felé...

Huhúú, lehet nem is jól értelmezem a rajzot... Egy post esetleg, ahol már leírtad, mi mire való? Igazándiból az optós rész nekem nem tiszta jelenleg.
(#) oregharcos válasza (») Ápr 4, 2012 /
 
Szia Köbzoli!
Nagyon köszönöm, hogy kitörölted!
Ugyanis amikor beraktam, láttam a problémát,
hogy szétdobta az oldalt, de nem bírtam letörölni,
nem láttam a törlési lehetőséget.
Megpróbálom tördelni a hosszú kódokat.
Minden jót kívánok!
(#) zombee válasza oregharcos hozzászólására (») Ápr 4, 2012 /
 
Teljesen szétcsúszott nekem is az oldal, szóval ez volt a gond? Fórumhozzászólással tönkre lehet tenni?
(#) gydanee hozzászólása Ápr 4, 2012 /
 
Sziasztok!
Kicsit OFF a kérdésem, de mégis talán itt van a legnagyobb létjogosultsága.
Van egy arduino mega, és ethernet shield áramköröm. A probléma az ethernet shield-el van. Meg építettem, de nagyon instabil a működése. Néha működik, aztán megint néhány másodpercig vacakol. Mindig mást mutatnak a visszajelző LED-ek. A kérdésem az volna, hogy van a kapcsolásban egy STM 812 reset figyelő áramkör, ennek kihagyása okozhat ilyen zavarokat? Van olyan állapot, amikor úgy megy ahogy kell, azaz működik. Úgy olvastam nem ezért van benne, de hátha tévedek.
Válaszaitokat előre is köszönöm!
Üdv.
Következő: »»   432 / 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