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
Igen, tobbek kozt, mikor uj projektet kezdesz. ( nem kell rogton finisht nyomni ) Igazabol ott is includeolodnak fileok, automatikusan, a megadott vezerlo tipus alapjan. Ezekben a fileokban vannak tarolva a chip specifikus dolgok, regiszterek nevei, IO labak, stb...
Hali.
Azt szeretném megkérdezni, hogy valakinek nincsen e valamilyen részletes leírása LCD kezelésről? Pontosabban az AVR Studio-ban való beállításáról kellene egy leírás, hogy milyen parancsokkal lehet vezérelni. nagyjából már ismerek egy-két parancsot mert mikroC-ben már használtam de abban minden ki volt spórolva. Előre is köszönöm a segítséget. Idézet: „Azt szeretném megkérdezni, hogy valakinek nincsen e valamilyen részletes leírása LCD kezelésről?” LCD kijelző adatlap, annál részletesebb nem kell. Egyébként itt az oldalon is van. Idézet: „Pontosabban az AVR Studio-ban való beállításáról kellene egy leírás, hogy milyen parancsokkal lehet vezérelni.” Majdnem ugyan azokkal, amikkel a LED-eket is villogtatod.
Ha megírod az LCD-re való adatküldés függvényeit(adatküldés, parancsküldés), akkor már csak az azokat használó könyvtári függvényeket kell beszúrni és használni.
Tényleg csak portkezelést kell megírni(4 vagy 8 biten). Nálam megvan a HD44780 könyvtár ha kell, én írtam...
Hali.
belekukkantanék. Nem volna rossz egy kis tapasztalatszerzés.
Helló
Nemtudom hogy mennyire tartozik ide ... Az lenne a kérdésem/kérésem ,Van egy Attiny45-ös AVR-em no most mivel kezdő vagyok és most ismerkedem a programozással is azt szeretném kérni valakitől hogy írna-e nekem egy olyan programot hogy : PB3-on van egy led(R-en keresztül megy Vcc re{értelem szerűen a negatív kivezetése van az AVR lábán}),PB4-en van egy kapcsoló(megy GND-re).A program azt csinálná hogy amikor megnyomom a gombot a LED (Vagy akármi más)bekapcsol és amikor újra megnyomom a gombot akkor kikapcsol.Ha ehelyett a kapcsolás hejett mutattok egy másikat az is jó csak a lényeg az hogy ezt csinálja.Előre is köszi mindenkinek aki legalább elolvast azt a szörnyen nehezen érthető kérést (Eddig addig jutottam el hogy hogyha egyszer megnyomom akkor bekapcsol de ha mégegyszer megnyomom akkor semmit nem csinál)
Több mint 10 éve programoztam PIC-et. AVR-be én is most vágok bele. Küldd el a program forráskódját, talán ki tudom neked javítani.
4 éve programozgatok AVR-t, kb. 2 perc alatt leírom. Remélem C-ben írt program is megfelel...
Apropó. Késleltetés a pergésmentesítéshez kell. A 8MHz-et pedig azért adtam meg mert a CKDIV8 nevű FUSE bitet ki kéne venni... Nem próbáltam ki, de reméljük jó lesz: #define F_CPU 8000000 #include #include int main(void) { DDRB = 0b00001000; PORTB=0b00011000; while(1) { while(PINB&0b00010000); //várakozás lenyomásra... PORTB = (PORTB & 0b11110111) | (~PORTB & 0b00001000); //kimenet invertálás _delay_ms(50); //pergésmentesítés while(!(PINB&0b00010000)); //várakozás felengedésre... _delay_ms(50); //pergésmentesítés } }
Hello!
Összeszedtem egy fájlba a lényeget. Csatoltam.
Nagyon szépen köszönöm a fáradozásaid. Már a lényeget értem.
Sziasztok!
Az lenne a kérdésem, hogy az alábbi kapcsolásban lehet-e programozni az AVR-t? Soros égetővel, és ráforrasztott csatlakozásokkal gondoltam. Ugyanis megépítettem az égetőt, beforrasztottam a Tiny2313-at is, de lehet, hogy elfelejtettem felprogramozni előtte Mivel SMD-ről van szó nem akarom gyilkolni a nyákot a kiforrasztással. Egyébként van valakinek tapasztalata ezzel az égetővel?
Be lehet programozni, a programozó szálakat forraszd fel a panelra.
A MISO vonalon ott lóg a buffer kimenete, ezért vágd el a szálat, programozás után majd visszakötöd. Véleményem a programozóról: EGY NAGY RAKÁS F*******S <>&@<&>@<>&< Használj Dopert! > Idézet: „Véleményem a programozóról: EGY NAGY RAKÁS F*******S <>&@<&>@<>&<” Szerintem semmi baj nincs vele. Szerintem egyik utánépített programozó sem ér fel egy gyári Atmel programozóval.
Köszi a válaszokat, de ha mindig csak a gyáriban gondoznánk, akkor nem lenne szükség a programozóra sem...
"Nem ér fel a gyári Atmel programozóval" - az ára sem
Hát szerintem is így van. Én egy USB ASP nevű programozót használok és tökéletesen működik de nem tud magasfeszültségű programozást és debuggolni sem tud. Ugyan ez van a doperrel is.
Egyszer megépítettem, oltári botrányos volt az egész.
Kellett hozzá még a driveren felül külön portemulátor program(com0com) amit csak konzolról lehetett élesíteni, na ezt még túléltem mert 1x kell megcsinálni. És még egy másik programot is folyamatosan connect-elni, futtatni kellett hogy az AVR Studio is lásson valamit belőle. Végül az AVR Studio mégsem szerette, rendeteg időt és energiát beleöltem, mire rájöttem hogy egy nagy rakás kaki az egész. Heawy júzer-ként inkább szívtam a nyomtatókábelessel és a Pony Prog - al, mintsem ezzel a szutyokkal! Ha egy kezdő élné meg ugyanazt amit anno én, egy életre elmenne a kedve a kontrollerezéstől... Az USBASP és az AVR Doper az amit ha bedugsz, driver fel, és utána már nem kell foglalkozni vele. A Doper alapváltozata pedig HVPP-t is tud, hamarosan elkészül az én változatom ahol a 12V-ot is az USB-ről állítom elő.
Sziasztok!
Szeretném megépíteni az itt található AVR-es tapskapcsolót, de van 3 kérdésem. Az egyik gondom nem találom a beégetéshez találó hex file-t. mert az oldalon található írás az gondolom csak egy kód részlet. A másik kérdésem nem tudom hogy lehetne megoldani hogy a csipogó helyett egy relé legyen, esetleg össze tudnátok dobni hozzá egy kapcs rajzot? A harmadik kérdésem az hogy a kapcsolási rajzban szereplő Attiny45 helyettesíthető Attiny13-al? remélem tudtok mind a három kérdésemre megoldást Köszönöm szépen.
Nekem mindenféle hibát ír ki amikor "make all"-oz ok megnéznéd te is mert én nem jöttem rá mi lehet a baj.De amúgy kösz.
Mivel nem tette code részbe, ezért egy pár részlet kimaradt, így sosem fog lefordulni.
az include részeknél volt a hiba, azt nem eszi meg a fórum...
helyesen:
Egyébként a feladatra lehet hogy egy JK-flipflop (vagy T-flip-flop) is megfelel, nem utolsó sorban olcsóbb. Ha viszont tanulásnak szántad ezt a nagyon egyszerű feladatot, akkor nem szóltam...
Használtátok már ezt a kijelzőt? SPI buszon lehet programozni? Nekem elég szűkösnek tűnik a leírás, ami a 8 oldalas adatlapon van.
Más: Látom, nem dícséritek az utánépített programozókat..Ez a programozó jó? Idézet: „Használtátok már ezt a kijelzőt? SPI buszon lehet programozni? Nekem elég szűkösnek tűnik a leírás, ami a 8 oldalas adatlapon van.” Ne az LCD típusára keress rá, hanem a vezérlő típusára. Itt nézelődj, hátha már valaki foglalkozott ilyennel. Idézet: „Más: Látom, nem dícséritek az utánépített programozókat..Ez a programozó jó?” Ilyen van nekem is! Szerintem nagyon jó, nekem nagyon tetszik. Én az MSC Budapest-nél vettem, akkor ott volt a legolcsóbb, illetve minden más is. Ha veszel, érdemes rákérdezned, hogy mennyibe kerül az Atmega8, én valami 350Ft körül vettem vagy 10-et 1.5-2 éve a programozóval együtt.
A kijelzőnél jobban megnéztem a 8 oldalas leírást, kis kísérletezéssel ki lehet hámozni belőle a lényeget. A leíráson belül van egy utalás a vezérlőre, illetve a hiányzó információk összeszedhetők. Jó móka lesz ehhez függvénytárat írni. Keresnem kellene neten egy karakter táblázatot, ha nem akarok pixelenként karaktereket tervezni. Főleg a kijelezhető legminimálisabb méretű, illetve egyedi karakterekre lesz szükségem, szóval lehet, hogy mégiscsak nekem kell tervezni.
Megnyugodtam. Kösz a tippet, nekem adódott egy lehetőség és kedvezőbben tudtam beszerezni a cuccokat, ATxmega61A1-re szeretnék fejleszteni.
A HEStore-os linken ott van a kijelző vezérlő típusa.
Mondtam, hogy nézelődj a google-ben, még a kulcsszavakat is beírtam, valaki biztosan megírta már helyetted, csak meg kell találni.
Igen, azt megtaláltam, majd kihámozom. Karakterkészletet keresek neten, de úgyis egyedire kell írnom a függvényeket az alkalmazáshoz. Grafikus kijelző meghajtása egy kicsit macerásabb mint a karakteres. Annyival jobban is fog mutatni, tiszta profi lesz.
Olyat próbáltam összehozni, hogy ha nyomogatok egy gombot, akkor egyre fényesebben világít egy LED. A program, amivel próbáltam:
A PWM része megy külön, azzal nincs gond, csak hiába nyomkodom a gombot, nem lesz fényesebb. A gomb a PB0-n van. A felhúzóellenállásra is figyeltem, szóval nem értem, mi lehet a gond.
Szeretem, amikor valaki nem egyből úgy kezdi, hogy "írjatok egy ilyen meg egy olyan progamot", hanem végre próbálkozik.
A 18. sor legyen ez:
Ezzel azt vizsgálod, hogy alacsony szinten van-e a PB0, tehát a nyomógombot majd a PB0 és a test közé kell bekötni és be kell kapcsolni az AVR beépített felhúzóellenállását. A 7. sor felesleges, a 6. helyére:
A 7-edik sor után szúrd be ezt:
A felhúzóellenállás a portláb és a Vcc közt van, Atmega8-nál 22-50K körül van az értéke. A main-ben deklarálj egy változót:
Az if így nézzen ki, utána mehet az értékadás a PWM-nek:
A 14. sort cseréld le:
Nagyon szépen köszönöm!
A loop-os részt végül nem tettem bele, mert működik nélküle is, viszont azért érdekelne, hogy mi lett volna a célja, mert nem értem. A többit átírtam. Ezek szerint ezeken a helyeken nem használható a _BV(x); típusú módszer?
Idézet: „A loop-os részt végül nem tettem bele, mert működik nélküle is, viszont azért érdekelne, hogy mi lett volna a célja, mert nem értem.” Ilyenkor próbáld meg magadban értelmezni. A loop változó értéke deklaráláskor nulla. Amikor megnyomod a gombot, egyből hozzáad egyet, vagyis az értéke egy lesz és ha az értéke egyenlő egyel, akkor növeli csak az i-t. Ha felengedted a gombot, akkor újból lenullázódik. A gombot nem fogod tudni úgy lenyomni, hogy csak egyszer fusson le a végtelenciklusban, hanem folyamatosan pörög, tehát folyamatosan növeli egyel, Te azt írtad, hogy ha nyomogatod a gombot, akkor növekedjen a LED fényereje, tehát a kulcsszó a nyomogatod. A loop-os résszel csak gombnyomásra nő, mindig 5-el az i értéke, nélküle pedig mindig nő, amíg a gomb le van nyomva attól függően, hogy a végtelenciklus hányszor fut le. Idézet: „Ezek szerint ezeken a helyeken nem használható a _BV(x); típusú módszer?” Ezt már nagyon ritkán használják. Inkább használd ezt, az a neve, hogy shiftelés: (1< Idézet: „A többit átírtam.” Működik?
Nagyon köszönöm a részletes magyarázatot, már értem. Igen, tökéletesen működik!
|
Bejelentkezés
Hirdetés |