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
Kombinálod az előző hozzászólásommal: elindítasz egy (hardveres) időzítőt, majd a felhasználói beavatkozás pillanatában megnézed az értéket. Ezt beállítod a random magba, majd lekérdezel onnan 4 számot. AVR-el ennél jobbat nem fogsz tudni.
Jó, ha az időzítő megfelelően szór (nincs prescaler). Nálam nem volt lehetőség user beavatkozást mérni. Indulás után rögtön véletlen színű lámpák kellettek.
Az én megoldásaim sajnos mindig user beavatkozásra és időmérésre épülnek, mert az tényleg
véletlenszerű értékeket ad és nagyon egyszerű. Pont úgy mint az elektronikus dobókockák. Csak akkor nem kell prescaler ha ICP-t (hardveres időpont-tároló) használsz, különben nem lesz egyenletes az egyes értékek valószínűség szerinti eloszlása. Ha bekapcsolás után azonnal véletlen értékek kellenek akkor a hardvert is be kell vetni. Egyszer csináltam olyat hogy ellenállást(kb. 1MOhm) és kondit(~100nF) kötöttem sorba. A kondi másik vége a földre ment, az ellenállásé egy portlábra. A közös pont az analóg komparátor egyik lábára ment(a másikon osztó). A komparátor a TIMER1 ICP egységével van kapcsolatban. Ezzel a megoldással egy 3-bites véletlenszámot lehetett generálni 20MHz-es órajel mellett, és így sem volt valami tökéletes, de a feladathoz bőven megfelelt. A hozzászólás módosítva: Feb 7, 2016
Igen, valami ilyesmire gondoltam én is, bár ez még éppen a Microchip-éra előtti. A "csak-SMD" várható volt, de a PORTE3:0 engem is meglepett, főleg úgy hogy ebből kettő olyan lábat használ ami eredetileg tápláb volt. A 16 bites timert is megháromszorozták, az USART és I2C egységeket megkettőzték. Utóbbit végre hivatalosan is "Philips I2C kompatíbilis"-nek nevezik. Azért egy órajel-emelést(25-32MHz) berakhattak volna. Vajon az IC visszafelé kompatíbilis lehet az m328P-vel?
A hozzászólás módosítva: Feb 7, 2016
Helló!
Atmel studio 7 ben hogy tudnám hozzáadni az usbasp programozót?
Megjelent a listában a usbasp programozó, de hogyan tudom a hex fiket beküldeni az ic-be?
Én a helyedben inkább használnám a Khazama-AVR programot, csak egy ALT+TAB és küldheted is. Csodákat ne várj egy olyan programozótól ami alapból nincs támogatva. Ha a beépített pluginhoz mérhető színvonalú programozást akarsz, az valahol egy egy Avrisp-mkII klónnal kezdődik.
Sziasztok! Ha az SPI-re teszek felhúzó ellenállásokat akkor az "zavar állóbb" lenne és nem zavarja programozáskor a programozót?
Tudtommal a fel-/lehúzó ellenállások nem segítenek az SCK, MISO, MOSI lábakon.
Ha valóban ISP-t szeretnél (In System Programming), akkor oda sorosan bekötött ellenállást használhatsz az AVR és a többi slave IC között. Képet mellékeltem. Ez sem kell feltétlen, ha a slave ICk mindegyike, magas impedanciás (High-Z) kimenettel rendelkeznek és nem aktívak. Hogy ne legyenek az AVR programozása közben aktívak, ezért ezeknek a CS/SS lábaira kell egy fel-/lehúzó ellenállás, ICtől függően.
Sziasztok
Segítséget szeretnék kérni, programozással kapcsolatban. Jelenleg van egy működő program, ami egy nyomásérzékelő jeleit dolgozza fel. A nyomásszenzor értékei egy H fájlban vannak megadva, amit meg szeretnék változtatni. Kérdésem, hogyan kerül a H fájl a végleges HEX-be? Hogyan tudom az általam átírt nyomásszenzor adatokat, fölülírni a jelenlegivel? Win avr-rel meg tudom oldani? Ezt használom az általam használt Atmega8, 88, 16 és 32 programozásához. Programozóm STK500. Rendelkezésemre áll a C fájl és a cserélni kívánt H (nyomásértékek) is. Köszönettel: Tibi
Módosítod a .h file tartalmát ahogy szeretnéd. Aztán WinAVR-ben Tools/Make All és aztán Tools/Program. Ennnyi.
A make file, .h , és a .c fileok egy mappában legyenek.
Nagyon köszönöm, holnap előveszem a programozót és kipróbálom.
A h fájl már módosítva van. Ezek szerint a kulcs az, hogy egy mappában legyenek, amiket a hex-be szeretnék tudni.
A kulcs az hogy a programod "include" része HELYESEN hivatkozzon az összes külső forrásfájlra, különben nem fog lefordulni a programod. Nem utolsó dolog ha azonos mappában vannak, de nem feltétel! A kulcsszó a helyes útvonalmegadás(lásd: LUFA programok).
Fordítás: AVR Studio (4) esetén "Save All", F12 (clean), majd F7 (Make). A hex fájl ez után általában a "default" mappába kerül(AVR Studio) vagy ahová a makefile definiálja. A hozzászólás módosítva: Feb 15, 2016
Köszönöm.
Sajnos nem értek a dologhoz, eddig nem volt időm rá, most is kevés. A program működik jelenleg is, tehát jól hivatkozik. Eddig csak a HEX fájlt töltöttem a kontrollerbe, ezzel megállt a tudományom. Eljutottam odáig, hogy a C-ben átírtam a szükséges módosítást és a szenzor adatait tartalmazó h is módosítva lett. A fájlok nevei nem változtak. Beillesztem, hogyan néz ki most a mappa. A pirossal bekeretezett fájlra kattintva, megnyílik a win avr és már a módosított C-t látom benne. A másik kép a default mappa tartalmát mutatja. Ezek szerint, ha így behívom és elmentem az egészet, akkor kész az új program?
A tools-ra kattintva, nincs make all lehetőség. Lehet azért, mert nem csatlakoztattam a programozót és kontrollert?
A win avr át tudja konvertálni HEX fájlba, az így módosított C-t?
Bocsánat, rosszul írtam, nem a win avr-t, hanem az avr studiot használom.
Valamikor pár éve használtam a win avr-t is, de már nem emlékszem, miért és hogyan. Tehát a kérdésem, az avr studioba beillesztett C fájlt, hogyan tudom HEX-é vrázsolni, vagy betölteni az Atmega88-ba? Próbálom, de nem sikerül. A kontroller OK, csatlakozva van, a régi HEX fel is megy rá. Az új C-vel viszont nem boldogulok.
Feltettem a win avr-t is. C fájl bent van, make all, aztán program meg volt.
Sajnos a HEX még mindig változatlan, vagyis új hexet nem tudok készíteni, valamint a kontrollerbe sem tudom így betölteni a programot. Valakinek lenne ideje, idegzete, leírni lépésről lépésre, hogyan lesz ebből a C-ből működő kontrollerem? Köszönettel. Tibi
Ha telepítve van a winavr, akkor a Studio 4 detektálja a benne levő toolchain-t. Szerintem csinálj egy új projektet és csatold az új C és H fájlokat.
Bővebben: Link
Köszönöm
A win avr-t utólag telepítettem. Az avr studiot telepítsem újra, hogy érzékelje a win avr-t? Megpróbálom a linkelt módszerrel.
Nincs a gépemen a 4-es,de úgy úgy emlékszem itt utólag is meg tudod adni:
Project > Configuration Options > Custom Options
Most vagy én vagyok ilyen hülye, vagy valami összeesküvés van ellenem.
Sem a winavr-el, sem az avrstudioval nem boldogulok. Mindenképp csak hex fájlt enged a kontrollerbe tölteni az avrstudio. Úgy emlékszem, 5-6 éve, a winavr-el fordítottam hex-be a c-t. Próbálom most is, de valahogy nem jön össze. Beállítom a kontrollert, a programozót, stb... Na de mi a fenével indul a fordítás? Valami make fájlt is kellett készíteni, de az meg van. Úgy tudom, az a programból nem, csak a kontroller adatait tartalmazza. Valaki leírhatná, melyik fájlokra van szükségem azok közül, amiket betettem a képeken, aztán mit tegyek és hova? Fent van a winavr, újra telepítettem az avr studiot is. Van egy C fájlom, ami tartalmazza a komplett programot. Van egy H fájl, ami a nyomásszenzor adatokat tartalmazza. Van még több, nem tudom milyen fájl, fogalmam nincs, mire valók. Gondolom még kell ami a midi adatokra vonatkozik. Van makefile is. Azt sem tudom, a makefile-nak is azon a néven kell lennie, mint a C-nek, vagy simán maradhat makefile? Mindenképp én szeretném megoldani, mert a későbbiekben szükség lehet, a nyomásszenzor adatainak a módosítására. Az eddigi javaslatok, valamiért nem működnek. Avrstudio4.18 van fent. Köszönettel: Tibi
Lehet sikerült az új HEX. A létrehozás dátuma megváltozott, akkor gondolom igen.
Köszönöm az instrukciókat, vasárnap lesz itt a hangszer, akkor kiderül, hogy jól csináltam-e.
A WinAVR
A forráskód fordítása Kattintsunk a Tools->Make All menüpontra, ezzel indítjuk el a fordítót. Ha nem gépeltünk el semmit, akkor alul a kimenet ablak alján ezt látjuk: 1. > Process Exit Code: 0 Ezek szerint minden hibamentesn lefordult. Az AVR felprogramozása Ez nagyon egyszerűen elvégezhető, kattintsunk a Tools->Program menüpontra, és ezzel elindul a programozás, és ha mindent jól csináltunk, akkor fel is megy a program az AVR-re és a programozás befejeztével el is indul az AVR-en a program. Ha valami gond van programozás közben, akkor arról tájékoztat lent a kimeneti ablakon. A fusebitek állítgatása elég nehéz a WinAVR-ből. Ehhez használhatunk Bascom-AVR demót, PonyProgot (bár ezzel nagyon könnyen elronthatjuk), illetve ha STK500-as programozónk van, akkor az AVR-Studio5-ból is megy egyszerűen, de lehet még az AVRDude programhoz letölteni kezelőfelületet (avrdude-gui), igaz, azzal kissé nehézkes. A hozzászólás módosítva: Feb 16, 2016
A studio 4 is kezeli az STK500-at és automatikusan generálja a make fájlt. A programozáshoz csak ki kell nézni az eredeti make fájlból a fontosabb adatokat pl. fusebitek.
Köszönöm a segítséget, szerintem OK lesz a dolog.
A fuse bitekkel nincs gond, az avr studioban is szépen be tudom állítani, az új kontrollernél kell is mindig. Most az avr studioval sikerült a hex fájl is. Persze hogy működik-e, még nem tudom, mert nincs itt a hangszer, vasárnap lesz nálam.
Sziasztok! Egy külső kristályról járó mega8-ra írt programot tévedésből egy gyári új mega328-ra töltöttem fel (rossz ic-t tettem a próbapanelba). Ezután már nem értem el az uc-t. Ezzel a lépéssel kizárhattam magam?
A következő lépésemmel valószínű végeztem is vele, mert egy másik panelba áttettem, de a foglalatban egyel lejjebb tettem be (14-15láb kilógott) és így adtam rá feszültséget, amitől rendesen felforrósodott.
Üdv!
Megépítettem ezt az eszközt, csak PIC helyett egy ATTiny25-tel. A problémám az, hogy amikor egy komolyabb fogyasztót, például egy mélynyomót, vagy egy asztali lámpát bekapcsolok, azt is tapsnak érzékeli. Ezt a relét használom hozzá, egy ilyen FET-tel (ez eltér a tutorialban meghatározottól). A táp egy tablet töltője, 9V, 500mA kimenettel. Ez a feszstab IC van az áramkörben (ez is eltér a példában szereplőtől), illetve kapott maga elé egy egyenirányító diódát, ha esetleg fordított polaritással kapna tápot. Mitől van az, hogy egy-egy nagyobb fogyasztó bekapcsolását tapsnak érzi? Mivel lehet ezen segíteni? |
Bejelentkezés
Hirdetés |