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
Sziasztok!
Remélem csak nekem van ilyen bajom... Van egy pár atmega8-asom, de nem tudom őket felprogramozni külső kristály használatára, így mind 1MHz-en jár. Tudnátok ebben nekem segíteni? Küldök egy minta Makefile-t Köszönöm! Krisz
1,2,4,8 MHz is lehet a belso RC oszcival. Kuldok egy linket, kivalasztod a proci tipusat, a Features -nel meg ami kell, es lent a Current settings-nel lathatod is a beallitasokat.Bővebben: Link
Sziasztok
Nem tudom, hogy egy AVR dallamcsengőhöz hozzá lehet--e kötni egy mikrokapcsolót ajtónyitásriasztó képpen.
Azt a fusebiteknél állítod, nem a programban....
Igen, ha van egy szabad lábad és kezeli a dallamcsengő-program.
Köszi a választ.
Aszabad lábat a mikrokapcsolóra érted?
Szabad lab == kihasznalatlan I/O port lab az AVR-en...
Nem, arra érjük, hogy a procin kell egy szabad láb amire rákötöd a mikrokapcsolódat.. és a programnak meg ezt le is kell kezelnie.
Hát az oldal valóban nagyon jó! Szépen kiszámolja a dolgokat, csak... Hát ez nagyon érdekes. Ez a "csak". Nem változik semmi a beállításoktól. Van egy kis led villogtató programom, ami kb másodpercenként villan egyet (nem timerrel, hanem _delay_ms()-el).
Nos akárhogy is állítom a dolgokat, továbbra is másodpercenként villan. Próbáltam külső nagyfrekvenciás kristállyal (ami egy 10MHz-es), aztán próbáltam RC-kkel 8 megán, és 1 megán is. Semmi változás. Mi okozhatja ezt??? " avrdude -p parport0 -c STK200 -p $(MCUP) -U lfuse:w:0xef:m -U hfuse:w:0xc9:m" Krisz
Hali !
Még jó, mivel a _delay_ms() _delay_us() az F_CPU def alapján müködik. (az ugyebár meg beállítódik valahol a programodban az mcu óra jelére). Pont ez a lényeg, h az 1ms delay 4MHz-n is és 10en is 1 ms legyen, nem !?
Van e Makefile-ban egy F_CPU bejegyzes, oda ird be pontosan az alkamlazott frekvenciat, Hz-ben. Ezt hasznalja a _delay szamolashoz. Azon kivul a _delay_ms -nek is van felso hatarerteke, azt hiszem 65. E folott mar nem pontos. (?)
pontosan, vagy a delay.h -t használo file-ba v a makefile-ba kell definálni az F_CPU -t (anélkül warningot is dob a fordító..)
Itt a delay leírása, olvasd át alaposan
Sziasztok!
Építettem agy stk500v2-es klón programozót (Link). Az avrdude-al működik (com4-en) de az AVRStudo 4.17 nem találja. Több helyen találtam képet a beállító panelről ( Bővebben: Link ) ahol a beállítások között lehet választani az "STK500 or AVRISP"-t. A 4.17-es verzióban viszont ez a kettőt külön választották és nekem egyikkel sem megy. Itt van egy táblázat amiben az AVRStudio 4.19 szerepel de szerintem a 4.17 a legfrissebb. Egy régebbi verziót kellene kipróbálnom?
A Windows-os drivert felraktad hozzá?
Nem jó. Átírtam a programot delay nélkülire, egyszerűen egy for ciklus csinálja a késleltetést, a magjában egy __asm__("nop"); utasítással. Tehát most már semmi időzítés nincs benne. Próbáltam átírni a fuse biteket 1, 8MHz-es RC-re, és külső kristályra (tegnap a "high freq", ma "low freq" változatban is). Továbbra is ugyanaz a villogás sebessége, tehát nem változott az órajel. Ja, átírtam az F_CPU-t is, lementem vele egész extrém 100000Hz-re. Semmi változás. Ez most akkor egy X-akta???
Krisz u.i: avrdude 5.5-ös verziót használok linuxon. Lehet hogy bug van benne? De ekkora??? Megpróbálok egy bascom-ot is, hátha tényleg szoftverhiba lesz..
Lehet hogy nem irtad be a prociba modositas utan a fuse biteket?
Lehet hogy nem a modositott .c fileoddal dolgozik a Makefile? (elmentetted mas neven, es nem modositottad a Makefile-ban) Nem tudok jobbat. (ilyen X aktas esetre olvastam korabban valami hasonlot: "jo gep elott ulsz ?"
Bővebben: Link
sargarigo: Csak ez most a szoftveres részre vonatkozik Idézet: F_CPU erteke annyi kell legyen mint a hasznalt proci orajel frekvenciaja. Ez szerint szamol a _delay_us, es a tobbi, vagyis a loop-ok, amelyeket hasznalja a _delay_xx. „átírtam az F_CPU-t is, lementem vele egész extrém 100000Hz-re.”
Működik!
Átmentem dózeba, és bascomban megírtam ugyanezt a programot. Áttöltöttem, és hozta a szokásos 1s -os villogást. Aztán megnéztem a fuse biteket az áttöltő panelon, és beállítottam külső nagyfrekis kristályt 0ms indítási késleltetéssel. És jé, gyorsabban villog! Ez már jó jel volt. Megnéztem a fuse biteket hogy miként definiálta: ee:d9 volt. Vissza linuxba, átírtam a Makefile-ban hogy ee:d9-et írjon ki. És most már itt is működik. Nem tudom miért nem volt jó a számított változat(ok), de ezzel úgy tűnik hogy rendben van. Most örülök! Köszönet mindenkinek az ötletekért!! Krisz u.i: Ja, és meggyőződtem róla, jó gép előtt ülök!
Jol ertem en, hogy nem jol szamolja a korabban belinkelt oldal a fuseokat? (Meganal meg nem hasznaltam.) E_E : D_9, az oldal szerint is Ext crystal/resonator high freq, 0ms. Vegulis nem ertem mi volt a gond, de nem is fontos, az a lenyeg hogy te ertsd
Nem-nem! Az oldal jó!
Éppen ezt mondtam, hogy jól számolt mindent, csak rosszul választottam ki! Szóval okés a dolog! Krisz
Érdekes problémába botlottam! Egy timert futtatok, ami egy szinusz jelet adogat kifelé a PORTD-re.
ahol SWa határozza meg a frekvenciát. A hang idejét egy delay_ms() -el állítom be a főciklusban. Érdekesség az, hogy minél magasabb hangot szólaltatok meg, annál rövidebb ideig tart. Tehát a mély hangot hosszú ideig kitartja, a magasakat pedig egyre rövidebben. Próbáltam delay-független késleltetést csinálni a timer0-val, de a szitu ugyanez.
Vajon miért lehet ez? Krisz
Nehany eszrevetel: long helyett unsigned int, OCR1A 16 bites. Bar a fordito elintezi... TCCR1B configot egyben irni ki, OR nelkul. Korabban itt volt szo rola, ezek okoznak furcsasagokat. Mikor mar rendezett a kod, lehet tovabb gondolkodni.
Megtörtént a szépítés, jelenleg így áll a helyzet:
Egyébként feltöltöttem a programot, hátha máshol van a hiba. main.c freq.inc Makefile
Esetleg ide is feltöltheted fájlmellékletként ezeket, és akkor az utókornak is megmaradnának tutira...
Hello mindenki!
Azt szeretném kérdezni hogy mit tudtok a ATF16V8BQL-es AVR-ről ha egyáltalán az? Adatlap Link Mert most szeretnék elkezdeni foglalkozni az AVR programozással és nem tudom honnan de ebből az AVR-ből nekem van 3 is és ha ezzel is el tudom kezdeni a 'gyakorlást' már nyert ügyem van. A választ előre is köszönöm
Hali !
Nem, ez nem mikrokontroller, hanem PLD (programable logic device) mint ahogyan a datasheet is irja. Nagyon leegyszerüsítve úgy kell elképzelni, hogy vannak bemeneti lábai, és kimeneti lábai. A kimenetek a bemenetek és a program függvényében állnak be. Kb olyasmi mint egy programozható logikai kapu. A programozással gyakorlatilag a bemenet/kimeneti igazságtáblát deklarálod le. mikrokontrollerrel ez utánozható viselkedés, de ez közel sem olyan okos áramkör, nincsenek perifériái satöbbi..
Okés köszönöm
Azért kérdeztem meg itt mert: 1 Itt sok az okos ember... 2 Nagyon szegényes az angol tudásom... Amúgy én onnam gondoltam hogy MCU mert rajta van az ATMEL felirat de tévedni emberi szokás. Akkor mégis kell vennem egy marék AVR-t
Az Atmel elég sokmindent gyárt, igaz az egyik fő profiljuk az MCU.
Amúgy azokkal is lehet mit kezdeni, de én személy szerint nem foglalkoztam PLD-kkel, nem tudom hogyan/mivel kell programozni, de gyanúm szerint nem lehet egy túl bonyolult dolog.. |
Bejelentkezés
Hirdetés |