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
Keresgélni keresgéltem na de pont erre van szükségem hogy tanácsoljatok egy könyvet ( "Az IBM PC programozása assembly nyelven" ) sok ehhez hasonlót néztem de nem tudtam eldönteni hogy ez nekem jó lenne.
A ne linkelgessetek alatt azt értettem hogy a válasz ne az legyen kapásból hogy "http://www.avr-asm-tutorial.net/" mert az angolt nem nagyon értem most kezdtem el a tanulgatását saját erőből eddig németet tanultam de az nem tetszik.
Köszönöm most már tudom hogy ez jó az induláshoz.
Szolok, hogy nehezen fogsz raakadni erre a konyvre, mert mamar eleg ritka es reg adtak ki utoljara. Inkabb konyvtarakban celszeru keresni. Viszont nagyon jo(es vastag) konyv.
Üdv!
Olyan kérdésem volna, hogy valaki talált már neten, valamikor, valahol bármilyen AVR mikrokontrollerre LPF, vagy FFT implementációt C-ben? Nem igazán találok csak tanácsokat, meg nagyon alap dolgokat, de én csak tesztelni szeretnék VMLAB környezetben egy komponenst, és igazából nem mennék bele a részletekbe, csak egy működő kód kéne (leginkább Atmega 128-ra).
Igen, a 32 bites AVR-hez van generic(azaz nem optimalizalt) fuggvenykonyvtar 16 es 32 bites szomerettel.
Az LPF alatt, ha FIR szurot ertesz, akkor az olyan egyszeru, hogy te is le tudod programozni, ugyanis csak szorzasbol es osszeadasbol all (es max a vegen egy osztas). A szuro koefficienseinek a kiszamolasahoz viszont nincsen segitseg, azt neked kell megoldanod.
Köszönöm a segítséget, megpróbálom megcsinálni akkor.
IIR es FIR szuro kalkulator oldal. nekem nagyon bevalt, es meg a C programkodot is legeneralja, bar en ujrakodoltam, mivel a folyamatosan bejovo adatok miatt nem optimalis az algoritmus, ugyanis ezzel a koddal minden bejovo uj adatnal a puffert shiftelni kellene.
AVR32 Software Framework. Ezen belul az avr32/services/dsp/dsplib/include avr32/services/dsp/dsplib/generic/basic konyvtarban talalod a dolgokat. Amire szukseged lesz egy 16 bites FFT-hez: dsp.h trans_dsp16_real_complex_fft.c trans_dsp16_twiddle_factors.c trans_dsp16_twiddle_factors.h A twiddle factors-ban tarolja az FFT elvegzesekor az integralon beluli kifejezes e-ados tagjainak(ergo vektorok) a szoget es hosszat, igy a felbontasnak megfelelo(default 1024 pontos) darab 16 bites erteket a szogekre es a hosszokra, azaz 4096 byte-nyi konstanst. Ezeket alaphelyzetben a memoriaban tarolja, mert onnan gyorsabb az elerese, de neked nem lesz ennyi memoriad, ezert at kell irnod, hogy a programtarban tarolja, es a *fft.c -ben at kell irnod az algoritmust, hogy onnan olvassa ki. Elore szolok, nem lesz egy gyors algoritmusod. A forditashoz meg a kovetkezo fajlokra lesz szukseged: compiler.h mrepeat.h preprocessor.h stringz.h tpaste.h Mivel az FFT kimenete komplex szamokbol allo tomb, lehet, hogy teged csak az abszolut ertekuk erdekel, igy ebben az esetben meg erre a kettore is szukseged lehet: vect_dsp16_complex_abs.c op_dsp16_sqrt.c Ezekkel a komplex szamok abszoluterteket tudod kepezni.
Nézd meg Chan honlapját, van rajta néhány érdekes dolog, többek között FFT is.Bővebben: Link
Most nezem, egesz jo sebessegu kodot irt Chan.
Én már néhány dolgot felhasználtam tőle és működőképesek, pl. SD kártya használat (FAT), GPS kezelés,LCD...Ami nagyon érdekes, hogy japán létére angol nyelvű kommentekkel ellátott forrásfájljai vannak, na meg a szereléstechnika, az is megér egy misét.
A legújabb a jpeg fájlok használata AVR-rel, PIC-kel.
En is angolul kommentelek forrast magyar letemre
Megneztem a GPS-es munkajanak a kepeit. Hat, nekem az a zomancozott rezhuzalos kusza technika valahogy nem jon be, nem is tunik megbizhatonak(persze asztalra biztos elegendo). De a temak erdekesek amivel foglalkozik.
Köszönöm mindkettőtöknek, a Chan által írt kód télleg elég nagy segítségnek látszik!
Sziasztok! A fenti kódból nekem nem tiszta, hogy " PORTB = 0xFF;" miért a PORTB.2 -t nyitja meg. Miből derül ez ki?
Azért nem tiszta, mert nem csak azt állítja magasra, hanem a B port minden bitjét. Hibásak a kommentek.
Köszönöm. Már megijedtem, hogy ennyire láma vagyok.
Lassan tanulok lassan..... Van egyébként valami könyv vagy leírás ami az alapoktól kezdi az AVR C programozását?
Az avrgcc egy forkja a gcc-nek. Mindketto erosen probalja kovetni az ansi c szabvanyokat. De mivel a gcc alapbol egy neumann architekturaju fordito, mig az avr harvard architekturaju, igy van egy-ket piszkos trukk az avrgcc-ben.
Ugyanakkor kezdo koraban ilyenekkel nem nagyon talalkozik az ember. Ha tehat barmilyen C konyvet eloveszel, akkor maris tanulhatod az avr programozast. Csak annyit kell tudni, hogy milyen header filet kell includeolni. Illetve tanulmanyozni kell az avr stdlibjeit, ami az avr-libc. Meg egy trukk lehet fontos, az az interruptok hasznalata, de az az avrlibc interrupt.h jaban dokumentalva van. Egyaltalan mindenek elott elolvasnam a helyedben az avrlibc manualt. Ha barmi nem lenne vilagos, akkor itt szerezhesz infokat.
Vannak C könyveim természetesen forgatom őket, de nekem pont az AVR specifikus dolgokról kellene konkrét leírás.
Ezek szerint az avrlibc lesz az én barátom?
Igen, az avrlibc oldalat erdemes nezegetned. A specifikus dolgok 99.9%-rol van ott leiras.
Kifejezetten ez az ami kell: avr-libc manual
És ide is érdemes benézni konkrét megoldásokért: avrfreaks tutorials Mindkettőhöz kell tudni angolul, de sajnos az informatika már csak ilyen diszciplína. Németül tudóknak egy hasonlóan kimerítő portál: mikrocontroller.net Az avrlibc-hez fontos tudni, hogy csak a 8bites AVR-ekhez való, a 32bites Atmel termékekhez az Atmel maga ápol standard libraryket, illetve az avr32 gcc is Atmel fork.
Esetleg valaki hasonló témában, DE assemlyben ?
Ne mondjátok, mert tudom, hogy mazochista vagyok és élvezem Üdv Kiborg
Nos addig eljutottam, hogy portok kezelése és LCD életrekeltése.
Viszont a piezoval megakadtam. Hoagy tudom rendesen megszólaltatni?
Ha van elektronika a piezon, akkor csak tapot kell adni neki, ha nincsen, akkor negyszogjelet kell eloallitani.
Ha a piezo prtját kapcsolgatom akkor kattog.
Ennél többet nem tudok kihozni belőle.
Pár kommenttel ezelőtt volt ez:
avrlibc delay.h -ről "The maximal possible delay is 262.14 ms / F_CPU in MHz." szerk: Höhö, én sem végeztem a házimat rendesen, mert egy sorral alatta írja: "When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution." Szóljon védelmemben, hogy nem szoktam _delay_ms() -t használni, vagy legfeljeb csak 1-2 ms-re Amúgy azt áruld már el, hogy miért gondolod, hogyha a piezzot ~0.5 Hz-cel kapcsolgatod, akkor fogsz kapni valami értelmes hangot? Az emberi fül eleve csak 10 Hz fölött hal hangokat tudtommal. Meg szerintem a piezzonak sem ez a működési frekvenciája.
Akkor valoszinuleg nincs rajta elektronika, csak a piezo van bekotve kozvetlen. Kattogtasd kicsit nagyobb sebesseggel, mondjuk legyen a delay 0.5 ms mindket helyen es maris 1kHz-en fog sipolni.
Bascom-ban van valami Sound vagy Tone függvény és azzal szépen tudtam "zenéltetni".
C-ben nincs ilyen alap függvény?
A C nem a tehetsegpotlasrol szol
Egy negyszogjelet eleg sok fele modon elo lehet allitani. PWM-el, timer-rel, szoftverbol, igy egy ilyen fuggveny lete sem tul szugseges, raadasul egy 4 soros ciklust nem nehez megirni. Te is jo uton jarsz, csak a delayt kene lecsokkentened ketezredere.
Köszi a bíztatást. Közben megtörtént az 'áttörés'
_delay_us() _delay_ms() _delay_loop_1() _delay_loop_2() Mi van még? Valahogy nem teljes (vagy számomra nem áttekinthető) az avrlibc leírása. A portok kezelését még mindig nem találom benne. |
Bejelentkezés
Hirdetés |