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   732 / 837
(#) cimopata válasza wbt hozzászólására (») Ápr 15, 2016 /
 
Nem ragaszkodom a 12 biteshez csak ez van kéznél. 2db 6-8 bites összeadva 1/0.01 arányban is elég jó eredményt adna. 10mV-nál labortáphoz valóban nem kell több, de ehhez nem jó ha a DAC 10mV lépésben ugrik mert az nem lesz pontos.
(#) cimopata válasza wbt hozzászólására (») Ápr 15, 2016 /
 
Tehát nem használnám a 12-bites DAC-ot 12 biten. Ha találok 8 bitest olcsón 4 csatornásban akkor az is elég lesz.
A hozzászólás módosítva: Ápr 15, 2016
(#) Kovidivi válasza cimopata hozzászólására (») Ápr 15, 2016 /
 
Esetleg 16bites PWM jel RC szűrővel? Mivel feszültség referencia, így nem kell gyorsan változnia, és ha a beállási idő mondjuk 100mS, talán nem akkora baj. Csak elég nagy órajelű mikrovezérlő kell hozzá. Nem tudom, Te hány MHz-en gondolkodtál. A pwm kimenetre kell egy NPN PNP páros, ami egy elég pontos referencia feszültséget kapcsolgat, így nem az uC tápjának kell pontosnak lennie, hanem ennek a referenciának. Én így fogom megoldani, mert nem találtam rendes 16bites DAC-ot olcsón, könnyen beszerezhető helyről.
(#) cimopata válasza Kovidivi hozzászólására (») Ápr 15, 2016 /
 
Gondoltam rá. 48Mhz-en az kb 700Hz-es frekit jelent amit sajnos nem fogsz tudni szépen szűrni csak nagyon alacsony törési frekivel. Gondolom neked sem lenne időd másodperceket várni mire beáll a kimenet. Talán még azt lehetne hogy a PWM-ek csak 8 biten mennek és akkor a kapcsolási freki 180kHz lenne amit már elég szépen lehet szűrni és azokat összeadni.
De mire tranyók vagy inkább logikai kapu a PWM-nek + R-C szűrő.. már majdnem ott lennék mintha vennék egy ilyen 4 csatornás DAC-ot.
(#) csatti2 válasza cimopata hozzászólására (») Ápr 16, 2016 /
 
Azért ennél jobb a helyzet, csak nem árt tisztában lenni némi szűrőelmélettel. Senki sem kényszerít, hogy csak elsőrendű szűrőt használj. Több Sallen-Key (vagy más) szűrő összekapcsolásával (egy ide sztem is kevés lest) a kívánt átviteli függvény ismeretében (itt szerintem Butterworth lenne jó) viszonylag magas fc-re is (itt kell pici kompromisszumot kötni ha nem akarunk 40-ed rendű szűrőt ) elég jó DAC-ot lehet összehozni akár 700Hz-ből is. Csak ki kell számolni a tagokat (gyök 2 / 2-es jósági tényezőre komplett táblázatok vannak a neten, arra már elég könnyű felírni az egyes sallen-key fokok saját átviteli függvényét, abból meg jönnek az R és C értékek).
A hozzászólás módosítva: Ápr 16, 2016
(#) Kovidivi válasza cimopata hozzászólására (») Ápr 16, 2016 /
 
Lehet 16bit sem kell, mert 40V esetén 0.6mV lenne egy lépés...
(#) wbt válasza cimopata hozzászólására (») Ápr 16, 2016 /
 
Csak úgy találomra ránéztem, a 14-bites DAC (AD5641) 1000Ft alatt van darabos tételben, nem hiszem, hogy ennyiért érdemes összeadásokkal szenvedni. (és biztos nem találtam meg a legolcsóbbat) Ebből 2db méretben/árban szerintem ugyan annyiból fog kijönni. (különben keresgélés közben azért meglepődtem, a precíz sokcsatornások árai azért igen szépek...) Azt nem tudom, hogy a szabályozásnál a SW mennyire lesz jó, én eddig mindig analógra bíztam magát a szabályozást, igaz én nem vagyok egy programíró zseni, könnyebb is volt méricskélni 2 OPA-t mint SW bug-ot keresni. Ha PWM mellett döntesz, mint beállítófeszültség, akkor olyan uC-t válassz, ami tudja a pattern PWM-et, akkor 4x gyorsabb is lehet a beállási időd fele akkora zajnál.
(#) avr_tamas hozzászólása Ápr 17, 2016 /
 
Sziasztok!
A következő problémával kapcsolatban szeretnék segítséget kérni:
Van egy T-Bird 2 nevű fejlesztő áramköröm.
A következő történt:
JTAG üzemmódban használtam, Timer 0 regisztert állítottam be. AVR studio hibára leállt (AVR4.19.). AVR studiot ismét elindítottam, JTAG üzemmód működik, de letölteni már nem tudtam programot. Amikor próbálok csatlakozni STK500 - as platformként, CONNECTION FAILED hibát dobál...
Mit tudok tenni?
(Illesztő drivert már cserélgettem, de nem segített. AVR studio újratelepítés is meg volt)
Minden féle segítséget köszönök!
Üdv. Tamás!
(#) minimodel hozzászólása Ápr 17, 2016 /
 
Egy igen érdekes modellezési feladatot találtam, nevezetesen egy vontatható terelőtábla elkészítését. Ezeken a táblákon van több LED villogó és egy nagy tábla, amit kézzel vagy motorral lehet forgatni.
Itt egy példa
A tábla képes bal nyilat, jobb nyilat és "X"-et villogtatni, kb 1 másodpercenként, miközben a szünetekben a felső két nagyobb LED lámpa villan fel. A kérdésem elsőként az lenne, kb. hány 2 mm-es diffúz LED-et bírna el egy ATmel egyetlen lába? A nyilakban villan fel egyszerre a legtöbb LED, 13 db. De természetesen, mivel vannak olyan LED-ek, melyek több jelzésképben is felvillannak, ezeket külön lábról üzemeltetném. Így pl. egy nyílban van 7 db olyan LED, ami csak az adott nyílra jellemző. A többi 6 valamilyen más jelzésképpel közös. Az elv egy kicsit talán a dobókockára hasonlít. Köszönöm előre is. Attiny ehhez már kevés lesz szerintem, pláne, ha még a táblaforgatást is meg szeretném oldani motorosra.
(#) csatti2 válasza minimodel hozzászólására (») Ápr 17, 2016 /
 
Az attól függ milyen fényesen szeretnéd ha világítanának... Mérd meg mekkora a ledjeid árama, amikor már szerinted elég fényesek. Egy lábbal kb. 20mA-rel hajthatsz meg dolgokat (nézd meg a kiválasztott uC adatlapját, gyakran további megkötések is vannak). Ha ez tehát nem elég, akkor használj tranzisztort és azon keresztül hajtsd meg a LED-eket.
(#) Brian88 válasza cimopata hozzászólására (») Ápr 17, 2016 /
 
Szia
Gondolom DC jelet kell előállítani. Miért nem használsz PWM + low pass filtert. Akármelyik mikró tud 16 bites PWM jelet. Visszacsatolásnak meg egy másik 16 bit ADC. Vagy a mikró analog komparátorát használod, amire az egyik bemenetére rákötöd a PWM csatorna egy tetszőleges csatornáját, a másik bemenetére a mérendő jelet. Majd 0-tól emeled a PWM jelet. Amikor komparál a komparátor, meg lesz a hozzá tartozó PWM érték. Így össz vissz 1db AVR eltudja látni mind a 16 bit DA és a 16 bit AD konverter szerepét is.
Hiba források lehet a komparátor pontossága (akár használj külső komparátort) illetve az 5V pontossága. Külső referencia használatával az AVR meg tudja mérni a saját 5V és szoftverből tudod kompenzálni a PWM értékét. Bár megjegyezném, hogy PWM előállított DC jel nagyon nagyon pontos értéket tud visszaadni, csak jól kell méretezni a low-pass filtert. Szerintem az ADC el is lehetne hagyni, főleg hogy egy külső műszerrel akarod egyszer bekalibrálni.
(#) trigger444 hozzászólása Ápr 19, 2016 /
 
Sziasztok!
Megépítettem ezt a kapcsolást, amivel érzékelni lehet az érintéseket.
A kapcsolás Attiny45-tel tökéletesen működik, de valami miatt Attiny2313 esetén a kimenet vibrál.
A kérdésem, hogy ez miért van illetve, hogyan lehetne jaítani.
(#) cimopata válasza Brian88 hozzászólására (») Ápr 19, 2016 /
 
Jaja, első körben kipróbálom a PWM-es megoldást.
(#) janikukac hozzászólása Ápr 20, 2016 /
 
Sziasztok!
Ne haragudjatok, de egy kicsit értetlenkedni fogok: pár hónapja írtátok itt nekem, hogy Arduino-val hogyan tudnék beégetni egy AVR-t. Én őszintén több angol videót is megnéztem, meg most már magyarul is rákerestem a dolgokra, de nem sikerül kivitelezni a dolgokat.
Egy ATmega8A-t szeretnék beprogramozni. A kontrollert szépen összedrótoztam a megfelelő vezetékekkel, meg az Arduinoval, letöltöttem az Arduino programot is, beállítottam ISP-ként a fejlesztőt, aztán elméletileg valahogy a WinAVR-el valami makefilet kéne csinálni és aztán a fusebiteket beállítani és beégetni, de ez a rész már nem ment. Elsősorban már ott elakadtam, hogy hogyan kellene a WinAVR-t megnyitni, aztán ott minden beállítani (makefile vagy mi a csodát, frekvenciát, stb ??? ). Ha valaki magyarul, lépésről lépésre mindent leírna nekem, azt megköszönném.
"Tavir" leírása - ami magyarul van - szintén nem volt érthető.
A hozzászólás módosítva: Ápr 20, 2016
(#) kapu48 válasza janikukac hozzászólására (») Ápr 20, 2016 /
 
A Robert pedig igazán tökéletesen fordít angolból magyarra!
Ha azt nem érted? Jobban senki nem fogja neked leírni!
Mert legtöbben tőle tanultuk meg az alapokat.

Tessék belefogni és csinálni! Ha elsőre nem sikerül? Újra kezdeni!
Ez már csak ilyen a gyakorlás hozza a sikert!

És különben is te írd le mit hogyan csináltál? Meddig jutottál?
Legalább érezzük, hogy próbálkozol!

Ez elején mindenki ront el pár Megát, mire bele tanul!
(#) rolandgw válasza janikukac hozzászólására (») Ápr 20, 2016 /
 
Mit szeretnél? Neten talált programot lefordítani és beégetni?
(#) janikukac válasza rolandgw hozzászólására (») Ápr 20, 2016 /
 
Igen, van egy hex-em egy digitális labortáphoz, ATmega8-at kellene beégetni.
(#) rolandgw válasza janikukac hozzászólására (») Ápr 20, 2016 /
 
Ha megvan a hex nem kell a winavr/makefile-al foglalkoznod, az ajánlott fuse bit beállításokról kéne tudni valamit. Itt is van egy jó leírás,igaz nem magyar.
(#) janikukac válasza rolandgw hozzászólására (») Ápr 20, 2016 /
 
Köszönöm. Szerintem ezek alapján holnap neki tudok esni, és megpróbálok valamit alkotni. Ha elakadok, akkor írok, ide!
Üdv!
(#) janikukac válasza janikukac hozzászólására (») Ápr 21, 2016 /
 
Na, az a baj, hogy a leírás alapján dolgozok, de a Detect során nem az ATmega8-at, hanem az Arudino 328-asát találja meg... Miért?
(#) csabeszq válasza janikukac hozzászólására (») Ápr 21, 2016 / 1
 
Mert gondolom rossz bitrátát használsz. Az ArduinoISP és az Arduino bootloader-e kísértetiesen hasonlítanak egymásra.

Ha 115200 (uno), vagy 57600 (nano) bitrátán kezdesz adni (avrdude), akkor ArduinoISP helyett a bootloaderrel kezdesz dumálni arról, hogy az Arduino szoftverét felülírja-e.

ArduinoISP-hez úgy emlékszem valami 19200 baud kell, vagy hasonló. Nézd meg a kódot. Ha ilyen bitrátával adsz, akkor nem a bootloader fog 328P-vel válaszolni.
A hozzászólás módosítva: Ápr 21, 2016
(#) janikukac válasza csabeszq hozzászólására (») Ápr 21, 2016 /
 
Kaptál egy nagy like-ot. Beírtam az adott "baud" értéket, azonnal fel is ismerte az ATmega8-at. Beraktam a .hex-et, beégettem, azt írta sikeres. Köszönöm szépen nagyon, Rolanddal ketten nagy segítségek voltatok!!!
(#) freechat hozzászólása Ápr 23, 2016 /
 
Led-et szeretnék használni, de előtét ellenállás nélkül.
Készítettem egy eredmény kijelzőt és úgy szeretném megcsinálni, hogy minél kevesebb alkatrészből kelljen megcsinálni. Inkább a szoftver legyen bonyolultabb (PWM akármi).
Az ok prózai: forrasztás nélkül szeretném úgy, hogy stabil legyen. Ha nem kellene ellenállás akkor 350 Ft-ot tudnék spórolni vele (nem kell próbapanel)
(#) kapu48 válasza freechat hozzászólására (») Ápr 23, 2016 /
 
Kicsit bővebben kifejtenéd!
Milyen LED kijelzőre gondolsz?

Mert a választék elég nagy:
Bővebben: Link
(#) freechat válasza kapu48 hozzászólására (») Ápr 23, 2016 /
 
Egyszerű piros 3mm-es normál ledekre.
Led 3mm piros
Mindig elfelejtem, hogy már mindenre ledeket használnak
(#) csatti2 válasza freechat hozzászólására (») Ápr 23, 2016 /
 
Léteznek olyan LED-ek, amikbe gyárilag beépítették az áramkorlátozó ellenállást (ezek viszont drágábbak), példa: link. Hagyományos LED-eknél nem fogod megúszni az áramkorlátozást (nem lehet mindent szoftverből megoldani).
(#) kapu48 válasza freechat hozzászólására (») Ápr 23, 2016 /
 
(#) kapu48 válasza freechat hozzászólására (») Ápr 23, 2016 /
 
Talán ez a leg egyszerübb:
Bővebben: Link
Bővebben: Link
(#) Bakman válasza freechat hozzászólására (») Ápr 23, 2016 /
 
Ha nagyon pontosan be tudod állítani a feszültséget nem kell előtét ellenállás, de számolni kell a vezérlő belső ellenállásával is. Ha 20 mA-t bír a LED, akkor úgy számolj, hogy maximum 15 mA jusson egy LED-re.
(#) csabeszq válasza freechat hozzászólására (») Ápr 24, 2016 /
 
Így elég nehéz válaszolni, mert nem mindegy, hogy 5 vagy 500 LED-et használsz.

Éppen ezért pár megoldás:
- 16 csatornás PWM, csak rákötöd a LED-eket, I2C-n programozol (Link)
- vagy 3 vezetéken RGB színes LED szalag (30 LED-del) (Link)
- vagy TLC 5940 LED vezérlő (a 10 IC-vel 160 LED fényereje állítható külön) (Link)

Miért jó egyébként ha 350 Ft-ot spórolsz? Ránézésre 100 előtét ellenállást kapsz érte.
Bocs a kérdésért, de 1000-2000 LED-ről van szó, amit vezérelni akarsz és ezért probléma az ellenállás ára?

Ha pedig pepecselni utálsz, vehetsz 220 ohmos SIL-9 hálóellenállást is. Ez egy 9 lábú izé, amelyiknek egyik lába össze van kötve 8 ellenállással. Drágább, mintha 8 ellenállást vennél, de legalább pepecselni nem kell. (Link)
A hozzászólás módosítva: Ápr 24, 2016
Következő: »»   732 / 837
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