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   730 / 840
(#) csatti2 válasza killbill hozzászólására (») Ápr 2, 2016 /
 
Igazad van. Realtime OS-t értettem alatta. Hiába, késő volt már.

Biztos sokkal jobb, amikor mindent te csinálsz. Viszont ez számomra inkább hobbi, a szabadidőm pedig sajnos véges. Bár a munkahelyemen is programozom de az elég speciális, túl sok köze nincs a mikrokontrollerekhez.
(#) zombee válasza killbill hozzászólására (») Ápr 2, 2016 / 1
 
A "mindenre ugyanazt használ" résznél én is érintett vagyok. Amíg lesznek olyan feladatok amelyeket a képen látható bonyolultságú szerkezet képes kiszolgálni, addig 8 bites uC-k is lesznek. Erre fölösleges ARM, de még xMega is. Arra húz a piac amerre a vásárlók, és amíg a net tele lesz ilyen projektekkel, amíg lesz rá kereslet addig lesz 8 bites AVR is. Egy haveromat ki kellett röhögnöm, mert szerinte ilyenre Raspberry PI kellene, nem ilyen ócskaság...

PICT0089.JPG
    
(#) csabeszq válasza killbill hozzászólására (») Ápr 4, 2016 /
 
A váltás nem annyira egyszerű.

Gondolj bele, hogy mekkora macera egy Atmega328P-ről váltani Atmega2560-ra.

A probléma fő oka, hogy az egyik chip furatszerelt, a másik felületszerelt. Mialatt egy furatszerelt chipet bárki simán berak, vesz próbanyákot, breadboard-ot, kipróbálja, játszik vele, addig a felületszerelt esetben mindez nem megy. Vannak persze panelek, melyekre hőlégpákával fel tudsz mindent forrasztani, de én koncepcionálisan elvetettem a felületszerelt áramköröket.

(nincs breadboard, nincs próbanyák, nehéz otthon forrasztani,...)

Rossz a szemem ahhoz, hogy otthon 0805-ös SMD-kel szórakozzak. Megfogni nem tudom, nemhogy felforrasztani. Ugyanezt breadboard-on előadni vicces.

Megveszed a kész előregyártott panelt az Ebay-en (Arduino, Nodemcu, ESP8266) és nagyívben teszel a felületszerelt technológiára. Azt csinálják a kínaiak. A gond akkor jön, ha nem árulnak éppen olyan panelt, ami az adott chipet támogatná, vagy csak méreg drágán kapható.
(#) killbill válasza csabeszq hozzászólására (») Ápr 4, 2016 /
 
Idézet:
„Gondolj bele, hogy mekkora macera egy Atmega328P-ről váltani Atmega2560-ra.
A probléma fő oka, hogy az egyik chip furatszerelt, a másik felületszerelt.”
Ebbe bele sem merek gondolni, mert nekem mar 2001-ben is egy haverom forrasztotta be az ATmega128-at es ma is o forrasztja be az LPC1788-at. A szemem nekem is rossz, ezert vettem szemuveget meg nagyitos lampat. A 0805 alkatreszt csipesszel vagy pipettaval te is meg tudod fogni. De en nem akarok megtéríteni senkit, a hobbista vilagban valoban ezek a szempontok, nem pedig a korszeruseg. A fo problema inkabb az, hogy sokan azt hiszik, hogy egy ARM alapu mikrokontroller az tulzas egy LED villogtato vacakba. Szamitastechnikailag valoban tulzas egy 32 bites processzor, de ha egyszer olcsobb, mint 4 TTL IC vagy egy ATmega8, akkor miert ne hasznaljam az ARM-et?
(#) csatti2 válasza csabeszq hozzászólására (») Ápr 4, 2016 / 1
 
Próbáltál már mikroszkóp segítségével forrasztani? Természetesen nem az általánosan ismert biológiai mikroszkópra gondoltam, hanem a kis nagyítású sztereo mikroszkópra (nagy munkatávolsággal). A saját mikroszkópomnál kb. 15cm a tárgy és a lencse közötti távolság (0,5x előtét lencsével, így kb. 4,5-22x os nagyítást tud, az előtét lencse kb. másfélszeresére növeli az eredeti munkatávolságot), kényelmesen odaférek a forrasztópákával és nem gond a szemüveg stb. sem (szemenként beállítható a fókusz). Meglepő milyen pontosan/finoman tud az ember dolgozni ha látja mit csinál. Minden forrasztáshoz persze nincs rá szükség, de a TQFP100-asokat és hasonlókat már mindig így forrasztom be.
Persze nem csak forrasztásra jó. Láthatóak a forrhidak és egyéb hibák. Remek a 3D hatás is (ezért hívják sztereo mikroszkópnak). Emlékszem, hogy amikor megkaptam órákon keresztül csak alkatrészeket és egyéb tárgyakat forgattam alatta és élveztem a látványt.
A hozzászólás módosítva: Ápr 4, 2016
(#) Norberto válasza csatti2 hozzászólására (») Ápr 4, 2016 /
 
Szerintem ilyen mikroszkópok használatánál a megfelelő mennyiségű és minőségű fényviszonyokról is gondoskodni kell. Különben a sok csillogó fényponttól jojózni kezd az ember szeme.
A hozzászólás módosítva: Ápr 4, 2016
(#) kapu48 válasza csatti2 hozzászólására (») Ápr 4, 2016 /
 
Szerintem ilyen mikroszkóp olyan drága!
hogy nem érineg 1 amatörnek, beszerezni!
(#) csatti2 válasza Norberto hozzászólására (») Ápr 4, 2016 / 1
 
Van hozzá LED-es fénygyűrűm. Szegmensenként ki/be kapcsolható a fénye (4 szegmens van), illetve állítható a fényerő is, így tetszőleges megvilágítás kialakítható.
(#) csatti2 válasza kapu48 hozzászólására (») Ápr 4, 2016 / 1
 
A függvénygenerátorom háromszor annyiba került...
Mindenki maga tudja, mi éri meg neki és mi nem, illetve mi a célja az elektronikával, mint hobbival.
Nekem kihívásokra van szükségem. A 15 ezredik utánépített LED-es villogó, illetve 7 szegmenses kijelzőkből összerakott óra engem nem mozgat meg (semmi bajom azzal, ha vkinek ez okoz örömet, de az nem én vagyok). Ahhoz viszont, hogy komolyabb projekteket rakjak össze, szükségem van normális eszközökre. De ettől ez még hobbi marad.
(#) Tartarus_ válasza Tartarus_ hozzászólására (») Ápr 4, 2016 /
 
Összeraktam. Sajnos vagy nem jól számoltam az adc_ertek-et, vagy más nem ok a programban, mert csak 25ms-al hajlandó villogni
(#) csatti2 válasza Tartarus_ hozzászólására (») Ápr 4, 2016 /
 
Az én tippem:
Integerben tárolod az ADC mért értékét és bekapcsoltad az ADLAR bitet (ami igazándiból csak akkor kell ha jó a 8 bites konverzió is). Ezután ha "magas" a mért értéked (1,1V / 2, azaz kb 550mV) akkor a változó túlcsordul és negatív lesz a végeredmény, ami természetesen kisebb mint 220...
Megoldás: Vedd ki az ADLAR-t a konfigurációból.
(#) freechat hozzászólása Ápr 4, 2016 /
 
(#) csatti2 válasza freechat hozzászólására (») Ápr 4, 2016 /
 
Ez nem jó neked. Ez csak a nyák, amire ráforraszthatod a tényleges modult.
(#) freechat válasza csatti2 hozzászólására (») Ápr 4, 2016 /
 
Sejtettem, hogy...
Köszi akkor tovább keresek.
(#) csabeszq válasza csatti2 hozzászólására (») Ápr 5, 2016 /
 
A hobbinál van egy határ, nálam havi 10.000. Ezért nincs oszcilloszkóp, pedig kellene, de a 100-200 az sok.

Lehet, hogy Arduino-ból csinálok egy 100 Hz-eset.
(#) Bakman válasza freechat hozzászólására (») Ápr 5, 2016 /
 
Modul: Bővebben: Link, program: Bővebben: Link. Tesztelve mindkettő.
(#) csabeszq válasza freechat hozzászólására (») Ápr 5, 2016 / 1
 
Szerintem a BlueTooth úgy hülyeség ahogy van (bocs). Én mindenképp wifi modult használnék. A TCP/IP esetén egy mezei böngészővel is szórakozhatsz és még programot sem kell írni.

Az ESP8266 station és access point módban is megy.
(#) Tartarus_ válasza csatti2 hozzászólására (») Ápr 5, 2016 /
 
Köszönöm a segítséget!
Valóban az ADLAR okozta a hibát, de nem kiszedni kellett, hanem csak az ADCH-val visszatérni, ADCL nélkül.
(#) k3gy3tl3n hozzászólása Ápr 5, 2016 /
 
Sziasztok, Atmega328p uc-vel szeretnék 1kHz-es PWM-et csinálni a prescaler használata nélkül. Adott a 16MHz órajel amin jár az uc. Sajnos a TCCR0B regiszterben lévő CS02, CS01, CS00 bitekkel 1024-nél nagyobb prescalert nem tudok beállítani viszont így kb 16kHz-es lesz a PWM-em. Viszont látom hogy van lehetőség T0 lábon órajelet adni "External clock source on T0 pin. Clock on falling edge." vagy "External clock source on T0 pin. Clock on rising edge". A kérdésem az lenne, ezek hogy működnek? Kristály kell csak a T0 láb és a föld közé? Mondjuk ha 1kHz PWM-et szeretnék akkor egy 1kHz-es kristály és ennyi? Még anyit hogy mindenképp a PD5 lábon szeretném hagyni a PWM-et.
(#) tursaba válasza k3gy3tl3n hozzászólására (») Ápr 5, 2016 /
 
Szia! Kristállyal szerintem nem fog menni. TTL szintű 1 KHz-t adjál be neki, felfutó, vagy lefutó él beállítással.
(#) Kovidivi válasza k3gy3tl3n hozzászólására (») Ápr 5, 2016 / 1
 
Most akarod a prescalert használni, vagy sem? Azt írod, nélküle szeretnéd megoldani, aztán meg hogy 1024-nél nagyobbat nem tudsz beállítani. Timer0 egy 8bites timer. 16MHz-et leosztod 1024-el, akkor kapsz: 15625-öt, 1 mp alatt ennyi órajeled van. Ezt ráengeded a 8bites timerre, akkor a timer 255 után fog túlcsordulni, tehát 15625/256=61Hz-es PWM-et kapsz.
1KHz-es PWM-hez neked így kell számolnod: 16 000 000Hz/256=62500Hz <- ennyire kell csökkented az órajelet. 16 000 000/62500=256. Ekkora előosztó kell neked. És van is ilyen, tehát tökéletes.
(#) gabi20 válasza k3gy3tl3n hozzászólására (») Ápr 5, 2016 / 1
 
Szia nem 16kHz-es lesz a PWM ha 16MHz-ről járatod a processzort és 1024 - es előosztót állítasz be. Én ATmega16-ot használok, 16MHz-ről jár a uc, PWM phase correct modet használok, és ha 1024-előosztót állítok be akkor csak olyan 30Hz PWM jelet kapok. Előosztás nélkül (CS02=0,CS01=0,CS00=1) pedig 31,25kHz-et.
A prescalerral csak a timer órajelét állítod be, a kimenetre nem közvetlenül az kerül.
Ha külső órajelet használsz mondjuk a T0 lábon, akkor minden egyes órajel hatására egyel növekedni fog a TCNT0 értéke.
A hozzászólás módosítva: Ápr 5, 2016
(#) k3gy3tl3n válasza Kovidivi hozzászólására (») Ápr 5, 2016 /
 
Igazatok van, nem jól számoltam ki a frekit. Nekiugrok újra. Egyébként nem fontos pontosan 1kHz-es jel, csak körülbelül, DC motor FET-jét hajtanám róla.
Akkor számoljunk
16MHz CPU frekinél, 8 bites Timer esetén, fast PWM freki:
-ha a prescaler=8 -> 7812.500Hz
-ha a prescaler=64 -> 976.562Hz
-ha a prescaler=256 -> 244.141Hz
-ha a prescaler=1024 -> 61.035Hz
A phase correct PWM frekik pedig mindenhol fele annyi mint a fast PWM.
Kovidivi ezek szerint 64-re kell a prescalert állítanom hogy kb 1kHz-et kapjak.
(#) Kovidivi válasza k3gy3tl3n hozzászólására (») Ápr 5, 2016 /
 
Ja, elszámoltam magam 16 000 000/1000=16000, 16000/256=62,5 -> 64-es előosztó.
(#) k3gy3tl3n válasza Kovidivi hozzászólására (») Ápr 5, 2016 /
 
Akkor értek mindent! Mindenkinek köszi a segítséget!
(#) gabi20 válasza k3gy3tl3n hozzászólására (») Ápr 5, 2016 /
 
Oszcilloszkóppal meg tudod mérni a frekvenciát, vagy rákötsz a kimenetre egy piezot és meghallgatod
(#) Max26 hozzászólása Ápr 6, 2016 /
 
Sziasztok!

Ennek az áramkörnek a teljes áramfelvétele 2mA, amit szeretnék lecsökkenteni.
Meg lehetne azt csinálni, hogy az AVR legyen alvó módba mindaddig, amíg az ADC el nem ér egy adott értéket?
(#) Ivan93 válasza Max26 hozzászólására (») Ápr 6, 2016 /
 
Szia! Az analóg komparátor tud interruptot generálni, ami felébresztheti az avr-t, de ehhez fel kell használni a PB0-PB1 lábakat.
(#) Kovidivi válasza Max26 hozzászólására (») Ápr 6, 2016 /
 
Megteheted azt is, hogy alvó módból fix időnként felkel az AVR, és megnézi, mekkora a feszültség. Ha akksi feszültséget mérsz, bőven elég 10mp-ként felébreszteni. Ha valami mást, amire azonnal reagálni kell, akkor a belső komparátort kell használod, de akkor csak egy értékhez tudsz komparálni, kivéve, ha előállítasz egy másik lábbal PWM jellel és RC szűrővel egy referencia feszültséget, ami az ébresztések időtartamától függően vagy megy alvó módban is, vagy nem, ugyanis az RC szűrőnek van egy ideje, szépen lassan emelkedik a feszültség a végleges értékig.
(#) Brian88 hozzászólása Ápr 6, 2016 /
 
Sziasztok
Lehet készen venni olyan kapunyitó távirányítót amiben programozható AVR-van?
Magyarán szólva, kellene egy távirányító amin az én saját kódom fut.
Következő: »»   730 / 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