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
És a .hex fájlt, amit be szeretnék írni, azt hova másoljam, hogy megtalálja a program?
No akkor most sokkal jobb már a helyzet.
A -U több paramétert is kaphat. A valami.hex beírása: -U flash:w:valami.hex LFUSE írása: -U lfuse:w:0x??:m HFUSE írása: -U hfuse:w:0x??:m EFUSE írása: -U efuse:w:0x??:m Példa egy írásra: avrdude -P /dev/ttyUSB1 -c jtag1 -p m128 -U flash:w:valami.hex -U lfuse:w:0x??:m -U hfuse:w:0x??:m -U efuse:w:0x??:m A FUSE értékekekt persze célszerű jól megadni.
A hex fájlt add meg teljes útvonallal esetleg. Vagy abban az alkönyvtárban add ki a parancsot ahol a hex van.
Köszönöm a segítséget. Sikerült .
Már csak az nem világos, hogy mire valók a FUSE bitek, de annak majd utánanézek.
Ha sehogy sem megy(dw-nél sem) akkor marad a csipcsere, bár én sem értem hogy miért nem írja át a FUSE biteket. Egy új atmega168 kb. 7-800Ft, jóval olcsóbb mint egy új panel. És akkor nem volt hiábavaló a kiforrasztás...
Bővebben: Atmega128 FUSE bitek
Sziasztok!
Elmagyarázná valaki szájbarágósan ezt a programrészt,mert nekem sajnos nem elég világos
Előre köszönöm a válaszokat!
A m_delay_10ms(10) például azt teszi szerintem, hogy 10*10ms -ot késleltet.
az i cuklusváltozó kezdeti értéke nulla. a ciklus addig fut ameddig az i értéke még kissebb mint a val értéke. Ha a val értéke 10 akkor 0-tól 9-ig növeljük egyesével az i értékét. Tehát kijön a 100ms késleltetés. Ne feledd, hogy a számlálás 0-ról indult. Remélem segítettem.
Köszönöm. Az unsigned char val mit jelent?
unsigned - előjel nélküli
char - karakter típus val - a változó neve
Jahh, és még annyit mondok,hogy sajna nem tudom,hogy mi az a i és a j és nem ismerem a változókat.Sajnos nem találtam olyan cikket amiben ez el lett volna írva.
Köszönöm.
Az "i" jelen esetben a ciklusváltozó ami csak ennél a függvénynél lesz használható, mivel helyileg definiáljuk.
Azaz, a paraméterül kapott "val"-szor 10ms-ot késleltet, és a val értéke 0-255 lehet. Az egész függvény értelme az, hogy az "_delay_ms()" függvény egy valós számokkal operáló makró, ami csak akkor működik helyesen ha konstans értéket kap, mert ilyenkor a fordító számolja ki a lebegőontos értékeket(az F_CPU-ból) és ebből egy diszkrét kódsorozatot generál. Abban a pillanatban amikor az _delay_ms() egy változót kap értékül, a lebegőpontos számokkal való operálás futás-időben fog végbemenni. Ez egyrészt elrontja az időzítést, másrészt 3-4KB-al megnöveli a kódméretet. Általában ez utóbbi a látványosabb, és a szegény júzer meg vakargatja a fejét hogy most mi van...
A valtozokat es a fuggveny neveket a programozo adja meg, ezek nincsenek elore definialva igy leirasuk sincs. Neked kell kideritened a prgrambol mire is hasznaljak a valtozokat -- ha mar a programozo nem olyan neveket adott amik beszedesek. Nem olyan hosszu az a program reszlet, probaldd meg megerteni mit is csinalhat -- pl a 'for' kulcsszonak utana tudsz nezni es abbol mar sokminden kiderulhet...
Az alabbi hozzaszolashoz es az utana kovetkezo 2-3-hoz is, csatolva van nehany magyar nyelvu C-programozas jegyzet. Ha ezeket atolvasgatod, az biztosan segit...
Bővebben: Link
Üdv mindenkinek!
http://dybkowski.net/content/en/node/15 A fenti linken található programozót építettem meg, hogy egy AT89S8253-as avr-t programozzak, de sajna nem ismeri fel a program a mikrovezérlőmet, mi lehet a gond? (winxp alatt, kábelek: 20cm lpt kábel, +20cm szalagkábel.) Minden segítséget szívesen veszek, méginkább ha valaki már sikerrel programozott ijet, akkor egy árban megegyezve kérném a segítségét. Előre is köszönöm!
Sajnos nem tudom mi a kapcsolat az i ciklusváltozó és a val változó között.A val változó az egy szorzó lenne amit delay _ms () után írunk és megszorozza az időzítés értékét?
Köszönöm a lehetséges válaszokat.
Üdv!
Egy kicsit sántít nekem ez a függvény. Én úgy tanultam az ANSI C-t, hogy a ciklusok iteráció kezeléséhez int (egész) típusú változókat használunk, és mindig adunk a változóknak kezdeti értéket (még ha 0 is). Lehet, hogy működik így, sose próbáltam ki. Nálam ez valahogy így nézne ki:
Tudom, bele lehet kötni, hogy miért adok az i-nek a kezdetben nulla értéket, ha alapból nulla, pláne, ha utána a ciklusban megint nulla értéket kap, de nálunk ez bukás, vagy kettes kérdése volt. A magyarázat sorról sorra: 1., létrehozol egy m_delay_10ms() nevű függvényt, aminek paraméterként megadsz egy számot (zárójel közé beírod), melyet eltárol a val változóba. 2., definiálsz egy i nevű, egész típusú változót, amit a for ciklusban fogsz használni, és adsz neki 0 értéket. 3., meghatározol egy ciklust, ami 0-tól indul (i=0), i értéke egyesével növekszik (i++), és addig hajtja végre a kapcsos zárójelben lévő utasításokat, még a feltétel (i Ha például a main() függvényben meghívod a következő sort:
akkor at olyasmi módon kell elképzelni, mintha az alábbi sorokat írtad volna be:
Üdv: BazsiBácsi
Köszönöm szépen a gyors választ.Érthető volt. :worship:
Nem, nem kell int tipusnak lenni, hanem egesz tipusnak, az pedig lehet int, unsigned int, short, unsigned short, char, unsigned char, long, unsigned long stb...
Es nem, a valtozo definicional nem kell nullaznod az i-t, hiszen az inicializalas megtortenik a for ciklus inicializalo reszeben -- az arra valo! Amugy ha mar itt tartunk:
Nem kell bonyolitani a dolgokat es felesleges valtozokat letrehozni Es amit meg meg lehet probalni ennek egy valtozata:
Ez utobbi azert, mert nehany fordito ill mikrokontroller eseteben a kod igy rovidebb lesz -- ez pedig a fordito optimalizalo kepessegeibol ill. architekturalis adottsagokbol ered.
Azt szeretném kérdezni,hogy mi a különbség a nyolc fajta változó között?
Idézet: „az pedig lehet int, unsigned int, short, unsigned short, char, unsigned char, long, unsigned long stb...”
Ezek nem valtozok, hanem tipusok, es a hosszukban ill elojelek kezeleseben ternek el. De miert nem olvasod el a javasolt magyar nyelvu C jegyzetet? Abban ezek le vannak irva... es sokminden mas is.
Nagyon kezd flame-elodni a topik. Amik nem kifejezetten AVR re vonatkozo kerdesek, hanem inkabb a C programnyelvre vonatkoznak annak szerintem itt nincsen helye. Az olyan kerdes, hogy : az unsigned int az mi, abszolut nem helyenvalo itt. Ha azt kerdezed, hogy az unsigned int egy atmega8ason hany bitet jelent, az relevans kerdes.
Szoval kernem azokat akik nem ertenek a C nyelvhez, azok faradjanak a konyvtarba, vagy a vegtelen szamu internetes C oldal egyikere, es ne ebben a forum topikban kerdezzenek hulyesegeket.
Lehet átváltok PIC-re... Annak a topikját igyekszenek "topiknak" megtartani, emez rendszerint "eltotyikosodik"... :gumicsirke:
Felesleges a drámaiság, mert igaza van. Ha teret adunk az ilyen kérdéseknek, akkor hetente újra és újra olvashatnánk, mert ez a réteg ahogy a könyvet, netet nem olvassa, úgy a topikot sem visszafele.
Kár lenne a topik szakmaiságát ledegradálni.
Mondjuk ott a piros huvejk ujj lefele gomb, arra rakattinthattatok volna es akkor remelhetoleg a moderator korrigal es fejre koppint
Drámaiság ide, vagy oda, szerintem ugyanazt vázoltam, mint sikolymester, annyival kiegészítve, hogy a PIC-es témában figyelnek arra, hogy a téma minél inkább arról szóljon, amiről szólnia kell.
PL1.: Igaz, ezt csak most ujjaltam le, de pár sorral lentebb szóltam, mi a fáma... A második példát 15 oldalra visszamenőleg nem találom, vagy azért, mert visszább van, vagy azért, mert ki lett törölve a negatív értékelés... Ott használtam a piros gombicot, nem is egy hozzászólásnál.
Elnézésedet kérem. Úgy tűnt, hogy sikolymester ellen beszélsz (neki válaszolsz). Ezek szerint mellette voksolsz, nem szóltam
Semmi gond, ezek szerint félreérthető volt a mondanivalóm. Inkább én kérnék elnézést! Legközelebb kerülöm a "drámaiságot", csak zavar, hogy másik topikban igyekszenek megtartani a rendet, itt meg gyakran elmászunk. De az is lehet, hogy csak azért tűnik amaz jobban kézben tartottnak, mert nem olvasgatom olyan sűrűn. De majd trudnai leírja, Ő hogyan látja, ha hozzá akar még szólni ehhez... Na meg már elég későn is írtam. Részemről OFF befejezve.
Sziasztok! A Fizikus cikkét olvastam, ahol bemutatta az SPI-t az Atmega8-on. Ott egy 74HC595 shift regiszterrel (remélem jól írtam) bemutatta hogy hogyan lehet 8 ledet vezérelni. Kérdésem: lehet-e a 74hc595-el vezérelni LCD-t SPI-n keresztül? Mondjuk HD44780 at? Én úgy okoskodom hogy lehet, és jó lenne, mert ez egy rettentő Port-takarékos megoldás lenne. Köszönöm a hozzászólást.
U.I: És remélem, sikerül egyúttal megszakítanom ezt a maratoni Off-ot
Igen, lehet. A cikkek között van is rá kapcsolás...
Bővebben: Link Bár ez nem pont az, amire Te gondoltál. Bővebben: Link Ez meg másik IC-vel van... De kiindulásnak jó lehet. |
Bejelentkezés
Hirdetés |