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
Parancsolj!
Az interrupt lefut ~20ms -os időközzel. Ott végezd el amit kell.
Kis hozzáfűznivaló: A reset akkor aktív, hogyha alacsony logikai szinten van, vagyis földre húzod. Kivétel az, amikor magas feszültségű resetet adsz neki, ami ugyanis 12 V.
Ez igen!
Köszönöm mindenkinek aki segítségemre volt! Üdv!
A most megjelent TinyTemp cikkhez volna kérdésem.
Értelmeztem a forráskódot, és egy valamit nem értek: A hibajelből számolt kitöltési tényezőt miért nem azonnal helyettesíti be Topi az OCR0A regiszterbe, miért csak minden századik lépésre növeli/csökkenti, méghozzá csak eggyel, (aztán még ott van a 100 ms késleltetés a tetejébe)? Értem én, hogy egyébként villámgyors a kontroller, valamint a szabályozott folyamat sokkal lassabb a szabályozóhoz képest stb. Tekintve, hogy „a szoftver az egyszerűség elvét követve keszult”, ez furcsa számomra.
Ez igaz, viszont, ha akarod hasznalni az I/O labakat, es programbol letiltod a JTAG-et, akkor mar szukseged van ra.
Az AVR-nel az ISP kb ugyan az mint a PIC-nel, tehat ugyan ugy hasznalhatod normal uzemmodban.
A RESET egyaltalan nem aramtalanit semmit sem, csak alapalapotba hozza a regisztereket. Idézet: „Nyomógombot szoktam, de feleslegesnek tartom azt is, ha a táp ki-be kapcsolás helyettesíti.” Nem helyettesiti, a ketto nem ugyanaz! Pl a reset eseteben nem veszited el az adatokat a memoriaban, azaz lehet arra is hasznalni, hogy egy beragadt allapotbol kihozd az eszkozt, de ennek ellenere ne kelljen mindent elolrol kezdeni. Egyik tipikus felhasznalas mikor a kontrollered alvo allapotba teszed, hogy energiat sporolj meg, es gomb nyomasara ebreszted fel. Idézet: „De ezek szerint a reset és power off-on közt a különbség, h a reset az uC nem minden részét áramtalanítja, csak a processzor részt.” A reset nem aramalanit, hanem egy meghatarozott allapotba hozza a kontrollered. Idézet: „A programozó interfészeket pedig azért nem értem, mert a PIC-nél ilyen gond nincs, szó nélkül lehet bármit kötni azokra a lábakra is, de tapasztalatom szerint AVR-nél nem így van.” PIC-nel sem tehetsz oda akarmit, es az aramkort a programozotol le kell valasztani - pl ellenallassal vagy kapcsolo elemekkel. Kulonosen oda kell figyelni a terhelesre, kapacitivitasra es induktivitasra. Ezen felul termeszetesen az oda kapcsolt aramkornek nem szabad, hogy aktiv magas vagy alacsony allapotba hozza a vezetekeket. Legjobb ezeket beken hagyni, es csak ha nagyon nincs mas megoldas felhasznalni.
Sziasztok!
Mit gondoltok, jó ez a kapcsolás így? Nagy 7 szegmensű kijelzőket fog meghajtani. Köszönöm előre is!
Biztosan nem fog működni mert nem kap az AVR tápot. Ahová Te a tápfeszt kötötted az az ADC analóg áramkörének a tápja.
Továbbá kérdéses még ,hogy a 7805 IC milyen tápfeszültséget kap? Ha eleve szűrt 12V-ot akkor elhagyhatóak a kondenzátorok de ha nem akkor bizony kellenek. Itt egy egyszerű megoldás a 7 szegmenses kijelzők meghajtására. Tipp: ha takarékoskodni szeretnél a portokkal használhatsz BCD-->7 szegmeses dekódert pl. a 7447-es IC-t.
Értem!
Ha nem akarom az ADC-t használni annak a tápját nem kell bekötni? A kondezátorokat rárakom a 7805-ösre. Más baj van vele?
Bekötheted az ADC tápját is, baja nem lesz, azonban nyilván teljesen felesleges.
Azt mivel lehetne megcsinálni, hogy a soros Tx kimenetet rá tudja kapcsolni az AVR vagy erre vagy arra az eszközre(úgy hogy küld valamit az egyiknek, aztán átkapcsol, és így tovább)?
CD4066-os IC-vel, vagy akár CD4051-es IC-vel is csinálhatsz ilyen kapcsolóáramkört. A 4066-ossal 4 eszközre tudsz kapcsolni, a 4051-essel pedig ha jól emlékszem, akkor 8-ra. A 4051-es még jobb is, mert alapból csak 1 bemenete van, és bcd kóddal választhatod ki, hogy melyik kimenettel legyen összekötve a bemenet.
Nagyon köszönöm, augre-nek is, ez a CD4051 nagyon jónak tűnik, viszont hiába nézem az adatlapot, nem bírok rájönni, mi kell a VEE lábra? Mert ha jól tudom a VDD a tápfeszültség a VSS meg a GND, csak ezt nem tudom.
És akkor ezt úgy kell használni, hogy a 3-as lábra megy a Tx, és az A, B, C-n meg beállítja az AVR, hogy melyik kimenetre menjen, és azon ott lesz ami bemegy?
Azért van a Vee, mert lehet szimmetrikus táppal is táplálni, de ha neked az nem kell, akkor kösd testre. A többi viszont stimmel. 3-asra a kontroller Tx lába, a kimenetekre meg az eszközök, az A,B,C lábakra meg a megfelelő kódot adod, attól függően, hogy melyik kimenetre legyen kapcsolva a 3-as láb.
Nincs ellenallas (vagy mas aramkorlatozas) a LED-eken, azonkivul a kapcsolo tranyok emittereit foldre kellene kapcsolni, mert igy csak lebeg... A bazisellenallasok ertekeit be kell jelolni! (kulonben honnan tudnank mi kell oda, igy a kapcsolas helyesseget sem tudjuk ellenorizni)
A AVR Vcc es GND-jet be kellene kotni, kozejuk 100nF keramiat tenni. A 7805 ele es moge buffer kondikat rakni, moge pluszban egy keramiat (100nF - 1uF). Amugy a foldet es a tapvezetekeket nem kell vegig huznod a rajzon, van ezekre megfelelo jeloles.
Köszönöm szépen! Ki fogom próbálni, amint veszek CD4051-et.
Shifteled mindig eggyel jobbra, majd a kapott számot vagyolod 1-el. Ebből utána már csak az adott bitet kapod vissza, azt meg csak ki kell rakni. Elvileg.
Nem egeszen tiszta mi az input es mi az output? De nagyvonalakban: Megnezed a legalso bit 0 vagy 1 (ES muvelettel kiszeded azt a bitet...). Ennek megfeleloen billegteted a port labat, majd osztod az inputot 2-vel (shifteled jobbra eggyel, ugyanaz az eredmeny)... Ezt ciklusban csinalod, hogy az osszes bit kimenjen.
Az egész csak annyi, hogy ki kell tenni egy shiftregbe pl. 0x0F-et bitenként. Megvan a megoldás, a maszk 0x01 lesz, amivel össze &-elem az adott számot úgy hogy mindig shiftelem jobbra eggyel, (szerintem pont ezt javasoltad Te és Ricsi89 is) vagy balra de akkor a maszk nyilván 0x80. Nem tudom hogy nem jutott eszembe egyből.
Köszi amúgy!
Én is ezt akartam, csak éselés helyett valamiért vagyolást írtam.
Nem foglalkozik itt valaki gyári égető javítással? Még nem tudom, hogy de sikerült tönkre vágnom .
AVR ISP mkII, és van egy elméletem, hogy hogyan ment tönkre. Programozás közben az egyik láb letestelődhetett így rövidre záródhatott az égetőnek az a kivezetése.
Remeltem, hogy JTAG ICE mkII, mert annak az FPC kabelevel van sok gond, es arra tudok megoldast...
Akkor csak azt tudom javasolni, hogy a programozo csatlakozo elotti IC-t csereld ki. Ott minden bizonnyal egy szintillesztest vegzo buffer IC van, ugyhogy nem a mikrokontroller szallt el benne. A tipusat sajnos nem tudom, de bontsd szet nyugodtan es nezd meg.
Köszönöm a segítséget! Holnap megnézem mi hogyan van rajta kötve. Van egy érzésem hogy átkozni fogom még ezt a felület szerelt technológiát.
ISP mkII-nek semmilyen baja nem lehet a rövidrezárt kimenetektől. Nagyon fejlett védelem van benne!
Én máshol keresném a hibát. Sima rövidzár esetén, bármelyik láb bármelyikkel van összezárva, az mkII üzenetben jelzi feléd láb neve szerint hogy melyikkel van gond. Próbáltad másik mikrovezérlővel? Cseréltél rajta szalagkábelt? Mértél a programozó kimenetén jelalakokat? Van kommunikáció? Próbaképp indíthatsz az mkII-n egy firmware frissítést. Ha az végig fut, akkor a benne található atmega biztos hogy él... Ha nincs a kimeneten kommunikáció - jel, akkor inkább túlfeszültség ölte meg. A MAX4712-ban beépített védelem van, 12V-ig baja nem lehet (ill. rendkívül kicsi az esély rá). |
Bejelentkezés
Hirdetés |