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
Hány szubrutint szeretnél használni?
Ötlet 1: If Then-el megvizsgálod a változó értékét és elugrasz a szubrutinra. Ötlet 2: Select Case-el vizsgálod a változót és szintén elugrasz a szubrutinra. Mi volna a feladat pontosan?
Eddig if then-el volt megcsinálva csak így elég hosszura sikeredett (a demo bascom le se fordítja). Ezért gondoltam hogy egyszerűb lenne ha a programban csak egyszer hívnám meg a szubrutint, mindig a változó értékének megfelelően. De mostmár kezdek rájönni hogy úgy meg több szubrutin kéne szóval nagyjából ugyanott lennék vele
Amúgy ez egy feszmérő akarna lenni és az adc értékét tárolja a változó amit hétszegmensere kéne kiírni. Van egy olyan érzésem hogy teljesen máshogy kéne csinálni, csak annyira nem értek hozzá...
Meg untam és már nincs több tippem. Úgysem találtam semmit és a szkóp se nagy tudású sajna.
Beraktam a kapcsitáp helyett egy 7805-öt, melegszik is de nem tudok jobbat.
Select-Case rövidebb, mint az If.
De programkód birtokában többet lehet mondani.... Feszmérő 7szegmenses kijelzése ~ 2-3k alapban.... Format és Fusing sort ne használd - ez viszi a helyet.... És NE single/double tipussal számolj, hanem vedd az érték 100*át. így integer is elég (-32k...+32k).
Üdv!
Egy kérdésem lenne a következő kapcsolással kapcsolatosan. Bővebben: Link A kapcsolási rajzon látható R4-R7-R9 alkotta feszültségosztó. Vegyük az osztóhoz tartozó maximális bemeneti feszültséget 30V-nak. ezután két szélső lehetőség van az osztó kimeneti feszültségét illetően. Trimmer rövidzár, ekkor 6V lesz az osztó kimenetén. Ha a trimmer maximális értéken van, akkor pedig 6.31V lesz az osztó kimenetén. Mindkét érték 5V feletti, ez nekem már nem szimpatikus. Továbbá ATmega8 adatlapjának ADC Characteristics részénél azt olvasom, hogy az ADC lábra jutó feszültség GND- Vref tartományban lehet. A program viszont a 2.56V-os belső referenciát használja. Szóval ez így hogyan működhet?! Vagy én néztem el ennyire valamit?
Ket reszre osztja a merest (csatlakozo 1. lab). Valoszinuleg ennek megfeleloen van a ket fesz szint beallitva. Tehat ket ADC csatornat hasznal hogy atfogja a merestartomanyt.
ui: Az R2 agban 2.2V lesz 30V-nal.
Valoszinuleg az R4-es agat csak addig hasznalja amig a bemeno feszultseg a Vref alatt van. Valoszinu, hogy a 6.3V meg belefer az ADC tureshatarba.
Sziasztok! Keresek olyan kollégát, aki otthon van AVR, vagy PIC programozásban, és vállal bérbe progi írást. Léptető motor vezérlést kéne megoldani. E-mailban írja! Kösz! Tibi
Régebben belekezdtem egy DC-DC konverterhez készíteni hatásfokmérőt. Ott ugyanezt alkalmaztam volna, hogy adott feszültségszintig adott osztóról olvasok be. Nekem viszont sikerült megsütni néhány ADC bemenet így, mikor a leosztott feszültség 5.5V környékén mozgott. Maga az ADC működőképes maradt, a MUX csatornái haltak ki így. Lehet, kerítek majd egy félholt AVR-t, és kötök rá 6- 10V-ot. :eplus2:
Legfeljebb le kell kapcsolni az adott csatornarol a feszultseget.
A linkelt kapcsolast epitettek meg tobben, es mukodott.
Tudom, hogy többen megépítették ezt a kapcsolást, működik is nekik, ugyanakkor nem tudom, mire van alapozva ez a működési feltétel és ez engem zavar.
Talan atvalt digit. bemenetre, es ugy birja a 6.3V-ot.
Nekem annyi a konkrét tapasztalatom, hogy az AVRTools-szal egy egyszerű üres while loopos program nem fordult le atmega8-ra. Volt részemről nagy csodálkozás, amikor megláttam a furcsa hibaüzeneteket.
Mint kiderült ez azért volt, mert a studio 4.19 nem a WINAvr-t tette be alapértelmezettnek. További vizsgálódást nem végeztem, hanem szépen beállítottam manuálisan a WINAvr-t, amivel rögtön helyesen fordult. Avrfreaksen szidják, itt az egyik kolléga azt írta, hogy csak azért, mert a toolchain nem optimalizál jól. Én az említett tapasztalatom miatt tanácsolom el az embereket tőle és mutatok rá, mint elsődleges hibaforrás lehetőségre.
Nálam eddig nem okozott hibát még a régebbi kódoknál sem, sőt, a Knight Rider vezérlő kódja ~50 bájttal kisebb.
Segítségeteket szeretném kérni, egy atiny45 program összedobásához.
Cél: Indexet szeretnék, egy gombbal működtetni. Ok: El van törve kezem, automataváltós a kocsim. Feladat: Egy nyomás 2 sec múlva bal relé behúz Kettő nyomás 2 sec múlva jobb relé behúz Behúzott relé alatt érkező gombnyomás, pedig ki oldja a relét. Most nem akarok meg tanulni programozni, hanem a gondomat szeretném megoldani.
Szerintem így elég balesetveszélyes. Nem figyelsz oda, vagy ott a prell-jelenség, és máris másmerre indexelsz mint kéne. Vagy amíg a 2 gombnyomásra koncentrálsz kiléphet eléd egy gyalogos. A folytatást szerintem mindenki tudja, ráadásul ez miatt a műszakit is bukhatja a járműved!
A motorkerékpárokban az indexkapcsoló egy háromállású kis kapcsoló, lásd: KÉP Ez felszerelhető a kormánykerékre is vagy igazából bárhová, ahol kényelmesebben tudod kapcsolni. Ezen kívül az ablakmosó és az index egy jó autós műhelyben felcserélhető, így jobb kézzel tudod kapcsolni. Ha már AVR, én két nyomógombos verziót ajánlanék, ezen kívül a kormányrúdra egy mágnes+hall-generátor páros sem árt, ami a visszafordításkor automatikusan kikapcsolja. Ha egy kis PC-ventiből vételezed a szenzort akkor jobban jársz mert a "memóriás", az állása egy kis szoftveres szűrés után lényegében azt mutatja hogy legutóbb melyik irányba fordult a kormány. De mire ezt megépíted(akár külső segítséggel is) addigra leveszik a gipszet a kezedről...
A kapcsoló nem jó, elfordul a kezembe és a két nyomógomb szintén, ezért nem jó.
Gipsz levétel, eltarthat márciusig, utána műtét és fel lesz kötve a kezem +6hét. Addig legyek otthon?! Problémát szeretném megoldani továbbra is, egyszerűen. Köszi!
Ettől függetlenül az egygombos megoldás balesetveszélyes.
Ha valaki megsérült, az bizony lemondásokkal jár. Nem akarok a tömegközlekedésnek reklámot adni, még akkor sem ha tudtommal ez idő alatt kedvezményes/ingyenes is lenne hiszen mozgássérült vagy. Egy barátom járt már így, ráadásul zsigulija volt és csak a jobb kezét használhatta. Azt csinálta hogy egyrészt kerülte az indexes manővereket(pl. sávváltás, előzés), türelmesen vezetett és inkább mindenkit elengedett. Kis forgalmú utakon nem is indexelt, a városon belül ha nagy volt a forgalom akkor buszra szállt. És most jön a trükk - balkanyar! Egyszerűen megállt az autóval, átnyúlt az indexhez, majd kivárta a sorát. Kanyarodás után kikapcsolt az index, azzal nem volt probléma. Jobbkanyarnál is hasonló, csak nem fékezett le annyira kivéve ha gyalogátkelő is volt ott...
Számodra balesetveszélyes, Nekem meg nem az.
Nem vezethetnék az számomra a halált jelentené! Mért kell elkanyarodni a probléma megoldásától.. Kinek mi a balesetveszélyes? Tíz autósból hétnek a kezébe a telefon és vezet, ja, az nem balesetveszélyes? Igazad van! Kockázatot én vállalom, még mindig. A tömegközlekedés számomra ingyenes, mégsem nem tudok közlekedni vele! Példát hozhatsz, kioktatni nem kellene, mert jelenleg is vezetek, kényelmesebbé szeretném magamnak tenni! Elárulnád, mi a baj a mozgássérült emberrel? Nem lenne jobb, ha inkább segítenél? Manapság az önzetlen segíteni akarás nem létező dolog, elég szomorú, tisztelet annak a pár embernek. Üdv
A Prellt ki lehet kuszobolni akar szoftveres uton is.
Dehogy veszelyeztet mast. Erdekes modon alakitanak at jarmuvet olyanok szamara is, akik egyik karjukat elvesztettek, sot legalisan kapnak vezetoi engedelyt ilyen allapotban.
Kettoig szamolni meg nem nehez feladat 8 altalanos utan es attol meg lehet kinezni az ablakon. En pl. meg az utasommal beszelgetni is tudok menet kozben, nemhogy kettoig szamolni. Sot a radio gombjait is tudom nyomkodni, meg lepkedni a konyvtarak kozott, mikor kivalasztom a kovetkezo szamot. Kicsit tulspilazzatok a problemat...
Én szóltam. Hogy segítsek is, itt egy rövidke program ATTiny13-ra:
Magyarázat: PB1-re kerül a nyomógomb ami lenyomáskor a földpontra húzza le a lábat. A két kimenet a PB3 és PB4-re kerül. Hosszú gombnyomás esetén az egyik, rövid esetén a másik fog villogni. Az hogy melyiket kötöd bal vagy jobb oldalra az a Te döntésed. Villogás közben a következő gombnyomásra kikapcsol. Ha a villogást az eredeti áramkör állítja elő akkor még egyszerűbb a dolgod, nem kell villogni csak beállítani a portot:
Nem garantálom hogy hibátlan, de a lényeg benne van. Az ATTiny13 olcsó, kell még egy égető, két relé ami vagy az eredeti kontaktusokat zárja vagy villogtatja az égőket, és egy szakember aki beköti mert fél kézzel nehéz lesz átbarmolni azt a vezetékköteget. Ja és mielőtt elfelejteném: CSAK SAJÁT FELELŐSSÉGRE! és csak óvatosan...
Akkor kérdeznék: Véleményetek szerint, hogyan lehetne egy AVR-el (Mega16) a legpontosabban mérnem az ADC-vel? Külön tápos megoldás nem lehetséges, egy 5V-om és három csatornán mérnék. LED sor jelenítené meg az eredményt. (3x19 felbontásban, 3 sor multiplexelve).
Üdv Kiborg
Figy, ebből nagyon sokat értett mindenki. Ha nincs külön táp akkor nem mérhetsz úgy mint egy multiméterrel,
de ha előre tudod hogy milyen feszültségekre lehet számítani akkor kis trükközéssel mindent lehet! Javaslom hogy mégegyszer olvasd át az ADMUX leírását, lesz pár érdekes dolog. Például mega16 esetében már lehetőség van differencia mérésére, és ezeken 10x vagy 200x erősítésed is lehet. Így akár nagyon kis feszültségeket(24ľV lépésköz) is mérhetsz(pl. ellenállásmérő söntjén). Ha a sönt a pozitív ágon van akkor mindkét végét leosztod 1-1 nagy ellenállással a felére, és azt méred 200-szoros differencia-erősítéssel. A leosztással a lépésköz csak kétszeres lesz, ami annyit tesz hogy 48ľV, ez egy 0.1 Ohm sönt esetében 0.48mA ami elég kicsi. Az osztó ellenállások lehetőleg 1%-osak legyenek...
1. Az AVCC tapot szurjed akar tobbfokozatu (LC) szurovel. Reszletek: AVR040
2. Az AGND es GND labat valasszad el egymastol a csillagpontban es kulon vezessed oket 3. Hasznalj kulso,pontos feszultsegreferencia forrast es rakjal ra szurokondit 4. A merest "ADC Noise reduction " sleep modban vegezzed 5. A leheto legkisebb orajelet es a legnagyobb ADC osztot hasznald. 6. Kalibrald az ADC-t. Reszletek: AVR120 7. Az ADC bemenetekre adjal szabalyos periodikus zavarjelet es a mereseket atlagold, igy az effektiv felbontast(bitszamot) novelni tudod (a savszelesseg/mintavetelezesi frekvencia rovasara). Reszletek: AVR121 8. A merendo jeleket lehetoleg a legrovidebb uton vezessed es minnel tavolabb egymastol illetve mas vezetekektol. Tovabbi infok az ADC-rol: AVR127
Köszönöm szépen!
Mázlim volt, találtam egy darab ATtiny13-t. Összedobtam egy rajzot, táp az egyértelmű szűrt 7805-el van, nincs a rajzon. Ledek helyére majd bc546-t teszek +12v relé diódával a 14vra, akku fesz, kocsiba a be tápot egy pár u tekercsen keresztül fogja kapni, ezzel is szűrve a motor által termelt zavar/zaj-t. Észrevétel, vagy valami, kell-e rá még?
Szerintem így oké, erre gondoltam, de a programot nem próbáltam ki lehet hogy van benne pár hiba.
Azért a nagyja mégis le van programozva, így a javítás már nem lesz nehéz. Ha a LED-ek már úgy villognak ahogy kell akkor akár szólhatsz is a szerelőnek...
Értem és köszi, a gombra, nem kell felhúzó ellenállás, illetve, olvastam attiny45-nél, be kell kapcsolni? Itt, ez hogyan van?
A DDRB kapcsolásával a felhúzó megvan(~47kOhm), de ha teszel rá egy 4.7k-sat azzal még jobb,
mert a zavarokra kevésbé lesz érzékeny. Megsúgom hogy a kód attiny45-höz is ugyanúgy jó... Idézet: „A DDRB kapcsolásával a felhúzó megvan” Bocsánat, ezt nem tudtam, dobok rá. Köszi. |
Bejelentkezés
Hirdetés |