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   655 / 837
(#) Anthym válasza rolandgw hozzászólására (») Márc 18, 2015 /
 
Köszi, ezek nagyon hasznos cuccok. Lassan kiszenvedem a dolgot, ezzel is tanulok legalább
(#) Anthym válasza rolandgw hozzászólására (») Márc 18, 2015 /
 
Sikerült megcsinálni, ezer köszönet.
(#) Anthym válasza rolandgw hozzászólására (») Márc 18, 2015 /
 
A következő problémám akadt: mivel átállítottam a fuse biteket, hogy 16Mhzen működjön, külső oszcillátor segítségével, így ha újból akarok rá programot tölteni, már nem tudok. Nem érzékeli az eszközt. Hogyan tudnám a fuse biteket vissza állítani, így, hogy nem érzékeli? Mi a teendőm ilyen esetben? köszi a választ
(#) zombee válasza Anthym hozzászólására (») Márc 18, 2015 /
 
XTAL1 lábra órajelet adni, min. 1MHz-et. Gondolom azért állítottad át mert VAN külső oszcillátorod...
(#) rolandgw válasza Anthym hozzászólására (») Márc 18, 2015 /
 
Mi volt a két hexa érték amit ráküldtél ?
(#) Gj hozzászólása Márc 19, 2015 /
 
Üdv!
Egy ATMEGA8U2 MCU-t szeretnék összekötni PC-vel a beépített USB interface-én (Nem tudom, ez-e a helyes szó.) keresztül. Néztem az adatlapját, de egy halom regiszter leírását láttam csak az USB-nél és nem igazán értettem meg, hogy is zajlik a folyamat.
Annyira lenne szükségem, hogy bekonfiguráljam, és ha fogadok USB-n adatot, akkor keletkezzen egy megszakítás, és ennek a megszakításnak a végén tudjak adatot visszaküldeni, majd a megszakítás után ismét várjam a bejövő adatot.

Használta már valaki ezt az IC-t?
Az legyen szíves, ossza meg velem a kommunikáció menetét!
Előre is köszönöm!
(#) zombee válasza Gj hozzászólására (») Márc 19, 2015 /
 
Szerintem felejtsd el hogy nulláról indulva beállítasz mindent mert nem fog menni. Én pl. hiába
programozok AVR-t lassan 10 éve, hiába vagyok a regiszterek és megszakítások megszállottja,
nem vállalnám be egy USB-s AVR felprogramozását bár egy kis utánaolvasással biztosan menne.
De mégis használok USB-s AVR-t, mert néha kell. És néha én is belenyúlkálok a lelkivilágába.

Én azt javaslom, hogy a LUFA oldaláról töltsd le a pakkot, keresd meg a "virtualserialport" részt,
módosítsd a progit és töltsd le a FLIP programmal az AVR-re. A cucc egy "sima" USB-s COM port emulátor. Annál a résznél ahol az UDR-t írja, na ott kapod a bájtokat a PC-től, és a kommunikáció sem bonyolult PC oldalról mert csak a megfelelő COM portot kell megnyitni. Pl. PureBasic-ben az "OpenSerialPort" függvénnyel máris felépül a kommunikáció a programod és az AVR között...
A hozzászólás módosítva: Márc 19, 2015
(#) Gj hozzászólása Márc 19, 2015 /
 
Üdv!

Konkrétan a téma első problémája:
Egy ATMEGA8U2 MCU-t szeretnék összekötni PC-vel a beépített USB interface-én -nem tudom, ez-e a helyes szó- keresztül. Néztem az adatlapját, de egy halom regiszter leírását láttam csak az USB-nél és nem igazán értettem meg, hogy is zajlik a folyamat.
Annyira lenne szükségem, hogy bekonfiguráljam, és ha fogadok USB-n adatot, akkor keletkezzen egy megszakítás, és ennek a megszakításnak a végén tudjak adatot visszaküldeni, majd a megszakítás után ismét várjam a bejövő adatot.
Itt az IC!

Használta már valaki ezt az IC-t?
Az legyen szíves, ossza meg velem a kommunikáció menetét!
Előre is köszönöm!
A hozzászólás módosítva: Márc 20, 2015
(#) teglascs hozzászólása Márc 20, 2015 /
 
Sziasztok,
teljesen új vagyok a témában. Ez -gondolom- a kérdésemből rögtön ki is derül.
Láttam a neten, hogy Arduino-n működő sketch-eket nagyon egyszerű módon feltöltenek ATtiny-kra.
Az lenne a kérdésem, hogyha a lábak száma, memória méretek, MHz-ek stimmelnek (azaz az ATtiny legalább annyit tud, mint az Arduino lapkán lévő chip), akkor elvileg a kis program a Tiny-ra feltölthető?
(#) Massawa válasza teglascs hozzászólására (») Márc 20, 2015 / 1
 
Miután az Arduino is Atmel chipet használ egyforma a program strukturája a többi Atmel chippel. Igy gyakran elég egy rövid felülvizsgálat esetleg apro korrekcio, ha egy másik chipre költöztetek egy progit. A barátom, aki profi programozo már ugy irja a programokat, hogy azok univerzálisan futnak szinte valamennyi Atmel chipen. ( egyes makrokban az elsö kritérium, hogy milyen a chip tipusa és az szerint kezeli a kodot.). Én eddig 4 procival folgoztam és nem volt gond velük.
(#) kapu48 válasza teglascs hozzászólására (») Márc 20, 2015 / 1
 
Ha az adót program által használt belső komponensek megvannak az ATtiny-ban is megoldható!

De szerintem nem 1 kezdőnek való feladat!
Tisztában kel lenni az ATMEL procik belső felépítésével.
(#) teglascs válasza kapu48 hozzászólására (») Márc 20, 2015 /
 
Köszi mindkettőtöknek.

Nem, nem tervezem még ilyenekkel foglalkozni (most kezdtem csak az Arduino-val bíbelődni), csak az keltette fel az érdeklődésemet, hogy az Arduino kártyákon (típustól függően, persze) milyen sok minden megtalálható, de valószínű, hogy egy adott feladathoz ezek jó része felesleges (nyilván ezért univerzális maga az Arduino eszköz).
Ebből a szempontól "takarékosabb" megoldás, ha meg tudjuk oldani, ha csakis olyan és annyi hardver eszközt használunk, amennyi kell.

De ez csak puszta filozofálgatás a részemről, én olyan messze vagyok ettől a szinttől, mint Makó a híres, bibliai várostól.
(#) wbt hozzászólása Márc 20, 2015 /
 
Sziasztok Nagytudásúak!
AVR-ben fut egy gagyi program aminek egy apró impulzusgenerátor részlete időkritikus (+- 120nsec). Na, eddig o.k. DE! a kedves megrendelő kiagyalta, hogy legyen IR/RF távvezérelhető a cucc. Sajnos a pupák felhasználó bármikor nyomhat gombot a távirányon, ráadásul manapság elég hosszúak az IR kódok. Az időkritikus rész megszakítani nem lehet. Akkor ezt hogyan szokás lekezelni?
Vagy váltanom kell STM32-re emiatt? (DMA a kivitel, IR meg elbújik valahol...)
A "kivitel" 20-40x fut le és 300byte-ot visz ki /sec, szóval elég sűrűn "foglalt" a proc.
Láttam kínai vackot, sajnos levakart IC-vel, de szerintem 32-bites 8 patájú kontroller van benne, mert nekem nem jött ki az időzítés sehogy. És Nektek? Ötlet?
(vagy marad a 2db uC, egyik az távirányra, másik a vezérlésre)
JAni
(#) csabeszq válasza wbt hozzászólására (») Márc 21, 2015 /
 
Miért nem raksz bele még egy Attiny25-öt, vagy ilyesmi 8 lábú chipet?
Az egyik lábán figyeli az IR/RF vackot, a többin meg jelezhet?

Nálam alapszabály, hogy ha 1 mikrovezérlő nem elég, akkor berakok kettőt szórakozás helyett.

Értelemszerűen nem tömeggyártott cuccoknál. Egy Arduino nano, vagy mikro 800 Ft, kettő meg 1600 Ft. Az Atmega328P-t legutóbb 450 Ft-ért vettem.

Kell egy kis idő, amíg az otthoni 1 feladat 1 PC rendszertől eljutsz az 1 feladat, több elosztott mikrovezérlőig. Viszont érdemes ezt a lépést megtenni a gondolkodásmódodban.
A hozzászólás módosítva: Márc 21, 2015
(#) wbt válasza csabeszq hozzászólására (») Márc 21, 2015 /
 
Sajnos, úgy érzem segédproc lesz a vége
Már csináltam osztott rendszert (egy csokor hőmérő, helyi uC-k, két vezetéken a saját tápáramával kommunikált a központban lévő vevő uC-vel amely egy 4-bites belső buszon adta át a főnök uC-nek az adatokat), csak a megrendelők 50Ft többletköltségért is eljátsszák a nagy halált, nő a panelméret (pl. SO8W tok miért jobb mint a kisebb SO8???) stb.
No, akkor most már csak azt kellene kitalálni, hogyan kommunikáljunk 1 lábon (mert a fő vezérlő is csak 8-lábú ). INT nincs, Timer nincs, egy belső ciklusidő az össz lehetőség, ami 20-40Hz között mozog megjósolhatatlanul. Szép feladatnak látszik.
Kínai cuccokban is láttam, hogy az RF vevőnél van egy uC csak erre, de bosszantó, hogy találtam 1db SO8 tokos vezérlőt IR fogadással is. Valamit nagyon tudnak vagy is én nem tudok sajnos.
Köszönöm a gyors reagálást!
JAni
(#) zombee válasza wbt hozzászólására (») Márc 21, 2015 /
 
Az IR is csak 1 lábon kommunikál, igaz? Szerintem az elég lesz.
Fogod a segédprocit, rárakod az IR-t ami fogadja a jeleket. A segédproci másik lábát felhúzó ellenállásra állítod és összekötöd a főnökkel. Ha jön egy IR jel, a főnök felé küldesz egy impulzust, lehúzod egy rövid időre majd vársz. A főnök csak akkor fog válaszolni (szintén egy lehúzó impulzussal) ha tudja fogadni a jelet. Ezután elkezdi adni a jelet, amit az IR adása közben feljegyzett...
(#) wbt válasza zombee hozzászólására (») Márc 21, 2015 /
 
Igen, valami ilyen dereng nekem is, de át kell szerveznem az egészet, mert amit írtál, az INT lábon lenne jó (azt meg én most ADC-nek használom). Normál portfigyelés ...háááát eléggé kétséges, mert 8-féle program fut és ezek ciklusideje nagyon eltérő, tehát nem tudom megjósolni, oda érek-e egy bejövő L-szintre egy lábon. Ma kiméregettem a raktárban fellelhető IR távirányt (1/2m3, ezt kellene használni), szép is, jó is, de a vevőjében van egy külön uC ami 19200bps-es sorosra átrakja az IR kódot (aminek máskor örülnék) és kirak 8 byte-ot. Így már 3 processzoros lesz az egész De még ki kell agyalnom, hova is vezetem be a jelet, valószínűleg az egyetlen LED kimenet vagy az egyetlen nyomógomb bemenet kapja majd meg.
(ne távirányoljon meg nyomkodjon egyszerre a pupák user) Már az is eszembe jutott, hogy 5 gombot analóg szinten adom át...de ez még kósza gondolat)
(#) kapu48 válasza wbt hozzászólására (») Márc 21, 2015 /
 
Nem igazán értem az egész disz kurzust?

Azzal kezdtél, hogy menyire költség érzékeny a megrendelő!

Utána minden áron 2 uC-t akarsz használni 2 ilyen 1*ű HW-ből megszakításokkal megoldható feladatra?
Miközben csak neki kellene ülni és ASM-ban regiszter szinten megoldani a feladatot, 1 uC-vel.
(#) wbt válasza kapu48 hozzászólására (») Márc 21, 2015 /
 
1db uC-ben van sűrűn használva egy időzítésérzékeny rész, azt nem lehet megszakítani!!!
A távirányt meg bármikor/bármilyen hosszon nyomogathatja a felhasználó, azt meg fel kellene dolgozni, de lehet, nincs rá idő, lekésem az első pár bitet pl. Akkor meg már megette a fene az egészet. Az időérzékeny dolog eleve ASM rész. Sajnos ott már nem lehet kapálózni
Az egyetlen jó megoldás az lenne 1db uC-vel, ha a uC tudna DMA-t az adatkivitelre, de ilyen módot egyik sem tud (vagy nagyon pazarlóan).
(#) kapu48 válasza wbt hozzászólására (») Márc 21, 2015 /
 
Adás vagy vételről van szó?
Bár tök mindegy, mindkettőre lehet rövid megszakítást írni.
Csak annyi, hogy X regiszterben tartod a memória címet, és szinte semmi verem műveletet nem kel végezned. 1 regiszterbe Írod vagy olvasod a SPI regisztert, X-el címzett helyre kirakod vagy olvasod.
Növeled X-et.

Mind ez 16MHz-en olyan rövid idő, hogy közben a lassú IR még magához sem tud térni!
Csak meg kel oldani, hogy az X regiszter mindvégig sértetlen maradjon.
A hozzászólás módosítva: Márc 21, 2015
(#) wbt válasza kapu48 hozzászólására (») Márc 21, 2015 /
 
Nem titok a dolog, (100x) WS28xx LEDszalag-vezérlésről van szó, ahol az adatkivitel 100-120nsec eltérést enged/bit. Ezt megszakítani nem lehet, illetve valami sunyi módszerrel bele lehet köszönni, de akkor meg a kijelzésen látszik (ha béna vagyok, eldobja az egészet).
Talán lehetne egy 30usec-es szeletet még nyerni valahol egy ponton, de a külső jel sajnos bármikor jöhet. Már okosodok az átverésén, valami faramuci módszer körvonalazódik:
SPI HW kivitel egy kis külső HW segédlettel lehet nyerni egy 1 usec-es ablakot. De ezt még ki kell mérni. Szerencsére maga a cucc működik normálisan, ez a külső infra/RF csak hab lenne a tortán. (a megrendelő végül is rákérdezett meg hogy jó lenne...)
(Ahhoz képest, hogy játéknak indult anno dolog...)
(#) zombee válasza wbt hozzászólására (») Márc 21, 2015 /
 
Ahhoz képest hogy olcsó cucc kell, elég magasak a megrendelő igényei. Ennyi erővel nagyobb AVR kell bele, pl. egy ATMega8-as már alig drágább mint egy ATTiny25-ös. Csak jóval nagyobb.
Amiért egy ATMega mégis jobb lenne az az USART! Egy jó beállítással elérheted, hogy egyetlen utasítással több bitet is kiküldjön a cucc, lényegében egy DMA-ként használhatod 3 bit kiküldésére. Egy inverter kell a kimenetre, mert az inaktív állapot a magas. Az UBRR-t úgy kell beállítani hogy egy bitidő harmada legyen ami kb. 400ns. Sajnos ez kicsit rövidebb mint amit be lehet állítani ezért szinkron mód kell és akkor használható lesz. A bitek számát 7-re kell állítani. A legelső harmad bit mindig HI(azaz a TxD lábon LO), a harmadik pedig LO. Az első bit első harmadát a startbit adja, az mindig LO. Aztán két bit, az első az adat a második LO. Aztán 3 bit a WS2812 második bitjéhez, a harmadik bit utolsó harmadidejét a stopbit adja(igen, 1 stopbitre kell állítani). Az a jó az egészben hogy az AVR a stopbit után egyből a következő bithármast fogja küldeni ha a küldés alatt írva volt az UDR.
A hozzászólás módosítva: Márc 21, 2015
(#) csabeszq válasza wbt hozzászólására (») Márc 21, 2015 /
 
Atmega328P + Adafruit_Neopixel. Épp manapság szórakoztam ezzel. Megcsinálod egy nap alatt két IC-vel.

Én vettem egy Arduino nano-t 700-ért, library fel, pixelek mennek. Mondjuk 5000 Ft órabér alatt senkivel nem állnék szóba és ha a vevő assembly-t szeretne, bizony írnám a 100.000-es számlát.

Mindent lehet, ha kifizeti.
(#) wbt válasza zombee hozzászólására (») Márc 22, 2015 /
 
Köszönöm a kimerítő hozzászólásod, ezt a megoldást archiválom, jó lesz ez még!!!
(most nem, mert UARTom sincs, az USI-vel agyaltam, de nem nyertem volna sokat vele, igaz, az is még terítéken van)
(#) wbt válasza csabeszq hozzászólására (») Márc 22, 2015 /
 
Az első verzió mini M328P-s USB V3 kispanellel készült, de csak azért, hogy legyen terminál, amivel az összes belső paraméter állítgatható legyen. Ha kijátszotta magát, akkor a megadott paraméterek fixen rögzítve lesznek és a low-cost verzióban már csak egy Attiny85 lesz.
Ezt is megírtam már, jól is megy, csak itt lebeg ez a fránya IR/RF távirányíthatóság.
Az Adafruit cuccokat is meg kellene néznem, mert többen kérték a program illesztését ezekhez, de idő-pénz kérdése minden. (valami nyakkendőt is említett valaki-valahonnan asszem 16 LED-es...) Tehát, ha nem lesz távirány, nem nagy baj, de sokat dobna rajta.
(no meg eltűnne a garázsból párszáz távirányító is végre) Most így végignézve a dolgokat, ha lesz a T85 mellett még egy akármi az IR-hez, területben/árban már ott vagyok, mint ha betennék egy 328-at kb.
Nagyon köszönöm az iránymutatásokat!
(#) RoliNyh hozzászólása Márc 22, 2015 /
 
Sziasztok!

Nem szeretnék átolvasni több mint hatszáz hozzászólást, de csak egy egyszerű kérdésem van.
Jól gondolom, hogy a "PIR" szenzor az csakis a kibocsátott infra hő mozgását (ember vagy állat) érzékeli, és tárgyakét nem?

Konkrétan erről van szó.: PIR Szenzor

Szóval ha egy tárgy (úttest) mozog az érzékelő hatáskörzetében, az nem fog bejelezni?
Konkrétan, ha felszerelek egy ilyen a kocsim aljára, úgy hogy az úttestet figyelje, az úttest mozgását sem fogja érzékelni? Nappali menetfény bekapcsolására gondoltam amúgy...

Más ötlet, milyen érzékelővel lehet ezt megoldani ami Ardiuno kompatibilis? Köszi...
(#) zombee válasza RoliNyh hozzászólására (») Márc 22, 2015 /
 
Gyújtáskapcsolóra kötöd, esetleg a generátorba belepiszkálsz és egy külön diódahidat építesz bele. A nappali menetfény nem aludhat ki ha pl. megállsz a piros lámpánál, annak a motorral együtt kell működnie.
(#) RoliNyh válasza zombee hozzászólására (») Márc 22, 2015 /
 
Nyilván nem fog kialudni, gyújtáskapcsoló "AC ON" állása is figyelve lenne. De ha megállok, bizonyos késleltetés után kapcsoljon le, akkor is ha az "AC ON" jel megvan, mert pl parkolás közben hallgatom a magnót, és az arról megy... A generátort meg kéne bontanom, ha arról akarok levenni feszültségjelet ha jól gondolom...
(#) zombee válasza RoliNyh hozzászólására (») Márc 22, 2015 /
 
Esetleg rácsatlakozhatsz a kézifék érzékelőjére, kb. ugyanaz mint a "menetérzékelő" csak jóval egyszerűbb mert nem kell semmit sem telepíteni vagy szétszedni. A generátort sajnos szét kell szedni mert az AC részre kell egy háromfázisú diódahidat kötnöd ami még a "házon belül" van.

Elég primitív, buta ötlet volt attól aki kitalálta hogy a rádió a gyújtáskapcsolóról menjen. Én pl. külön kapcsolót használok erre a célra így parkoláskor bármikor hallgathatok zenét, és indításkor sem indul el automatikusan a legutóbbi zene. Na jó ezt azoknak találták ki akik a gázpalackot is elfelejtik elzárni.
A hozzászólás módosítva: Márc 22, 2015
(#) Ricsi89 válasza RoliNyh hozzászólására (») Márc 22, 2015 /
 
Nappali menetfénynek járó motornál, vagy rákapcsolt gyújtásnál mindig mennie kell, addig amíg a helyzetjelzőt fel nem kapcsolod. Tehát nem értem mit akarsz ezen az egyszerű dolgon bonyolítani. Veszel egy kis vezérlőt a menetfényhez, adsz neki testet, egy gyújtás áramot és helyzetjelző áramot, majd kész is. Vagy relével, relé egyik tekercsvége gyújtásra, másik vége meg helyzetjelzőre és kész. Minden egyéb esetben műszaki vizsgán bele fognak kötni és le sem vizsgázhat úgy(persze van az a pénz, amiért igen, de megér annyit?).
Következő: »»   655 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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