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
Miért nem így csinálod?
Nos gondolkoztam, hogy hogyan lehetne sorvége jeltől, sorvége jelig olvasni. Ez lett belőle:
Szerintetek működőképes lenne? Az én véleményem szerint működhet, de nem vagyok biztos magamban. Már csak azt remélem, hogy nem fog kimaradni egy karakter sem. Azt nem tudom, hogy a kontrollernek lesz-e elég ideje a két karakter között megvizsgálni a while feltételt. A kontroller Atmega8, 4,096MHz-ről fut majd és az adatok 9600baud-al jönnek.
Legegyszerubb:
vagy:
NADE! Ezek nem vedettek buffer tulcsordulas ellen! Tehat szerencsesebb lenne:
Elkezdtem tesztelni a gps-t. lcd-re íratnák ki valamit, amit éppen vesz, de semmi eredmény. Olyan, mintha rá sem lenne dugva az uart-ra a gps. Ha kihúzom, akkor sem csinál mást, csak ilyen fura 3 pontból álló karaktert ír ki. Ha rá van dugva a gps, akkor is. Baudrate beállítva 4800-ra, ugyanúgy, mint ahogyan terminálban is volt. Processzor egy atmega8, 4,096MHz-es kristállyal és a Fleury féle uart library-t használom. Csak egyszerűen egy karaktert szeretnék látni, hogy egyáltalán működik a kommunikáció, de semmi. Ennyi lenne az egész, amit csinálna a program.
Ha csak egyféle karaktert írsz ki? akkor működik?
Most próbáltam, hogy kiküldök egy "a" betűt, összekötöm az uart rx és tx lábát, majd fogadom a jelet, de semmi változás. mintha nem is élne az uart.
Sikerült megcsinálni. Rossz volt a Fleury féle uart kezelés rutinja. Az atmega adatlapjából kimásolva a gyári uart kezelő rutinokat egyből életre kelt és már ki is írja a kijelzőre a gps-ből jövő adatokat.
Sziasztok!
Lenne egy pár kérdésem amire sehol sem tudtam meg a választ.Lehet ,hogy kezdőként túl egyszerűket kérdezek de azért örülnék akármiféle válasznak. Először is :Mit jelent a a kettő kereszt és a kettő minusz ? Például:
Másodszor :Mit jelentenek ezek: "val" , "break" ? Köszi!
A ++ növeli az adott változó értékét eggyel, a -- pedig csökkenti. A val az egy változó(gondolom máshol még fontos a programban), a break meg megszakítja az adott rész futását és kilép abból.
++ abban a kontextusban post-inkrementálás (növeli eggyel a változó értékét), -- pedig post-dekrementálás (csökkenti eggyel az értékét).
Amit kimásoltál az az un. switch-case szerkezet. Break pedig azért kell, mert case 1: és a case 2: a két lehetőség, és ha case 1-re ugrik a program, és nincs a végén a break, akkor a case 2 is lefut, de ha ott van akkro csak a case 1 fog, és ezután megy tovább a program kihagyva a case 2-t.
Sziasztok ! Segítséget szeretnék kérni mert még kezdő vagyok az AVR ben. Van egy project amelyben ATmega 324p proci található és a kapcsolás szerint külső kvarc kristályt (7,37 Mhz) használ a proci illetve az óra oszcillátort is (32 khz). minden szépen le van írva a projectben de sajnos a fuse bitekre még utalás sincs illetve azt írja az oldal , hogy használjak bootloader t (avr109) amit átírtak ehhez a procihoz és a feltöltendő programhoz de fuse bit et ott sem tudom, hogy hogyan kellene beállítani.Van valami tippetek, hogy hogyan csináljam ? Előre is köszi.
Sziasztok!
Tudtok mondani egy olyan elektronika szimulátort, ami futtatja a Mega644 programját és van benne egy adó/vevő ami a számítógép egyik COM portjáról küldi az adatot UARTon az AVRnek?
sziasztok, olyan problémám lenne, hogy van egy programkódom, de nem találom benne a hibát. a Kódot csatoltam, és hiba jelensége pedig az, hogy a PD4 belső felhúzó ellenállása nem kapcsol be valamiért, a PD5 PD6 PD7 bit igen. Kipróbáltam, és ha külön kapcsolom be a PD4 felhúzó R-t, akkor felkapcsol.
Köszi a segítséget.
Ez lemaradt, talán kellhet
Egyrészről a send_string("3\n") előtti sorban lemaradt a '~' a b_pin elől.
Másrészről az első beolvasó résznél a PD7 kimenet, ennek ellenére a PD5,PD6 és PD7 !!! kerül olvasásra, másodiknál a PD6 kimenet, olvasva: PD4, PD6 !!! és PD7, harmadiknál PD5 kimenet, olvasva: PD4, PD5 !!! és PD7, negyediknél PD4 kimenet, olvasva: PD4 !!!, PD5, PD6. Első ránézésre hirtelen ezek tüntek fel.
Köszi, a rend helyre állt, tökéletesen működik
Hali
Lenne egy amatőrnek mondható kérdésem most szeretnék először smd avr el foglalkozni ATmega 16 ot választottam a projektemhez, de van neki 3db Vcc és 1db AVcc és 4db GND csatlakozása na már most ezek az avr-en belül össze vannak kötve tehát elég 1 lábra adni áramot és mindenhol lesz vagy mindegyikre külön kell tenni áramot?
Összeset be kell kötni. (Illik, attól függetlenül, hogy belül is össze vannak (lehetnek) kötve.
A Vcc és a VccA pedig az analóg és digitális rndszerek tápja (az analógot illik szűrni). De ha nem kell precíznek lenni, akkor az analóg és digitális tápokat (mindegyiket) be kell kötni.
Ne tessék elfelejteni minden Vcc-hez kondit rakni. Kezdésnek 100nF kerámia elég lesz.
eddig én mindig úgy csináltam hogy stab ic és utána kondi muszáj minden vcc hez külön kondi nem elég ha összekötöm őket és úgy kap 1 kondit?
Szaisztok!
Pár hete felraktam egy videót arról, amit sikerült létrehoznom egy ATMega168 és 5 LED segítségével. Most kicsit átdolgoztuk a programot mert nem volt tökéletes, de mostmár minden tökéletes és annyi efektet tudok belesűríteni amennyit a memória csak bír Itt a végeredmény: Bővebben: Link
Nem elég. Azért kell közel rakni minden Vcc-hez, mert ezeknek a kondiknak az egyik funkciója az, hogy helyi energiaforrásként szolgáljon az ICnek. A távolabb rakott kondi / áramforrás és az IC lába között ott van egy vezető, aminek induktanciája (és ellenállása) van, ez meggátolja a gyors áramleadást.
Másik funkciója ezeknek a kis kondiknak a zajcsökkentés: a kimeneti jelek változásának sebességéből eredő frekvenciát (nem az órajel frekije!) illik leszűrni, ezt igyekszik a kondi kis impedanciával a föld felé vezetni. Állítólag azért nem rakják a kondikat az IC-kbe, mert nem tudják (olcsón) megoldani. Ha analógot is akarsz mérni, akkor illik szeparálni a digitális tartománytól. Tápot pl PI szűrővel. Bővebben: Murata: Noise Suppression Techniques Murata: Application Manual for Power Supply Noise Suppression and D...tal IC Avrfreaks: noise problem in in-built ADC of atmega32
Haliho!
AVR-rel szeretnénk kommunikálni soros porton akár hyperterminal-lal, akár hercules-sel küldünk neki egy karaktert, akkor pl a számjegyekre ugyanazt adja vissza, de pl a r és b betűre ugyanúgy r jön vissza. Ha az AVR programban egy if-fel LEDet szeretnénk villogtatni, pl r-rel, akkor nem történik semmi.
A kondik, fuse bit-ek, frekvencia, baud rate, meg minden ilyesmi jó(szerintünk). Valamint egy Atmega 8-ról lenne szó. Várjuk válaszotokat, ötleteiteket. Üdv: Norbi
UC3A0/1 PLL-el kapcsolatban vannak tapasztalatok? Szokott vele stabilitási probléma lenni? Külső, 25MHz-es órajelről menne. Egy adott órajelhez mit érdemes beállítani: kisebb DIV és nagyobb MUL vagy fordítva?
Magának a procinak a sebességéről van tapasztalat, mit bírnak tartósan, hiba nélkül? Doksi szerint 66MHz, dehát a doksi nem mindig mérvadó ugye. PortA, PortB frekinél tapasztalat? A 'freaksen néztem, de ott főleg az első verziókra panaszkodtak, többiről nem találtam infót. Az enyém K, azt hiszem ez az utolsó széria. Ha 50-60 MHz-et akarok külső 25 MHz-ből, akkor jól értettem-e a következőket? - PLL DIV-vel és MUL-al addig bűvészkedek, amíg 80-240 MHz közé varázsolom az órajelet - utána opcionálisan leosztom 2-vel PLLOPT[1] által - CKSEL-lel pedig beállítom a CPU, HSB, PBA, PBB végső leosztását max 66 MHz-ig Van valamilyen szabály még, amit lehagytam? Stabilitáson kívül mindegy, hogy milyen frekit állítok be CKSEL-lel? SPI-nál van freki limitáció, erre már felhívtátok a figyelmemet. MACB, ADC, SPI és DMA lesz, meg talán flash-be irogatás. Előre is köszi!
Megoldódott.
Egyelőre legalábbis úgy tűnik.
Sziasztok!
Valaki meg tudja mondani, hogy milyen kapcsolókkal kell meghívni a compilert, linkert, assemblert winavrben ha bootloadert szeretnék fordítani? Másik kérdés, hogy ha egy assemblybe szeretném fordítani a főprogramot és a bootloadert, akkor hogyan adom meg, hogy melyiknek mi legyen a kezdő függvénye?
Sziasztok!
Nemrég kezdtem foglalkozni az AVR-el, a pwm szabályozással pedig pár napja. Ebben a cikkben találtam egy kódot, ami úgy gondoltam, hogy jó lenne kiindulásnak: Bővebben: Link De az a baj, hogy a lefordításánál elakadtam. A GTCCR, a TCCR0A, TCCR0B részeknél valami "undeclared ..." meg "first use in function" hibákat kapok. AVRStudio-val próbálkoztam. Vagy egy egyszerű kódnak is örülnék, amin megtanulhatnám a pwm-et. Google-ban már kerestem, de nem sokra jutottam. Légyszi segítsetek!
Milyen AVR procit hasznalsz? ATtiny45-ot mint a cikkben? Mert ha mas AVR-t, akkor mas lesz a Timert beallito regiszterek neve, es mas lehet a Timer "tudasa" is...
|
Bejelentkezés
Hirdetés |