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
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.
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...
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ó. Idézet: 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? „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.”
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
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
Szerintem ilyen mikroszkóp olyan drága!
hogy nem érineg 1 amatörnek, beszerezni!
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ó.
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.
Ö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
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.
Ez nem jó neked. Ez csak a nyák, amire ráforraszthatod a tényleges modult.
Sejtettem, hogy...
Köszi akkor tovább keresek.
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.
Modul: Bővebben: Link, program: Bővebben: Link. Tesztelve mindkettő.
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.
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.
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.
Szia! Kristállyal szerintem nem fog menni. TTL szintű 1 KHz-t adjál be neki, felfutó, vagy lefutó él beállítással.
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.
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
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.
Ja, elszámoltam magam 16 000 000/1000=16000, 16000/256=62,5 -> 64-es előosztó.
Akkor értek mindent! Mindenkinek köszi a segítséget!
Oszcilloszkóppal meg tudod mérni a frekvenciát, vagy rákötsz a kimenetre egy piezot és meghallgatod
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?
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.
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.
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. |
Bejelentkezés
Hirdetés |