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
Feltoltottem az lcd_driver javitott valtozatat. Moderatori engedelyezesre var,..
Hellosztok
Szeretném kérdezni, hogy egy ATMEGA644-es A portját lehet-e egyszerre digitális portként és ADC-ként is használni? (a PA.0-ra menne a jel a többi egy grafikus lcd vezérléséhez kell (KS107/108))? Segítségeteket előre is köszönöm: Hurka
Igen, de az athallas miatt a mintavetelezett analog jel zajosabb lesz.
Lehet, de valoszinuleg meg fogja szorni tuskekkel az ADC-t.
Nincs egy olyan ajanlas az adatlapban, hogy ha ADCnek hasznalod a portot, ne hasznald I/O - nak is ?
Nehari! Nem ugráltatni, vagy utasítgatni szerettelek volna, csak másnak is előfordulhat, hogy más portra kerülnek a lábak.
Köszönöm, akkor megpróbálom megoldani, hogy a mintavételezés ideje alatt ne legyen LCD vezérlés (fix, 2 sec hosszú mintákkal dolgozom, 548 ( ) Hz lesz a mintavételi frekvencia (azért ennyi, mert ezt tudom stabilan (viszonylag kis hőfokfüggéssel), egyszerűen előállítani - kristály nélkül, bár lehet, hogy azzal lesz véglegesen megoldva).Így talán elkerülhető lesz az áthallás.
Üdvözlettel: Hurka
Sziasztok!
Készítettem egy 2 LED-et 1 másodpercenként felváltva villogtató forráskódot,de nem tudom ,hogy jó e, ezért gondoltam,hogy megkérdezem még mielőtt beégetném a mikrokontrollerbe. A LED-ek a PB3ésPB4-en van
Haragrol szo sincs. Ugyis mindenki sajat belatasa szerint cseleszik. Folosleges mellebeszeleseket kerem torolni (ezzel egyutt),.. ez az egyik leghasznosabb topic :smoke:
Igen, ugy mehet a dolog. Sot az a legjobb ha hasznalod a noise reduction sleep mode-ot. Ekkor leall a mintavetelezes idejere a proci futasa.
Hasznald a hozzaszolas irasakol a Kod gombot, mert nelkule elvesz a kod nagy resze.
Használd máskor a kód beillesztés gombot kérlek.
Itt van a kód újból :
Igen, de ezzel az lehet a probléma, hogy én ezt a mintavételi frekvenciát egy 555-el állítom elő, és INT0-val megszakításokban kérném le az adc állapotát. Fontos a jel elemzésének szempontjából a NAGYJÁBÓL pontos (néhány tized százalék eltérés max) mintavételi frekvencia. Így is működhet a noise reduction sleep mode?
Üdvözlettel: Hurka
Majdnem jó.
ehelyett ez:
meg az include után kellene egy szóköz. És a végén az utolsó előtti bezáró kapcsoszárójel után nem kell pontosvessző. meg persze a 28- sorban a "_delay_" után kimaradt az "ms". Jah és a 30. sor végén lemaradt egy pontosvessző.
En azt nem ertem, hogy az idoziteshez minek hasznalsz 555-ot, amikor van szamlalo a mikrokontrollerben. Ha kvarcot raksz az AVR-re, akkor pontosabb lesz mint barmilyen 555-os kapcsolas. Amugy igy 555-tel is meg lehet oldani, csak akkor az int0-ra kell egy interrupt kezelo fuggvenyt irni, ami inditja az atalakitast a sleep moddal.
Szervusztok!
Problémába ütköztem:
Az adc bemenetéről mindig 0-t kapok. Mi okozhatja ezt? Az LCD controlportja van a porta-n.... Segítségeteket előre is köszönöm: Hurka
Sziasztok! Egy újabb probléma vetődött fel. Sokat olvastam az I2C kommunikációról, de most, mikor szeretnék AVR-el kommunikálni velük, fogalmam sincs, hogy álljak neki... Amik a rendelkezésemre állnak: DC-SS503 Digitális iránytű, DS1621 Hőmérő és DS3232 Real Time Clock. Az volna a kérdésem, hogy valaki aki nyilván kommunikált hasonló, vagy ilyen eszközzel, az tudna nekem egy forráskódot felrakni? Biztos azzal is elakadok majd, de szeretnék I2C-n kommunikálni. Előre is köszi a segítséget! Nem mással akarom megíratni a kódot, hanem meg szeretném tanulni, de sajnos egyik AVR-es cikk sem foglalkozik I2C-vel. sem a 8lábu 4 cikk, se a robotos 3, pedig jó lenne ebben a témában is.
Azt tudom, hogy
Én ezt használom i2c kommunikálásra, ezt nézegesd ha sajátot akarsz csinálni, vagy használd ezt. Bővebben: Link
Vagy az Atmel Application Note-ok kozott nezd meg az AVR315.
Hellosztok!
Bascomban egy bájtba bele tudom gyömöszölni a 10 bites ADC értéket úgy, hogy leosztom 4-el és veszem annak egészrészét (vagy kerekítek egészre), nem? Csak mert valamiért nem működik... Segítségeteket előre is köszönöm: Hurka
Bár a Bascom -ot nem ismerem konkrétan, de a megoldáshoz nem is kell ismerni a konkrét programnyelvet, hiszen az AVR-ek hardware -ből tudják a 8bites ADC -t mindenféle varázslás nélkül. Mivel a 10bites ADC eredmény csak 2 regiszterben fér el, így van az ADC-nek ADCH és ADCL regisztere. Ezek normál esetben jobbra igazítottak. Tehát az ADCL -ben van az ADC eredmény alsó 8 bitje, míg a ADCH alsó 2 bitje pedig tárolja az ADC eredmény 9. és 10. bitjét. A megoldás a problémádra, hogy úgy kell bekonfigurálni az ADC-t, hogy a szokásos jobbra igazítás helyett balra igazítást alkalmazzon. Tehát az ADC eredmény felső 8 bitje lesz az ADCH regiszterben, míg a az ADC eredmény alsó 2 bitje meg az ADCL regiszter 8. és 7. bitje lesz. Mivel neked csak 8 bit kell, így ki kell olvasni az ADCH regisztert és kész is van a 8bites ADC. Az ADCL regiszterrel nem kell foglalkoznod.
Igen.
De a GetADC amit visszakapsz WORD típusú! DIM a as word dim b as byte a=getadc(1) A=A/4 b=a Ha közvetlenöl a byte-ba akarod beolvasnia getadc-t b=getadc(1) akkor az _alsó_ byte kerül bele! Azaz hiba
Köszönöm a válaszokat és a későbbiekben hasznosítom is majd, amiket megosztottatok velem, de azt hiszem, megvárom Fizikus cikkét a hasonló Honeywell HMC6352 digitális iránytűmodulról. Próbálgattam, meg olvasgattam, de még nem látom át annyira, hogy tudjam mit kérdezzek következőre. Ha jól gondolom, akkor inicializálom az I2C-t és küldök egy kérvényt, hogy mondja meg, merre van észak, majd próbálok fogadni és amint jött valami, feldolgozom... talán... Nagyon sokat google-öztem is, de nem találtam semmi "minta" programot sem. Ha valakinek a hétvégén nagyon sok ideje lenne, szívesen venném, ha elmagyaráznátok, de ha nem, legrosszabb esetben megvárom tényleg Fizikus cikkét.
A Következő lenne az én problémám:
Írtam egy kis programot ATmega162-re amivel csak sima soros port kommunikációt akarok létrehozni a PC-vel. Ez megy is de, miért van az hogy a uC-el küldök egy C betűt a terminál elsőre egy fals Karaktert lát ez érthető is, valszeg még akkor hangolódik rá, majd végig a jó karaktert látja, de ha például egy sorosport figyelő programmal nézem, hogy mi megy át (Serial Port Monitor) Akkor már nem ugyanaz a karakter jelenik meg... Illetve van egy Perl programom ami szintén működik, szépen olvas, és ír is, de pont ugyanaz a probléma, ugyanazt a fals karaktert olvassa mint a sorosport figyelő, nem pedig azt amit a terminál, nem a helyeset :S Karakter kódolással lehet valami vagy mi?
Azonos sebességgel kommunikál a két eszköz? Az AVR sebességéhez megfelelő kvarcot tettél?
Szia! Én ezt a kis "gagyi" progit használom, de szerintem nagyon okos és jól működik. Próbáld ki, ha gondolod!
Jol ertem, hogy ket kulonbozo szoftver ket kulonbozo adatot olvas be, elvileg ugyan arrol a portrol? (Amugy ez most win vagy linux?) Mert ebben az esetben, nem is a uC korul kene eloszor keresni a hibat. Probald meg egy masik szamitogeppel osszedugni a gepedet, es onnan kuldeni valamit.
hát ez a probléma, a kavarc tuti stimmel atmega162 mellé egy 16 MHz-es kvarc fuse jó F_CPU baud UBRR minden oks, hisz akkor nem is menne át semmi, a baj az csak ez hogy a terminál (Windows alatt) az látja egy rossz karakter után a jó karaktereket, a perl, illetve egy másik sorosport figyelő szoftver pedig ugyanazt a hibás karakter látja :S
Ezt a másik gépen próbáld ki ez egyenlőre nem kivitelezhető, csak majd csütörtökön leghamarabb tehát esetleg valami más tanács? |
Bejelentkezés
Hirdetés |