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
A Config INT0=
portirány beállítás, enable INT0, Enable Interrupts sorok mind hiányoznak....
Ott a bascom körbejárás is:
Bascom magyarul.... Illetve 1-2 dolog már Arduinoként is: Arduino / AVR-Duino
Igazad van elfelejtettem bemásolni, de ott vannak .
Kipróbáltam, ha nem állítom le powerdown-al akkor jól működik a megszakítás, csak akkor van gond, ha lekapcsolom a procit.
Üdv!
megépítettem az Attiny13-as ni-mh töltőt topi nyolc lábbal c. cikkéből. Működik is annyi szépséghibával hogy a töltés nem 6sec hanem 40 körül a sönt bekapcsolásának ideje pedig 1sec helyett 7 körül van. Nem tudom mit ronthattam el a segítséget előre is köszönöm!
Megint, a nem kikapcsolt CLKDIV8 és nem beállított órajel forrás a Fuses-ban.
Értem, úgy emlékeztem pedig, hogy beállítottam. Lehet , hogy mégse. :no: Megpróbálom még egyszer.
Köszönöm a gyors segítséget és köszönet a 8lábú sorozatért!
Sziasztok!
A következő problémával küszködök éppen: Adott egy mátrix billentyűzet (USB Numerikus billentyű volt fénykorában), a fóliáról kitérképeztem hogy hogy vannak a sorok és oszlopok. Viszont a kiolvasásuk bonyolultabb mint gondoltam... Mellékeltem egy mórickarajzot amin ábrázolt a bekötés, (azért ezt választottam mert ilyet már láttam más kapcsolásban) Az áramkör már elkészült és gondolom meg lehet valahogy írni a progiját, ebben is kérném a segítségeteket. (WinAVR-ben programozok) A válaszokat előre is köszönöm!
No, mint ahogy az lenni szokott megoldódott a probléma. Azért leírom, hogy is néz ki hátha más is esik ebbe a helyzetbe
Össze dobtam neked egy kis kódot. Nem garantálom, hogy jó.
Mit is csinál ez? HA meghívod a fügvényt akkor az szépen egymás után magas szintre huzza a mátrixod sorait. Mindíg csak 1-et. És amíg magas szinten van 1 sor, addig végig szalad az oszlopokon. Elvileg akár 1 olvasó utasítás is elég lenne. Nem kéne így ciklusban végigolvasni. Ha valamelyik lábon magas szintet talál, akkor az a gomb le van nyomva és visszatér a fügvény a lenyomott gomb sorszámával. A sorszám a bal felső sarokból számolódik a rajzod alapján és a jobb alsó gomb az utolsó. Hibája a kódnak hogy csak 1gombot tud egyszerre érzékelni. Mindíg a legelső megtalált lenyomott gombal tér vissza. De majd te tovább fejleszted. UI: inkább csatoltam, mert a remek forum motor elcseszi...
Köszönöm szépen a fáradozásodat! Ahogy elnézem ugyanazt csináltuk és mindegyik megoldja az említett problémat! (az enyém picit hosszabb....
)
Igazán nincs mit. Ma még úgy sem írtam 1 sor kódot sem. Jól jött egy kis gondolkodás.
A
Egy rakas proci idot megeszik a sok delay. Osszetettebb kodnal nem lesz proci ido. Vagy csak "neha" olvasod be a gombok allapotait? Inkabb csinalj egy >50 Hz-es idozitest, es abban hivd be a gomb olvaso fuggvenyedet. ATiny : Az ertekes kodot megette a forum motor. C kod beszurasnal lehet hasznalni : [ code = c ] [ / code ] Szokozok nelkul.
Nahát, ezt nem is tudtam Én meg nézem hova lesz a kódom fele... Kénytelen voltam csatolni a filet. Na majd legközelebb így próbálok berakni kódot.
Na ez jó kérdés minek van ott, a lényeg hogy nem működik nélküle (4-es helyett 7-est ír, nincs 0 stb...) Vicces egy jószág
Sziasztok a segítségeteken szeretném kérni az
www.obdev.at/ oldalon található firmware kapcsolatban. Akármit csinálok nem tudom winavr-ben felprogramozni vele az AVR-t. A makefile ben kellene módosítani gondolom a programozot, stb. De valahogy nem akar összejönni. Tudnátok segíteni?
Az volna a kérdésem, hogy c-ben íródott progi esetében, amikor tápot kap az AVR akkor jó volna, ha eőször egy kis szöveget írna ki, mielőtt a tényleges programra tér rá az LCD. Ezt hogyan tudom megvalósítani?
A "tényleges" programot kell átalakítanod, hogy először írja ki az LCD-re amit akarsz és egy kis várakozás után induljon csak el a program többi része. Nyilván kell hozzá a program forrása és miután átítad a kódot le is kell tudnod fordítani. Ezek a minimális feltételek. Azt nem számolva, hogy persze C-ben is kell tudnod programozni, hogy meg tudd írni a kódot.
Itt van mellékelve a progi eleje, itt kellene módosítani?
Nem... ez még angyon az eleje Valahol a main() fügvény elején kéne belenyulni, mikor már fel van inicializálva az egész rendszer és él az LCD komunikáció is.
Erről a programról van szó. Az Example projektek közül egyet se tudok feltölteni az AVR-re.
AVR - USB
usbdrv
Csinalsz egy projekt-konyvtarat, atmasolod az usbdrv konyvtarat (nem csak a tartalmat !) ide. Az examples -bol amit szeretnel forditani szinten atmasolod a projekt konyvtarba (csak tartalmat) A Makefileokban beallitod amit kell. Onmagaert beszel ..
A Makefileban nehany eszkoz L/H Fuse beallitasai is megtalalhatok. Mikor megvannak a beallitasok kiadod a megfelelo parancsot (forditas, fuse bitek betoltese, hex betoltese) Meg kell nezni a readme-t, vagy valahol biztosan airja hogy milyen parancsokkal dolgozik a Makefile.
Van ez a nagyon jól megkreált Videó.
Én is csináltam hasonlót AVR-rel, de a gondom az, hogy a századmásodperc a videóban még felgyorsítva is villog, nekem meg "kalibrálva" is állandóan ég. Nem látni semmi villogást. Ez mitől lehet? Multiplexálva vannak a kijelzők.
Fel van gyorsítva a videó és az nem századmásodperc, hanem frame. 0-24-ig számol.
Multiplexálva van nagyjából olyan 300Hz-el. A videón a csapó rendesen be volt világítva, így a kamera alacsony "exponálási" idővel dolgozott. Emiatt a videón természetesen villogott, annak ellenére, hogy direkt kerültem az egész, többszörös frekvenciákat. Ezen egy egyszerű módon segítettem. A gyorsítás nem egésszámú többszörös, így a frame-ek átmosódnak. Multiplexált kijelző csak akkor nem fog villogni, hogyha jócskán több a frissítési freki, mint a felvételi frekvencia. Tehát konkrétan közepes megvilágítás esetén KHz-es tartomány.
Hogy én milyen ügyes vagyok!
Annyira tetszett, hogy egyedül azt nem vettem észre, hogy nem is százig számol... Lehet h újra kéne tanulnom a számokat. Köszönöm, így már érthető! Frekvenciámat én is osztogattam, és kb az 3-század másodperces frekivel villogó kijelző már gyönyörűen villódzik. Azaz a tizedmásodperces kijelzőrész a szép benne.
Ebböl egy szót nem értek, próbáld meg megfogalmazni mit akarsz kérdezni. Mi az hogy kalibrált? Mi az hogy villog? Ha multiplexálva van persze hoyg villogni fog, de a multiplexálás sebességét emelve olyan gyorsan villog hogy nem látja a szemed.
Elnézést!
Kalibrálva: 1 másodperc, az tényleg 1 másodperc. Nem a multiplexálás miatt villog, hanem a századmásodperc szegmenseinek változása által villog. Nekem egyfolytában 8-as látszik olyan sebességgel pörög az utolsó karakter. Tehát egy időzítőnél felesleges a századmásodpercet is mutatni, mivel egyetlen 8-ast látok mindig a kijelzőn. A tizedmásodperces kijelzőn már kivehetőek a számok.
Na mostmár értem Valóban lehet olyan frekvenciát találni, hogy a kamera mintavétele és a számláló ledjei szinkronba vannak és "mintha álna" Érdemes nem egész számú töbszörösére választani a multiplexálás sebességét a kamera kép frissítésének. Akkor mindenképpen változni fog az utolsó szám is.
Szia Mindenki!
Valaki nem tudná véletlenül, hogy WinAVR-nél hogyan deklarálhatok változót a fejlécfájlban anélkül, hogy a fejlécfájl újbóli betöltésekor (pl. egy másik forrásból) ne legyen többszörös deklarálás miatt error? A többi fejécben is használt módszert próbáltam, konkrétan: #ifndef LEFUTOTTAM #define LEFUTOTTAM 1 //Deklarációk #endif #warning beszúrással néztem, hogy ennek ellenére többször becsatolja azt amit már nem kéne. Mintha eltűnne a LEFUTOTTAM bejegyzés. Tán külön külön fordít és aztán linkel? Ötlet? Köszi! |
Bejelentkezés
Hirdetés |