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   603 / 838
(#) steelgoofy hozzászólása Máj 2, 2014 /
 
Sziasztok!

Vásároltam egy MPU 6050 típusú gyroscopot. Hosszadalmas kutatás után találtam hozzá példaprogramot , viszont nagyon barátságtalan. Én csak egyszerű alkalmazásra szeretném használni, elegendő lenne csak az X és Y tengelyirányú változást egy-egy intigerben folyamatosan elmenteni, majd egy adott értéknél pl. egy LED-et felvillantani. Van valakinek valamilyen tapasztalata ezzel az eszközzel?
(#) Seton válasza steelgoofy hozzászólására (») Máj 3, 2014 / 1
 
Nekem is van egy ilyen szenzor elfekvőben, egyszer csak felélesztem én is.
Egy másik cikk. Itt az általad linkelt forrást dolgozták barátságosabbá (bár ezt is meglelted sejtésem szerint). Ez sem példaprogram, nem árt, ha nem ezúton kezded a barátkozást az I2C-vel.
A Setup függvénnyel indít, az ACCEL_XOUT... és GYRO_XOUT... integerek a nyers értékek kiolvasásból.
(#) TavIR-AVR válasza ThompsoN hozzászólására (») Máj 3, 2014 /
 
Nem okoz gondot. Ha külső tápon van, akkor automatán arra kapcsol át, nem az USB-t terheli.
Némi plusz programozás az Arduinoról 60 nap alatt: Email okítási sor.
(#) steelgoofy hozzászólása Máj 3, 2014 /
 
Üdv!

Arduino Mega 2560 mikrovezérlőt Atmel Studio 6.1 fejlesztőkörnyezetben szeretnék programozni. Az Atmel Studioval avrdude segítségével sikeresen tudok az arduinora programot feltölteni, viszont a debuggolás nem úgy megy ahogy szeretném, ahogy már megszoktam IAR-al MSP430 esetén. Nagyon egyszerű a program, nagyon egyszerű a kapcsolás, breadboardon egy led van bekötve a PORTB 0. pinre, feltöltés után szépen világít is, viszont debuggolásnál a program utasításait lépésenként végrehajtva (ahogy a képen látható) ennél a sornál ki kellene aludni a LEDnek, de nem történik meg. Azt gondolom a debug szimulációban mehet, nem tudom hogyan lehetne megoldani, hogy a hardwaren hajtsa végre, lehetséges egyáltalán?
(#) Suncorgo hozzászólása Máj 3, 2014 /
 
Sziasztok!

Hogyan lehet úgy beállítani az AVR studio 6-ot hogy az F5 (fordítás és programozás) hatására az eeprom tartalmat ne módosítsa?
(#) Suncorgo válasza Suncorgo hozzászólására (») Máj 3, 2014 /
 
Nem is volt annyira eldugva.

Preserve EEPROM -> pipa.
(#) Addye hozzászólása Máj 4, 2014 /
 
Sziasztok!

Segítséget szeretnék kérni egy ATMega644 programozásában. A kész hex fájl megvan, csak nincs égetőm. Budapesten belül bárhova el tudok menni, nekem tökéletesen megfelel az is, ha egy nyilvános helyen találkozunk, mondjuk egy plázában. Viszem a laptopom, csak egy égetőre lenne szükség. Előre köszönök bármi nemű segítséget!
(#) zombee válasza Addye hozzászólására (») Máj 4, 2014 /
 
Sziasztok!

Egy AVR C++ projekttel nem boldogulok, pontosabban: nem tudom sehogyse lefordítani.
Itt található az oldal: Bővebben: Link
És a forráskód: Bővebben: Link

Van benne Makefile, egy ".project" és ".cproject" fájl is. AVR Studio nem szereti,
Eclipse-el még odáig sem jutottam el odáig sem hogy meg tudjam nyitni a projektet...
(#) kapu48 válasza zombee hozzászólására (») Máj 4, 2014 /
 
Üdv!

Összeraktam neked!
Atmel Studio 6.2-ben.

Hova küldjem?
A Project mapát!

Le fordúl, 1 Warning-al!
A hozzászólás módosítva: Máj 4, 2014
(#) kapu48 válasza zombee hozzászólására (») Máj 4, 2014 /
 
Elküldtem az adatlapodban szereplő E-mail címre!
(#) zombee válasza kapu48 hozzászólására (») Máj 4, 2014 /
 
Köszönöm.

Azóta kiderítettem hogy Eclipse-el rakták össze és "csak" néhány apró C++ - os fícsör miatt
kellett. Persze AVR Studio 4 alól fordítva folyamatos hibaüzenetekkel áraszt el.
A Studio 6 is megvan, de egy Eclipse-es leírásnak nagyon tudnék örülni...
A hozzászólás módosítva: Máj 4, 2014
(#) Szabi1 hozzászólása Máj 4, 2014 /
 
Sziasztok! Lehetséges a következő kapcsolásba attiny13A-t használni?Bővebben: Link
(#) kapu48 válasza Szabi1 hozzászólására (») Máj 4, 2014 /
 
NEM!

Mivel ezt nem tudja teljesíteni: "Timer1 can be clocked at 64 MHz from the high frequency PLL "
(#) sgt válasza zombee hozzászólására (») Máj 7, 2014 /
 
A toolchain: Bővebben: Link A 4.7-es gcc-t kerüld el, mert nem tudom mit csináltak azzal, de a x86-os (lcov meghülyül tőle) és az avr-gcc (const tömb készíti ki) forkjai is bugosak. A 4.8-t ajánlom nem tudom van-e már windows buildje, de Linuxon már elérhető.

Eclipse letöltés: Bővebben: Link

Eclipse beállítás: Win - Bővebben: Link Ne lepődj meg, ha a legújabb Eclipse-t szeded le, mert annak más a GUI-ja
Linux - Bővebben: Link

Értelemszerűen ha C++-ban akarsz fejleszteni, akkor a gcc helyett a g++-t kell használnod, de minden más ugyanaz (make, gdb...).

Nagy előnye az Eclipse-nek, hogy fejleszthetsz alatta PC-re és AVR-re is egyszerre. Így ha applikációt írsz, akkor azt megteheted PC-n, majd ha hibamentes, akkor hozzá adod a hardver függő részeket és mehet az éles targeten.
A hozzászólás módosítva: Máj 7, 2014
(#) gaba98 hozzászólása Máj 9, 2014 /
 
Sziasztok!
Teljesen kezdő vagyok az elektronikában (9.-es diák vagyok egy elektronikai középiskolában) és a mikrokontrollerekkel szeretnék foglalkozni. A programozáshoz nem sokat értek, majdnem semmit. Szeretném a segítségeteket kérni abban, hogy teljesen az alapoktól elmagyarázná valaki a programozást, vagy leírná hol, melyik oldalon tudok utánanézni. Tudom nem ide tartozik, de milyen AVR programozót ajánlanátok? Építsek házilag vagy vásároljak?
Előre is köszönöm a segítséget!
Üdv: gaba98
(#) pluto válasza gaba98 hozzászólására (») Máj 9, 2014 /
 
Szia!

Információ gyűjtésnek ezt tudnám ajánlani. Elsőre nem rossz. Böngészd át a "régi oldal"-t is.
(#) Shance hozzászólása Máj 10, 2014 /
 
Sziasztok!
Már egy ideje használgatok egy TavIR MKII-es programozót (ver.7).AVR Studio-val 5V-os programozás esetén is a Target Voltage-nál 3.3V szerepel. Eddig azért nem foglalkoztam ezzel,mert a programozó amúgy jól működik,és valahol olvastam,hogy nem minden programozó ad visszajelzést a céláramkör feszültségéről.Itt is csak erről van szó?
Köszönöm.
(#) pluto válasza Shance hozzászólására (») Máj 10, 2014 /
 
Szia!

Igen, arról van szó. Ez a programozó az Atmel MKII-t váltja ki. Azért nem írom, hogy klón, mivel teljesen más elektronika van bennük. Még a processzor sem ugyanaz. A firmware a LUFA project keretében kelt életre. Itt egyébként mindig megtalálod a legújabb fejlesztéseket. És valóban, a céláramkör tápfeszültségét nem méri. Azért ezzel a problémával tudunk élni. A firmware csak úgy tesz, mintha. Erre azért van szükség, hogy a Studio nem méltatlankodjon.
(#) Shance válasza pluto hozzászólására (») Máj 10, 2014 /
 
Értem.Köszönöm szépen.
(#) steelgoofy hozzászólása Máj 11, 2014 /
 
Sziasztok!

Atmega 2560 mikrovezérlővel az alábbi programmal, 16kHz-es PWM jelet szeretnék előállítani, 50% os kitöltési tényezővel.
  1. #include <avr/io.h>
  2. #define F_CPU 16000000UL                // clock: 16 MHz
  3. #include <util/delay.h>                 // delay
  4. #include <avr/power.h>
  5.  
  6. int main(void)
  7. {
  8. /* Disable clock division */
  9. clock_prescale_set(clock_div_1);
  10.  
  11. DDRB |= 1 << PINB5;
  12.  
  13. TCCR1A |= (1<<WGM11 | 1<<COM1A1 | 1<<COM1A0);
  14.  
  15. TCCR1B |= (1<<WGM13 | 1<<WGM12 | 1<<CS10);
  16.  
  17. // fCPU/fPWM = ICR              16MHz/16kHz = 1000
  18. // fPWM = 16kHz  -> tPWM = 62,5 us
  19.        
  20. ICR1 = 999;             // 1000*1/16MHz = 62,5 us  = tPWM
  21.  
  22. OCR1A = 500;            //50% duty cycle
  23.  
  24. while (1)
  25. {
  26. }
  27. }



Nem vagyok biztos abban, hogy így valóban 16kHz-es PWM jelet állítottam elő. Megmérni sajnos nem tudom mert műszerem nincs hozzá, viszont a "#define F_CPU 16000000UL" beállítást _delay_ms(); függvénnyel tesztelve érdekes dolog történik. Egy külön LED et villogtatva 1 másodpercenként "_delay_ms(1000);" valójában 16 másodpercenként villog (cpu elvileg 16MHz), egy másodpeces villogáshoz "_delay_ms(62);" kell megadni. "#define F_CPU 1000000UL", azaz 1MHz en normálisan működik. Úgy működik a dolog, mintha csak a fordító tudná, hogy 16MHz-en megy a processzor, hardwaresen azonban nem 16MHz-en megy, hanem csak 1MHz-en.

Használd a kód gombot!
-moderátor-
A hozzászólás módosítva: Máj 11, 2014
(#) pluto válasza steelgoofy hozzászólására (») Máj 11, 2014 / 1
 
Szia!

Vélhetőleg a CLCKDIV8 biztosíték bit nincs megfelelően beállítva.
(#) steelgoofy válasza pluto hozzászólására (») Máj 11, 2014 /
 
Hogyan tudom ezeket a biztosíték biteket programozni?
Headerben ilyen formában találhatóak meg:
  1. /* Low Fuse Byte */
  2. #define FUSE_CKSEL0      (unsigned char)~_BV(0)
  3. #define FUSE_CKSEL1      (unsigned char)~_BV(1)
  4. #define FUSE_CKSEL2      (unsigned char)~_BV(2)
  5. #define FUSE_CKSEL3      (unsigned char)~_BV(3)
  6. #define FUSE_SUT0        (unsigned char)~_BV(4)
  7. #define FUSE_SUT1        (unsigned char)~_BV(5)
  8. #define FUSE_CKOUT       (unsigned char)~_BV(6)
  9. #define FUSE_CKDIV8      (unsigned char)~_BV(7)
  10. #define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8)


Sima értékadással main-en belül nem működik. ("FUSE_CKDIV8 = 0")
(#) pluto válasza steelgoofy hozzászólására (») Máj 11, 2014 / 1
 
Szia!

Magában a Studio-ban állítod be, majd "égeted". Tehát pipa kivesz a bejegyzésnél.

CKDIV8.PNG
    
(#) gtk válasza steelgoofy hozzászólására (») Máj 12, 2014 /
 
Idézet:
„Sima értékadással main-en belül nem működik”

FUSE_CKDIV8 = 0 : A FUSE_CKDIV8 egy konstans, ez nem egy valtozo !
A hozzászólás módosítva: Máj 12, 2014
(#) Droot hozzászólása Máj 13, 2014 /
 
Sziasztok!

Az alábbi kódra hibát ír a WinAVR:
  1. uint8_t MN401[] ="Blink Fast\0";
  2. uint8_t MN402[] ="Blink Slow\0";
  3.  
  4. const uint8_t *MN[] ={
  5.                 MN401,
  6.                 MN402
  7.                 };

Hogy helyes?

Az MN[1]-re az MN401 sztringet szeretném megkapni.

Más:
Szeretném a pl MN[1]-el a blink fast szóban a 3. karaktert kicserélni mondjuk j-re. Mindeküzben fontos, hogy az MN[1]el hivatkozzak az MN401-re. Milyen trükk van rá?
A hozzászólás módosítva: Máj 13, 2014
(#) kapu48 hozzászólása Máj 13, 2014 /
 
Szerintem ez kel neked:
5.7. Többdimenziós tömbök
(#) Droot válasza kapu48 hozzászólására (») Máj 14, 2014 /
 
Köszi! Közben megoldottam.
(#) holex hozzászólása Máj 14, 2014 /
 
Sziasztok. Összeállítottam egy kapcsolást. Áramot adni neki még nem mertem Megnéznétek hogy minden rendben van-e vele?

Ha igen, akkor hogy lehet bele életet lehelni? A kontroller még teljesen szűz. Gondolok itt biztosítékbitek beállítására meg programfeltöltésre. AVR doper programozóm van.

Köszi a segítséget!
(#) sgt válasza holex hozzászólására (») Máj 14, 2014 /
 
Első indulásnak ne használj külső órajel forrást, és alapvetően ne bizergáld a fuse biteket. Ettől kezdve már csak a tápot fordítva tudod bekötni .
(#) Droot hozzászólása Máj 14, 2014 /
 
HD77480 vezérlős 2*16 karakteres LCD kijelzőn hogy tudok csak egy karakter rész pixeleit invertálni?
Következő: »»   603 / 838
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