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, a következő történt a fent mutatott eBay-s égetővel most programoztam 3db eBay-s Atmega8 at, örömmel datálom gond nélkül mentek, ezek után engem meggyőzött a termék, akárki akármit mondhat, bátran ajánlom bárkinek.
Viszont valami kis gond mégis van, ajánlotta TakiG az eXtreme Burner-t, ezzel égettem az Atmega8 akat nagyon le van zanzásítva, vagyis gyors és egyszerű csupán, egyetlen gondja van, az Attiny45 öt nem ismeri. Ebből nincs valami újabb verzió amiben ez is bent van? Üdv!Lajos A hozzászólás módosítva: Máj 29, 2013
Üdv!
Falba ütköztem az AVR és LM335 szenzor ADC átalakításával. A kód:
A Vref-et valójában egy 3,6V-os zéner szolgáltatja és multiméteren 4Vot mértem. Azért szoroztam meg még 5-el hogy így a temp = temp/51.2; sorba ne temp = temp/10.24; legyen, ne kelljen az AVR-nek századokkal is osztania. (Már ha tud?) A gondom, hogy nagy az eredmények szórása. Jelenleg 28-32fok között ingadozik a kapott hőmérséklet érték 1mp-en belül. Az LM335ös kimenetén csupán +/-0,002V az ingadozás(~3,01V), a Vref meg 3,93-3,99V között mozog. Lehet, hogy maga a tesztpanel generál annyi elektromos mezőt, hogy az bezavar? Vagy az AVR belső áramköre? Megoldási javaslatok?
1: AREF lábat stabilizáld 100nF kondival, AVCC-t LC szűrőn keresztül tápláld, AVCC-n lehet 10µF is!
2: Minek a zener? Annak is van jócskán hőmérsékletfüggősége. Akkor inkább TL431! 3: Mérj sokszor, majd átlagolj. 4: Az ADMUX átkapcsolása után várni kell hogy beálljon az új fesz, ezért is venném ki a zenert. 5: Zener helyett inkább a tápfeszt stabilizálnám, pl. LT1117-50 vagy LM317 segítségével.
AREF Stabilizálva, 40uH szűrőn keresztül 220nF kondival
VCC usbről jön, elé egy 1F-os kondit is bekötöttem ill megvan a 10µF-os kondi is + minden IC V+/GND lábnál egy 220nFos kondi. A 10 mérés az kevés? Az ADMUX átkapcsolás alatt azt érted, ha másik lábon lévő szenzort szeretnék használni? Vagy ha ott bármit is változtatok?
Idézet: „AREF Stabilizálva, 40uH szűrőn keresztül 220nF kondival” Nem AVCC akart lenni? Akkor az AVCC-re megy a zener?
Nagyon fontos lenne a válasz. Miért van az hogy egy Atmega8-ast PonyProg-al írtam kb 4-5 napja és kiolvasom belőle a tartalmát de amint törölni vagy írni akarom "Unknown device..." és onnantól nem olvas nem ír semmi. Mi lehet a baj ha táp ki/be minden megy, olvassa a fusebiteket de amint vissza akarom állítani belső oscillátorra vagyis írni akarom jön az "Un..." és megint semmi utánna már olvasni sem hajlandó. Táp ki/be és olvasás rendben. Mi lehet a baj ha kizártam magam akkor olvasni sem engedne ha nem tévedek. Válaszotokat és segítségeteket előre is köszönöm.
Üdv!
Közben kicseréltem az usb-s tápot egy 7805CV-re (15V-->5V) így már stabil a táp(5,05V) és nem ugrál 28-32fok között.
Igen, bocsi, AVCC, rosszul írtam.
Az AREF lábra amúgy sem szokás tápfeszt kötni, kivéve ha direktbe kötöd az AVCC-vel. Feszültség referenciát(pl. zener) egy másik ADC csatornára szokás kötni, amivel SZOFTVERBŐL korrigálni lehet az ADC referencia ingadozását(pl. tápfesz nem állítható be pontosan). Ehhez át kell kapcsolni az ADMUX-ot hogy másik vonalon is mérhess. Az átkapcsolás után várni kell X ideig, különben áthallatszik a másik csatorna jele. Ez csak egy lehetőség, nehogy leprogramozd, van ennél egyszerűbb mód!
Problémák az LM335-el: Gondolom elolvastad az adatlapját, és tudod hogy a kimenő feszültség °C-onként 10mV-ot változik. Ha 5V az ADC referencia, az azt jelenti hogy 10 bites mérésnél kb. 5mV jelent egy lépcsőt ami 0.5 °C. Az a baj hogy az ADC 5-6 egységet simán ugrál a kvantálási és egyéb zajok miatt! Problémák a programmal: Az "Init_ADC" szerintem nem túl korrekt az ADMUX-al, pontosabban, nem áttekinthető hogy mit csinál. A két sort én erre az egyre cserélném, az eredmény ugyanaz:
Az ADCSRA beállítása sem túl bíztató, a "|="-t cseréld le mezei "="-re! Javasolt bekötés: AVCC-t a tekercs és kondi segítségével szűrjed, az AVCC-re tegyél egy precíz referenciát(pl. TL431), és tápláld meg az AVCC feszültségével egy ellenálláson(2.2kOhm) keresztül és 100-220nF kondival stabilizáld! Ezzel a referenciád 2.5V lesz(kb. 4 ezrelékes eltéréssel), amivel a mérési egység is feleződik, 2.5mV-ra (2.048mV/egység). Ha a TL431-et beállítod 2.56V-ra, akkor egy egység pontosan 2.5mV lesz, tehát 0.25°C-os egységekben mérhetsz. A hozzászólás módosítva: Máj 30, 2013
Szia sokat nem értek az AVR ekhez, e ez a kis kapcsolás még egyszer sem hagyott cserben, mindenképpen építsd meg!
Üdv! Lajos Link:http://www.hobbielektronika.hu/cikkek/seged_orajel_generator.html
Sziasztok valaki tudna segiteni? Újra kellett telepítenem a windowsot most pedig az AVR Studio 4 - et próbálom telepíteni. A gond az hogy a program fordításakor hibaüzenetet kapok és nem tudom hogy mit jelent. Előtte tökéletesen működött. WinAVR - t telepítettem. Előre is köszönöm
A hozzászólás módosítva: Jún 1, 2013
Pedig úgy néz ki mintha a WinAVR nem lenne telepítve. Nézd meg a "project options" résznél,
ott a bal oldali menü legalján (Costom Options) lesz a fordító beállítása. Mit látsz? Lásd az enyém! Tipp: be tudod állítani a make.exe-t és az avr-gcc.exe-t, de jonnan teszed ha inkább a WinAVR-t telepíted újra, mert különben más projekteknél is kézzel kell majd beállítani. A hozzászólás módosítva: Jún 1, 2013
Üdv!
Olyan kérdés jutott eszembe a memóriákkal kapcsolatban, amire nem tudom, hol kaphatnék választ. Vannak különböző adatszóhosszt feldolgozni képes (8/16/32/64) bites mikroprocesszorok és mikrovezérlők. A külső, nem CPU-ba épített memóriák adatai csak rekeszenként olvashatók, és egy rekesz mérete 1 bájt. Azt is tudom, hogy a 16 bites CPU-k mindig 16 bitet olvasnak ki a rekeszből, tehát 2 rekesz tartalmát (a 32 bitesek 4 rekeszét, és így tovább...). A kérdésem az, hogy gyártanak-e külön olyan memóriákat, amiket direkt 16/32/64 bites mikroprocesszoroknak fejlesztettek ki (és amiken egyszerre csak egy 2/4/8 rekeszes egység címezhető meg, így egy X bájtos memória tejes tartalma kevesebb lábszámmal elérhető)?
Sziasztok! Terveztem egy Arduino vételt,asm-ben programoztam eddig.Ez a led villogtató kód megingatott kissé
Bővebben: Link
Mármint?
Az Arduino ingyenes emailbeni alaptanfolyamot javaslom: Bővebben: Link Illetve a www.arduino.cc oldalon van pár tutorial. Ha a kész kód zavar: magaszintű nyelvvel indulsz. Az egyszerű program bonyolultabb lesz (belső initek, rendszerépítés). ASM-ben TCP/IP-t igaz nem programozol? Vagy SD kárya kezelést. Vagy I2C memóriát? Magas szinten a kódírás 1-2 nap, míg ugyanez ASM-ben akár 1-2 hét! De az Arduino lapka programozható sima ASM-ben is - ha az jobban tetszik....
Köszi szépen aztán sikerült megoldani letöltöttem az AVR Studio egy másik verzióját azzal tökéletesen működik
Nem az Arduino-val van problémám, a GCC-n lepődtem meg egy kicsit.Természetesen nagyobb projecteknél már őrület az asm, de megnéztem ugyanezt a kódot Codevision-ben.
3k kontra 0.6 k. Nem tudom,hogy mindenhol ekkora-e a különbség. Persze ennek nem kis ára van,ha igen.
Ez nem GCC. Arduino.
A 2 közt _ég és föld_ a különbség. Trabant és a Mercedes is autó.... Kb. ilyen a hasonlat. Olvasd el mire készült az Arduino és a mi a filozófiája: Egy kis Arduino
A Trabant-Mercedes összehasonlítás egy kicsit túlzás. A Trabant felett eljárt az idő,
a GCC meg él és virul. Mondjuk inkább Peugeot? Na ez már tényleg OFF.
OK, Trabant helyett Peugeot...
Végülis ki milyen nyelvet használ, erre azt tanítom: - mit tanult valamikor, mire tud építkezni (Basic, Pascal, C) - mi az amiben ha elakad közvetlenül tud segítséget kapni, - mennyi ideje van a nyelvet megtanulni (tegnapra, diplomamunka, hobbiprojekt, vagy őszre kell egy kerti locsoló) - mekkora affinitása van hozzá/van-e nyelvérzéke... Sokan vannak a C mellett: hordozható, támogatott, sok cikk van róla. Én a Basicnál maradtam - ezt ismerem, és jól boldogulok vele. AVR/xMega területen elvagyok vele . Arduino: gyors, azonnali eredmény - de nem kell megtanulni mélyebben az elektronikát "művészlélek - projektre" ideális. Ami fontos: a felhazsnálót nem a kód elegáns megoldásai és szépségei érdeklik. Működik az elvárásoknak megfelelően vagy sem...
Sziasztok!
Az egyik fórumtársunk adott egy égető kapcsolást. Tudnátok segíteni picit? Magával az áramkör megépítésével nincs gond. De! Ugye van benne egy atmega8, amit felkellene programozni. Az upgrade jumpert berakom gondolom. Tovább... ??? (a zip tartalmazza az összes "hozzávalót") Köszi!
Az ATMega8 chipbe a bootloadert egy _független_ kész égetővel be kell rakni már...
Utána és csak a bootloaderes/upgrade frissítés...
És azok az XML fájlok mire valók?
A hozzászólás módosítva: Jún 2, 2013
Illetve ez a megoldás működhet?
Bővebben: Link Összegezve: Ezzel a megoldással atmega8-at bootloader-rel feltöltöm. Majd a megépített áramkörbe berakom, upgrade jumper be, és az AVR Programmer hex-et AVR Studioval beleégetem? A hozzászólás módosítva: Jún 2, 2013
Idézet: „Ami fontos: a felhazsnálót nem a kód elegáns megoldásai és szépségei érdeklik. Működik az elvárásoknak megfelelően vagy sem...” Ez AVR esetén igaz lehet, ahol a kód nagysága max 32k. Ha péntek este nekifogok, vasárnap délutánra befejezem. Egy 1 millió soros programnál már a gyatra minőségű kódot a felhasználó is megérzi: lassabb vagy lehetetlen továbbfejleszteni, több véletlenszerű hiba, lassú működés, nehézkes kezelés. Általánosságban a ronda olvashatatlan kód rossz/használhatatlan programot eredményez. Az AVR a mérete miatt kivétel, 32k-t még assemblyben is át lehet látni.
Igen, AVR egyszerű kódokról beszéltem/írtam...
Bár AVR-ben 32k kóddal már weblapszerkesztést/wifi-t is meg lehet borítani... Ott azért kell az átlátható kód. Itt a LED-villogtató, minisziréna, és a kezdő lépések amik esetén nem számít (annyira) a szépség. De a csúnyaság <> trehányság, és átgondolatlanul összeollózott kód!
Az interrupt lemaradt. Vagy azt már nem is kell kezelnie a "játékosnak", csak allokál egy buffert és megcsinálja az UART kezelést a háttérben? Vagy ilyeneken ne gondolkodjon egy modellező?
A hozzászólás módosítva: Jún 3, 2013
Egy most kezdő esetén én a Megszakításkezelést csak 10-12. lecke körül veszem elő. Előbb lássa hogy program, mikrokontroller, a kimenetek terhelhetősége, bemenetek.
Arduino alatt a megszakítás meg nagyon mélyen el van dugva. Nagyjából minden 10. emberben merül fel, hogy a sorosport-kezelés, a delay() illetve számos egyéb "alrendszer"/ alprogram megszakítás alapon megy. Ennek minden előnyével/hátrányával együtt. Arduino esetén a vételi buffer automatikusan allokálásra kerül, megszakítással együtt. El is visz 64 byte SRAM memóriát azonnal... ASM-ben meg kialakul az ember fejében a 8-bites gondolkodás
És az AVR mitől működne - üresen?
OK, belül a sok NOP utasítás végrehajtódik.... De semmi sem történik. Az FT232 chip önállóan is alkalmas programozásra - vészmegoldásként:FT232RL chip, mint önálló programozó Vagy STK200/ÉLPT portos 5 szál drót. Sehogy nem úszod meg a chip felprogramozását...
Hm és ha valakit szépen megkérek, hogy programozza fel nekem?
Elküldöm postán... |
Bejelentkezés
Hirdetés |