Fórum témák
» Több friss téma |
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
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?
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...
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.
Az erase device mindent torol.
Van egy FUSE bit (EESAVE), amit be kell kapcsolni, es akkor az erase device nem torli az eeprom tartalmat.
Kb ennyivel jar, mint amit irtal.
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!
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.
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)
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.
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.
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
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).
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.
Project fül -> Project Name Proprties(Alt+F7) -> Build - Itt tudod beállítani.
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.
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.
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...
(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.
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!
É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.
Hello!
Megpróbáltam amit mondtál de a következő fogadott:
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.
Akkor csináljak egy másik makefile-t a twimaster.c-hez is?
(Atmega8-asról megy, hardveresen)
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.
Tehát valahogy így?:
# Target file name (without extension). TARGET = twi twimaster
Woooww! Lefordult!
Ezt hiányolta: # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c twimaster.c
Inkább valahogy így:
Szerk.: Látom közben rájöttél.
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.
Hali!
C programozási kérdésem van. Adott egy kódrészlet:
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 |
Bejelentkezés
Hirdetés |