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
Ellenőrizd, hogy a PORTC-re van kötve a kijelző
PC0 = lcd DB4 PC1 = lcd DB5 PC2 = lcd DB6 PC3 = lcd DB7 PC4 = lcd RS PC5 = lcd E A main-be a POTRC-t állítsd kimenetnek. Esetleg küldj egy jó fotót az egészről és megnézzük. Ennyi jut most eszembe
Most nagyon hülyének érzem magam, már átnéztem több oldalt is, elkezdtem olvasni a forumot is, de arra nem jöttem rá, hogy ha veszek egy programozot, akkor hogy programozom fel fel a microprocesszort??? arra rájöttem, hogy nem olyan mint a pic-é, hgoy ki bele kell rakni a a chipet, a programozoba, hanem van egy kivezetés .. de azt hova kell kötni ???? vki tud adni egy gyors linket, ahonnan ezt megtudhatom ??? vagy egy kis utalást , merre keressem ? ,
köszönöm
1, PortC: JTAGF DISABLE a biztosítékbiteknél
2, a Displaytech 162 kijelzőnél az 1,2 láb a háttér , s a 3...16 láb az ami a többi kijelzőnél a 1...14.
Szerintem olyan gyorsan akarod a választ, hogy még a kérdés megfogalmazására sem szántál elég időt. Így csak az utolsó kérdésedre válaszolok: ADATLAP
Hát igen, a driverben elég csúnya az inicializálás, nem feltétlenül követendő példa.
Erdekes, nekem soha nem volt vele problemam. Ha jol emlekszem HD44780 adatlap alapjan volt irva az init.
Idézet: „Amúgy valamit nem értek: miért állítja a példaprogram elején inputra a port D-t? A port D nem is játszik ahogy néztem.” Ne foglalkozz vele... lehetséges, hogy másból maradt ott. Viszont TavIR-AVR 2. pontjánál leírtakat érdemes megnézni, mert Displaytech-nél a háttérvilágítással kezdi a lábszámozást, ellentétben más típusokkal, ahol a végén van. Bár ha a kontraszt potival tudod állítgatni a kontrasztot akkor valószínű jól kötötted be. Ha menne az inicializálás, akkor a második sor is "beizzana". Szerintem nézd át a bekötést mégegyszer, majd ellenőrizd a program futását. Akár a PORTD-re kötött LED-el ami kigyullad, ha lefutott az inicializációs függvény (gondolom nem gond beleírnod).
Az általam nézett adatlapban 3szor javasolja kiküldeni a 8 bites módot, különböző késleltetésekkel. Én 10-5-5 ms-ot szoktam várni az egyes küldések között, majd csak ezután váltok át 4 bites módba. Sajnos vannak kényes kijelzők pl EWxxx
Megnyitottam a cikket es vzoole init javitasat beirtam.
Amugy majdnem 2 eve nem foglalkoztam vele. Ez a 10-5-5 idozites most ujdonsag. Most 3x 39 ms idozites van, igy hasznalta vzoole. Remelem mar jo lesz..
Hitachi ADATLAP
46. oldal Ja és tudom van aki nem szereti, meg spórolás, stb., de én vissza szoktam olvasni a BF-et. Jelenleg 4×20-as LCD megy a programomról és szerintem gyorsabb, a hasra ütésre írt várakozásoknál. Arról nem is beszélve, hogy így akármelyik gyártó akármelyik HD44780 klónjával megy. Az init rész nekem tovább tart, de azt meg csak egyszer kell úgyis.
AVR-el akarok léptetőmotort vezérelni.
5 drót van így 4 tranyó kéne. A tekercsek 33ohm-osak BC327-337-es van itthon. Mekkora ellenállást tegyek a bázis és a lábak közé, hogy ne égjen le a motor stb....? Ha jól emlékszem diódával is védenem kéne az AVR-t, ha úgy kötöm be, hogy a lábtól egy diódát teszek és utána az ellenállást az jó? Hello Gtk! Nem akarok akadékoskodni, de a
egyszer is elég. Nehogy felvedd, nem kikezdés. Üdv!
Van egy jó elméleti cikk itt HE-n a léptető motorokról, azt átkéne nézned. Amúgy ha egy tranzisztort, mint kapcsoló elemet akarsz használni, akkor a tranzisztor adatlapja alapján pontosan ki lehet számolni a szükséges bázis ellenállást 5V -ra. Én nem bonyolítanám túl a dolgokat. Beraknék egy 1K -sat az AVR lába és a tranyó bázisa közé. Azzal jó esélyel prímán menni fog. Ha akarod védeni az AVR lábait diódával, akkor 5V-os zénert rakjál be, ne sima diódát. És ne felejtsed el berakni az ellen irányú diódát a kapcsoló tarnzisztorral párhuzamosan. Ezen fog átfolyni a motor tekercsének az árama, ha kikapcsol a tranzisztort.
Szia !
Ezt hol latod? mert meg nincs ujra fent a cikk. Vagy a regi driverre goondolsz? Teljesen igazad van. Valoszinu -nagy izgalmamban- a kesobbi LCD_PORT = 0x0; zavart meg. Koszonom az eszrevetelt! Remelem ezzel veglegesen lezarhatom
Most nezem ujra az adatlapot, erdekes hogy abban a formaban mukodott, hiszen DB4, DB5 egy idoben kellene H szinten legyen. Most nincs lehetosegem kiprobalni a modositast, remelen mukodni fog igy: (csak a 8 bites resze)
vajon mennyire nehéz tönkretenni egy ilyen LCD-t? Már csak arra tudok gondolni hogy esetleg rosszul kapott tápot vagy valami...
Ezt nehez lenne megmondani..Probald az idozitest az lcd_toggle_E () {} fuggvenyben modositani kisseb, nagyobb idozitesekre.
Bekoteseket ujra atnezni.Az R/W lab GNDn van? TavIR-AVR ajanlasait megnezted? Ha 1X16 LCD akkor a headerben az 1X16 makrot ird at 1-re. ( ez mondjuk csak kesobbiekben lenne szukseges, mikor mar mukodik)
Esetleg magpróbálhatod manuálisan beindítani, hogy kipróbáld a kijelzőt.
Én első kijelzőmet ez alapján üzemeltem be, nem tart sokáig: Bővebben: Link
Azért működött az előző verzió, mert az lcd_toggle_E() függvénynél történik a beírás. Szóval előtte úgy adod ki a két adatbitet ahogy akarod. A lényeg, hogy az Enable impulzus kiadásakor, minden be legyen állítva a megfelelő szintre.
Ok,..de akkor sem vilagos. A porton az adatot felulirta. Ha csak nem tarolta el a "kijelzo".(A folyamatot azert ertem )
Oké bocsánat én voltam felületes. Igazad van. Szerintem azért nem tűnt fel mert én mindig csak a bitet írom, nem az egész portot.
Szóval jogos a reklamációd
Hali!
Nekem lenne egy problémám amit AVR-rel szeretnék megoledani... A probléma a következő: Aztszeretném "figyelni" az AVR-rel, hogy pl 1 fogyasztón át folyik-e áram, vagy ha ugy egyszerübb akkor a fogyasztót kivéve van-e feszültségkülönbség... Végülis jelen esetben mindegy, annyit szeretnék, h ha pl egy 12V-os izzót felkapcsolok az ő "gyári" kapcsolójával akkor NE kapcsoljon fel semmi, csak az AVR "vegye az adást", h annak felkapcsolva kéne lennie... A programmal kapcsolatban egyenlőre annyi ötletem van, h egy végtelen ciklus futna ami minden egyes iterációban megnézne 3 ilyen "izzót" h most felkacsolva kéne-e lenniük vagy sem, és ezeknek a függvényében az AVR kapcsolgatna másik 2-t vagy 3at... Ebben tudna valaki segíteni? Gondolok itt az elektronikai megvalósításra is, és a programon belüli résztre is (hogy hogyan "nézem meg" az avr-rel, h mi a helyzet éppen most). Előre is köszönöm a segítséget (és bocsi, ha túl bonyolultan írtam le). U.I.: Elsőkörben ATtiny45 -tel szeretnék egy próbakapcsolást készíteni (azért pont ezzel, mert ilyenre már legalább kimentkezelést tudok írni), A későbbiekben pedig ATmega8 -al szeretnék egy végleges kapcsolást létrehozni. Köszi mégegyszer! Üdv! Barbár
Leszabalyzod a 12V-ot egy ellenallas+zener parossal, majd feszultsegmeres ADCvel. ATtiny45 -ot nem ismerem, de gondolom van benne ADC. Eleg csak 8 bitet hasznalni a ADCnel (ha nagyobb), es belso referencia feszultseggel. A kepleteket is gondolom az adatlapban megtalalod.
Na én pont NEM ilyen bonyolultra gondoltam...
Hanem csak simán I/O bemenetet szeretnék kezelni, nem kell túlbonyolítani. Csak még nem sikerült rájönnöm h a bemnetnél azt tudja az AVR észrevenni ha pl a x-es lába a földre van kötve vagy azt ha a VCC-re?
Egyszerű lekérdezéssel. Semmivel sem bonyolultabb mint kiírni egy bitet. Annyi, hogy nem a PORTx regisztert kell olvasni, hanem a PINx-et, valamint a DDRx regiszterben be kell állítanod a port adatirányát.
Milyen nyelvben írnád?
Értem (legalábbis azthiszem).
Lehetne még egy olyan kérésem, h egy minimalista programkódot fel tudnátok tenni? Köszi! Üdv! Barbár
Jo, de mindenkepp le kell szabalyozni a 12Vot!
Persze én elsőkörben arra gondoltam (de légyszi mindenképpen szóljatok ha hibát láttok az elgondolásban)
hogy a 12V-os szál csak 1-1 tranyót vezérelnének... Az AVR is 12V ról menne tehát 7805-tel oldalám meg a stabil 5V-ot. Csak azt nem tudom, h az AVR-rel mit lehet figyelni: - azt, hogy pl az XY lába éppen rövidre van-e zárva a GND-vel, vagy - azt, hogy ugyanez a lába a VCC-vel (tehát a +5V -tal) van-e rövidre zárva. Szóval én arra gondoltam, a 12V-t csak egy pici tranyót vezérelne pl BC547 vagy vmi hasonlót, és az zárná a megfelelő helyre az AVR bemenetként használt lábát. Egyenlőre ennyi az elképzelés, de ha valaki tud esetleg egy egyszerübbet... Előszöris abban szeretnék segítséget kérni, hogy pontosan hogy is van ez, szóval hogy kell AVR-rel I/O bemenetet kezelni (úgy h a program amikor kell be tudja olvasni, h az adott pillanatban mi, hogy van kapcsolva, és után annak megfelelően fusson tovább). Ehhez szeretnék kérni ha lehetséges egy nagyon egyszerü kis programkódot amiben 1 db I/O bemenet van megírva, h lássam, hogy hgy is működik és megtanulhassam belőle. Előre is köszönöm! Üdv Barbár |
Bejelentkezés
Hirdetés |