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   318 / 840
(#) Ricsi89 hozzászólása Márc 27, 2011 /
 
Sziasztok!
Valami nem stimmel az EEprom olvasással. Adott egy kis progi, amiben az eepromba beírok egy értéket, pl 27-et. Ezután kiolvasom, kiíratom és meg is jelenik. DE! Ha most kiveszem a programból az írás részt és így fordítom le, majd beletöltöm a kontrollerbe, akkor erről a címről csak 255-öt olvas ki. Na most amit az eepromba teszek annak elvileg meg kellene maradnia program újratöltés után is, nem?
(#) zolee1209 válasza Ricsi89 hozzászólására (») Márc 27, 2011 /
 
Szia!

Azt kell mondjam, hogy nem, legalább is az én megfigyeléseim alapján.
kép1:
Ha a képen látható beállításokat alkalmazod, akkor a programozás gombbal (IC piros nyíllal) törlődik az AVR teljes mértékben, EEPROM-mal együtt, viszont újraprogramozni csak a Flash-t fogja. Nálam, ha a pipát kivettem a programozás előtti törlés opciónál, akkor nem volt hajlandó felprogramozni az AVR-t, kifagyott... Szóval ebben az esetben az EEPROM-ot külön kell felprogramozni a betöltött *.eep fájllal.

kép2:
Ebben az esetben meg tudod adni, hogy "AUTO" programozás esetében mi történjen. Én ezt az opciót használom az esetben, ha EEPROM részt is írok, mert automatikusan megtörténik az EEPROM írása, így nem marad ki a sorból...
(#) Ricsi89 válasza zolee1209 hozzászólására (») Márc 27, 2011 /
 
Kipróbáltam az Auto funkciót, csak a flash részt pipáltam be, de akkor is ugyanazt csinálja. Csak az "Erase Device", "Program flash" és a "Verify flash" van bepipálva.
Közben megnéztem és tényleg törlődik az eeprom. Ezek szerint, akkor ha módosítom a programot ,akkor előtte le kell mentenek az eepromot és módosítás után visszatölteni. Megcsinálhatták volna jobban is ezt.
(#) Reggie válasza Ricsi89 hozzászólására (») Márc 27, 2011 /
 
Az erase device mindent torol.
Van egy FUSE bit (EESAVE), amit be kell kapcsolni, es akkor az erase device nem torli az eeprom tartalmat.
(#) Reggie válasza dB_Thunder hozzászólására (») Márc 27, 2011 /
 
Kb ennyivel jar, mint amit irtal.
(#) dB_Thunder válasza Reggie hozzászólására (») Márc 27, 2011 /
 
Igazából nem akarta azt csinálni amit kellett volna,(ahogy én elgondoltam), de ma reggel újra nekiláttam, és rögtön jó lett.(tehát 1 volnál már pirosan világítottaz rgb led) Azt nem tudom, hogy tegnap miért nem ment..

Másik gondom: írják az alaplapon hogy 300uA eszik 1,8volton. Nos ugyan az én attiny45-öm nem V-s egyed ezért nem lehet lemenni 1.8-ig csak 2.7 voltig a tápfesszel. De akkor is gazdagon nyakalja az 5mA-t.
Ezt szeretném lejjebb vinni, csak még nem vágom hogyan...
Ha ebben tudnátok segíteni, azt megköszönném!
(#) Reggie válasza dB_Thunder hozzászólására (») Márc 28, 2011 /
 
Mekkora frekvencian hasznalod? Ha 8 MHz akkor teljesen realis ez a fogyasztas. Az adatlap 167. oldalan van egy bovebb tablazat. A 36. oldalon kezdi reszletezni, hogy hogyan lehet csokkenteni a fogyasztast. Ezek lenyegeben:
1. a nem hasznalt i/o labakat konfiguralt bemenetnek es engedelyezd rajtuk a felhuzo ellenallast
2. a nem hasznalt periferiakat a PRR regiszter segitsegevel kapcsold ki
3. Ha megteheted a Brown Out Detector-t is kapcsold ki, akar csak ideiglenesen szoftverbol
4. A leheto legkisebb frekvenciaju orajel forrast valaszd
5. Amikor keves az elvegzendo feladatt, akkor csokkentsd tovabb a rendszer orajelenek frekvenciajat a System Clock Prescaler segitsegevel.
6. Ha nincsen semmi dolga vagy csak varakozik, es megvalosithato, akkor sleep modba kell kuldeni.
(#) dB_Thunder válasza Reggie hozzászólására (») Márc 29, 2011 /
 
Köszönöm az 5leteket!
1, mindössze két lábat nem használok (egyenlőre) a PB5(reset) és a PB3. Ez utolsó valószínűleg egy funkciót fog kapni (automata kikapcsolás). A Reset lábat úgy olvastam nem érdemes nagyo felhasználni mert bukom a egyszerű programozás lehetőségét.
2, ez PRR regiszterrel még lehet hogy tudok mit kezdeni, de még nem rágtam át magam rajta.
3. azt vágom hogy a FUSE biteknél lehet ez variálni, de még nem néztem utána hogy mire is jó...lehet hogy kelleni fog.
4, eddig 1Mhz volt az órajel, most átállítottam WD. osc 128k-ra, működik a cucc de vannak gondjaim(erről később)
5, ezzel a 128k-val is lassabb mint kellene, ezért igazítani kell majd a kódon is...( és még bele kell tegyek a timert az auto off-hoz)
6, sajnos folyamatosan kell mennie.

A gyári voltstick áramkör alap állapotban sem eszik annyi áramot hogy azt 200uA méréshatárban mérni lehessen, ezért úgy döntöttem, hogy ki-bekapcsolható lesz az áramkör (sokallom a 0.1uA-t a sleep módban, ráadásul ráadásul úgy kellene aludnia, hogy bemenő jelre azonnal ébredjen, szerintem ez kivitelezhetetlen). Persze ehhez nem akarok külön kapcsolót beépíteni, de erről később...

És most a gondjaimról: azzal hogy átálltam erre a 128kHz órajelre, és gyönyörűen elveszítettem a további programozási lehetőséget.
Hogy tudnám AVR Studiót és a Topi féle dopper progizót rávenni a további kommunikációra?? (ha egyáltalán lehet, az ISP frekit már levittem 1.2kHz-re)
(#) Hooligan01 hozzászólása Márc 30, 2011 /
 
Sziasztok!

Rájött már valaki arra, hogy AVRStudio5-ben hogy lehet egy gombnyomással, bill. parancsal akárhogy, Studio4 mintájára Flash-t feltölteni AVRISP MKII-vel?
Mindig újra kell nyitni az "AVR Programming" dialógust, abban is 3 katt, szóval elég sokat elvesz a hasznos időből.

Üdv.
(#) Reggie válasza dB_Thunder hozzászólására (») Márc 30, 2011 /
 
Hat ez jo kerdes. Nem vetted ki veletlenul az SPIEN fuse bitet? Elvileg mennie kene siman 128kHz mellett is, a programozashoz az orajelet meg elegendo 32kHz-re levinni. Topi fele programozohoz nem ertek, en JTAG ice MKII-t hasznalok itthon is.
(#) luxmanpower hozzászólása Márc 30, 2011 /
 
Hello! Eepromból kellene nekem kiolvasni 50db bájtot melyeket egyenként összehasonlítok egy bájttal, és az lenne a kérdésem hogy ezt meg lehet oldani úgy is hogy az összehasonlítás során olvasom ki ezeket, vagy úgy a jó hogy a program elején kiolvasom és tárolom egy tömbben és azt hasonlítom. Köszi
(#) sgt válasza luxmanpower hozzászólására (») Márc 30, 2011 /
 
Ha tömben tárolod akkor 50 bájt ram-ot foglalsz le, meg az kicsit időigényesebb, mert ugye eeprom-ból kiolvasol azt be egy tömbe, majd a tömb összehasonlítása egy értékkel. Ha nem időigényes és memória igényes amit csinálsz ez is jó, de a másik megoldás szebb. Kiolvas és rögtön összehasonlít (nincs tömb, és kb kétszer gyorsabb).
(#) sgt válasza Hooligan01 hozzászólására (») Márc 30, 2011 /
 
Nekem .hex fájlt nem csinál.

4.18-ban hol lehet beállítani a sorszámozást? Egyáltalán lehet, mert nem találtam.
(#) Hooligan01 válasza sgt hozzászólására (») Márc 31, 2011 /
 
Project fül -> Project Name Proprties(Alt+F7) -> Build - Itt tudod beállítani.
(#) sgt válasza Hooligan01 hozzászólására (») Márc 31, 2011 /
 
Köszi! Sokat javult . Am nagyon jó elgondolás szerintem ez az 5, de nagyon sok mindent módosítani kellene, mint pl. azt amit előttem mondtak, fordításnál lehetne egy zöld/sárga/piros pötty ahogy a 4.18-nál volt, más szín mert így háát nem tudom, no meg kevesebb reklám. Na meg egy kicsit átláthatóbb, de az is lehet hogy csak nem szoktam meg, mert ugye elég nagy ugrás volt a 4.18-hoz képest. Viszont tetszik hogy rögtön meg lehet nyitni az adatlapot, és memória méretek fel vannak sorolva melyiknél mennyi van. Nem rossz, csak még fura, és akad egy két hiba. Remélem a végleges már teljesen oké lesz. Beállító fülekben néhol nagyon lehetetlenül vannak elrendezve a dolgok.

OFF: MPlabot miért nem képesek ehhez hasonlóra megcsinálni? Mert már a 4.18 is jobban el van rendezve.
(#) Fish válasza Axel hozzászólására (») Márc 31, 2011 /
 
Szia Axel

Bocsi a kérdésért, de milyen típusú mikrovezérlőt használsz? Mert én csak egyszer ugyan, de kipróbáltam a Fluery féle I2C csomagot, de nekem működött, és én ilyen hibát nem tapasztaltam. De két dolog eszembe jutott ezzel kapcsolatban, az egyik az AVR típusa: más lib-et kell használni akkor, ha olyan eszközöd van, ami "tudja" a hardveres TWI-t, (pl ATmega8) és szintén más kell, ha szoftveresen alkalmazod olyan eszközökön ami "nem tudja" (pl ATTINY2313). Nem tudom, hogy milyen feladatra használod az adott kütyüt, a többi része a programnak működik, és csak az I2C nem, vagy úgymond "meg se nyikkan a vezérlő"? Előfordulhat hogy valamilyen beállítás egy előző projekt-ből úgy maradt. És még valami: a Fuery könyvtárban nem csak a header-fileok vannak, a többi is legyen ott ahol használod. Talán legegyszerűbb ha bemásolod az egész "vándorcirkuszt" abba a mappába ami az adott projekt-hez tartozik. Remélem segítettem.
(#) albinolynx hozzászólása Márc 31, 2011 /
 
Sziasztok,

egy kis útbaigazítást szeretnék kérni. Win 7 x64 alól használnám a Topi féle avr-doper programozót - USB-HID módban. Sajnos a sok bűvészkedés ellenére sem sikerült CDC módban működésre bírni.

Letöltöttem a legújabb avrdude + gui-t:
http://sourceforge.net/projects/avrdudegui/

Topi ugye azt írja, hogy ennél programozónak "avr-doper" legyen beállítva. Lehet fejlesztettek, vagy más lett a neve, de konkrétan "avr-doper" nincs a listában. Van viszont "avrisp" amihez ez a kis mellékelt szöveg tartozik:

"Atmel AVR ISP type: stk500"

Működni fog, ha ezt választom?
A másik kérdésem, hogy kéri mellé a port számot: com1, com2, com3. Eszközkezelőből én sajnos nem tudtam meghatározni, hogy most melyik portot kellene beállítanom. Ezt hogyan oldjam meg?
Ha lehúzom a programozót, akkor a "HID" csoporton belül eltűnik egy "HID-szabványnak megfelelő eszköz". Viszont nem találom sehol, hogy melyik portnak lenne beállítva. Tudom, hogy itt nem hoz létre virtuális portot, mint CDC módban, de az avrdude mégis kéri...
(#) albinolynx válasza albinolynx hozzászólására (») Márc 31, 2011 /
 
(Szerkeszteni már nem tudom sajnos...)

Kipróbáltam "avrisp"-ként. Ezt írja ki, miközben egy tiny2313-at szeretnék ellenőriztetni vele (verify FLASH):

avrdude: stk500_getsync<>: not in sync: resp=0x00
avrdude: stk500_disable<>: protocol error, expect=0x14, resp=0x51

Ezt COM1-re írja, COM2, -3-nál:

can't open device "COM2, -3"

Tehát elvileg a port COM1, csak valami kehe van még.
(#) Axel válasza Fish hozzászólására (») Márc 31, 2011 /
 
Szia!

A Fleury-féle cuccal a baj az, hogy le sem tudtam fordítani mert a mappájában kicsomagolás után találhatóak mfile-ok is. Tegyük fel, hogy ezeket mindenestől bemásolom a projekt mappájába. A gond ott kezdődik, hogy kell egy mfile a main-hez is aminek szintén a projekt mappában a helye. Mikor ezt elmenteném oda akkor meg ugye felülírja a Fleury-féle cucchoz tartozó mfile-t is és úgy meg már nem működik a fordítás sem mert eltűnik az az mfile ami alapján a header-höz tartozó cuccokat fordítaná. Remélem sikerült érthetően fogalmaznom.

Köszi!
(#) Ricsi89 válasza Axel hozzászólására (») Márc 31, 2011 /
 
Én többször használtam ezt, csak a .h, .s és a .c fájlokat másoltam be a project mappájába és tökéletesen működtek.
(#) Axel válasza Ricsi89 hozzászólására (») Márc 31, 2011 /
 
Hello!

Megpróbáltam amit mondtál de a következő fogadott:
(#) Ricsi89 válasza Axel hozzászólására (») Márc 31, 2011 /
 
Ha jól emlékszem, akkor a makefile-ba bele kell írni a megfelelő .c vagy .s fájl nevét is a main fájl mellé, hogy tuja a fordító, hogy azt is mellé kell fordítania. Na most, hogy a .c vagy .s fájl kell az attól függ, hogy szoftveres i2c-t használsz, vagy a hardverest.
(#) Axel válasza Ricsi89 hozzászólására (») Márc 31, 2011 /
 
Akkor csináljak egy másik makefile-t a twimaster.c-hez is?
(Atmega8-asról megy, hardveresen)
(#) Ricsi89 válasza Axel hozzászólására (») Márc 31, 2011 /
 
Nem, a meglévőbe kell beleírni még a main fájl mellé a twimaster.c-t is. Simán szóközzel elválasztva több fájlt is bele lehet írni a makefile-ba.
(#) Axel válasza Ricsi89 hozzászólására (») Márc 31, 2011 /
 
Tehát valahogy így?:

# Target file name (without extension).
TARGET = twi twimaster
(#) Axel válasza Axel hozzászólására (») Márc 31, 2011 /
 
Woooww! Lefordult!

Ezt hiányolta:

# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c twimaster.c
(#) Ricsi89 válasza Axel hozzászólására (») Márc 31, 2011 /
 
Inkább valahogy így:
  1. # Target file name (without extension).
  2. TARGET = main fájlod .c nélkül
  3.  
  4. # List C source files here. (C dependencies are automatically generated.)
  5. SRC = $(TARGET).c twimaster.c

Szerk.: Látom közben rájöttél.
(#) Axel hozzászólása Márc 31, 2011 /
 
Asszttaa' és még működik is elsőre Köszi a rávezetést! Hogy meddig szoptam én evvel a twi-al... Pedig elvileg olyan egyszerű... Írogattam volna saját függvényt is de az elég vad dolgokat művel(t) pedig követtem az adatlap utasításait.
(#) kiborg hozzászólása Ápr 1, 2011 /
 
Hali!

C programozási kérdésem van.
Adott egy kódrészlet:
  1. void kesleltet()
  2.       {
  3.         _delay_ms(500);  
  4.       }


Ha az 500as érték helyére egy integer változót írok (kesl), akkor a kódom 25%ot foglal egy Mega16-ból, míg ha 500as értéket írok, akkor 2,6%-t.
Miért?
Mi a helyes szintaktikája, hogy a _delay_ms(x)-be x helyére egy változót tudjak írni ?

Üdv Kiborg
(#) IMi válasza kiborg hozzászólására (») Ápr 1, 2011 /
 
Szia!
Nézz el erre a hsz-re:
Bővebben: Link
persze utána Topi hsz-át is olvasd! :yes:
Következő: »»   318 / 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