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
Ezen a linken mar tobb informacio van.
Szerintem az lesz neked a legegyszerubb, amint azt mar TavIR-AVR kollega is javasolta ,ha egy 4 csatornas SPI-s ADC IC-t (pl. MCP3204) hasznalsz az analog gyorsulasmero jeleinek a meresere.
A problema az, hogy a szoban forgo fuggvenyt linkeleskor a libgcc.a -ban es a libc.a -ban is megtalalja. WinAVR-t nem ismerem, igy nem tudom hol van ra lehetoseg, de el kell erned, hogy csak az egyik fuggvenykonyvtarat hasznalja linkeleshez.
A konkret hibauzenetet masold be a keresobe (google), es valoszinu lesz megoldas.
Ja, csak en linux alatt command line-bol hasznalom az avr-gcc-t, WinAVR-t egyszer messzirol lattam. Nem tudom hol kell a GUI-ban allitgatni, es nem ismerem az alapertelmezett makefile-okat sem.
Biztosan van. Igy elso probanak szerintem azt kene csinalnod, hogy a "-nostdlib" kapcsolot tedd a gcc linkelesi parameterei koze. Ekkor a libgcc.a -val nem linkeli automatikusan. Ha ez nem megy, akkor a "-Wl,--exclude-libs libc.a" parmeterrel probald meg.
Ha igy se, ugy se fordul le, akkor kerlek a hibauzeneteket megint masold be(de kicsit jobb kepminosegben), es akkor megprobalok kitalalni meg valamit.
Sot, meg mielott az elozo hozzaszolasombol barmit megcsinalsz, probald meg a "-Wl,--allow-multiple-definition" parametert hozzaadni. Ha jol ertem a manualt, akkor ez az amire szukseged van.
Köszi a segítséget, de hova kellene ezt beírni?
Sziasztok,
"újrakezdő" vagyok a mikrokontroller témában. Évekkel ezelőtt, még 8051-es architektúrán működtem, és most újra a témával szeretnék foglalkozni. Ahogy akkor is, most is ATMEL. Egy elég kezdő kérdésem lenne: Összeütöttem egy kis progit:
Egy LEDet kötöttem a D6-ra, a probléma, hogy sokkal lassabban villog, mint szerettem volna. A fordító 8MHz-es órajellel kalkulál, és tudtommal az uis a default, de csak nem működik:
Mi lehet a gond?
Szia!
A FUSE biteknél az oszcillátor is 8MHz-re van állítva? Gyári beállításként 1MHz-en ketyeg csak az AVR...
Ez is egy lehetőség, bár ilyennel még nem találkoztam olyan AVR esetén, amiben van 1, 2, 4 és 8MHz-es belső RC... mega328 esetén 8MHz-es van, és ott alapból be volt kapcsolva a div8, hogy 1MHz-en fusson.
Érdekes dolog történt...
Mellékelve a Fuses beállítások. Nem módosítottam semmit eddig egyszer sem, viszont most rányomtam a "Program"-ra, és jó is lett az időzítés, legalábbis így érzésre Ezek szerint egy "szűz" kontrolleren ezt mindenképp el kell játszani az elején?
Találtam az AVR Stuidoban a beállításoknál, hogy melyik könyvtárakat használja, így már sikerült lefuttatnom a programot.
Köszönöm az ötleteket Üdv, yoman
Nem kellene szükségesnek lennie...
De az AVR még mindig 1MHz-en jár, mivel 8MHz van kiválasztva, de be van kapcsolva a CKDIV8, ami 8-cal osztja a rendszerórajelet... Akkor viszont hogyan működik a 8 megára írt időzítésekkel?! Idézet: „Ezek szerint egy "szűz" kontrolleren ezt mindenképp el kell játszani az elején?” Ez nem auto motorja, hogy be kelljen jaratni Szerintem valamit modositottal a programon, vagy a fuses lett atallitva es a kep nem arrol szol, vagy a programozaskor hiba tortent es epp a veletlen szerencsebol kifolyolag a fuses CLKDIV/8 bitje allitodott at (ez utobbira nagyon nagyon kicsi az esely...).
A FUSE biteknél a CKDIV8-ról vedd el a pipát, így 8MHz-en fog járni.
VAGY: a programkódban az F_CPU-t állítsd "1000000"-ra. Ha érzésre jó lett, akkor valamelyiket biztosan meg kellett csinálnod...
Üdv!
Segítséget szeretnék kérni valakitől, akinek van rendelkezésre álló szabadideje nekem egy programot írni. Dióhéjban egy ATM8535P avr, BG12864DBNHHn grafikus lcd és az SPI-n működő ki-/bemenetek-ből épül fel a vezérlő. Ha nincs időd rá, de van egy könyved, pdf-ed, linked amit javasolnál, az is jöhet. Ill. érdekelne, hogy tud e valaki, OKJs képzést ahol ezt megtanulhatnám? SB
Olyan kérdésem lenne hogy, Atmega8-ra programozok Bascomban és olyan hibával találtam szemben magam hogy amikor meg akarok szorozni egy változót 250-el akkor valamikor hibásan számolja ki. Kaptam egy tippet hogy a stackekkel lesz a gond, megpróbáltam kiiíratni hogy van-e valami túlcsordulás és a 2-es számot kapom ami azt jelenti hogy a Soft Stack belelóg a Framesize-ba. Már majdnem a határokig növeltem az értékét.
Jelenleg: HWStack: 64 Softstack: 768 Framesize: 32 Mi lehet a gond? Vagy valaki tudna mondani egy optimális beállítást? Már kezd kihullani az összes hajam tőle .
Szia!
Mi lenne a feladat? Bár ezt ebben a formában inkább az apróhirdetésekbe kellett volna tenned...
Hello!
A hiba szerintem nem stack, sokkal inkább kasztolás. Ugyanis a 250-et "byte" ként(8 bit) értelmezi, és ha szorzol vele, akkor az eredmény is egy byte-os lesz. Ez stack szempontjából nem olyan vészes hogy túlcsorduljon. Tipp: próbáld meg 16 vagy 32 bites változókat definiálni, és azokkal végeztesd el a műveletet. más: Lehet hogy én vagyok hülye a Bascom-hoz, de az AVR-ekben nincs hardver stack, csak hardveresen támogatott(stack pointer, stack utasítások) szoftver stack van. De majd TavIR-AVR kolléga úgyis megmondja.
HWStack, SWStack és FrameSize egyszerre növelendő. nem lépésenként (külön).
Programkód látható? Tpikus stackhibák: Egymásbaágyazott sok gosub, single/double változók kezelése, format/Fusing kezelés, karakterláncok kezelése, print.... Ezek fogyasztják. Ja és M8 esetén a memória elég kicsi!
Nem nagyon ertem hogy fordulhat elo, hogy a ket lib "utkozik".
Valamit biztosan elkavartam, mert nekem sem logikus a dolog
Valószínűleg az lehetett, hogy közben módosítgattam a
sort 100-ról, hogy megnézzem mennyivel van elmászva a delay értéke, és ki is jött, hogy kb 7,8 (nem szkóppal mértem), szóval az lehetett a bűnös. Kivettem a CLKDIV8-at, és hozzáadtam a
define-t. Na így most minden szép és jó. Azt hittem, hogy ha a project options-ben be van állítva a frequency, akkor már nem kell define-olni, de ezek szerint igen (?). Köszi mindenkinek!
Na, az elmúlt fél órában sikeresen életre kelt egy 2*24es LCD modul is ezzel a kóddal
Van egy 16F84(A) típusú Pic égetőm.Lehet ezzel AVR égetni?Ha lehet valaki írja le hogy! :help:
De látható a kód. Másolom. Felraktam a pastebin-re mert nagyon hosszú. De ahogy hogy látni lehessen az egész kell szerintem.
Programkód A probléma a 489 és a 490 sor után következik. Álltalában ha csak a Fordulatjelek-et iratom ki akkor nincs gond, de ha már a két művelet után akkor már ugrál.. 0-65000 között kb..
Szerintem nem lehet PIC égetővel AVR-t programozni. Tudtom szerint teljesen más architectúra a kettő. De majd jönnek a nagyok és megmondják .
Amennyire én értek a C-hez, tudtommal az órajel definiálása a programban csak az időzítések számításához kell... De majd egy C guru megmondja, hogyan is van ez pontosan.
|
Bejelentkezés
Hirdetés |