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
Hello! Fizikushoz lenne pár kérdésem a legfrissebb cikkjével kapcsolatban...(igaz még csak attiny45-el szórakozok, de majd nem lenne rossz egy ilyet is megcsinálni) 1) azt a Bluetooth modult egy külföldi oldalról vetted valamivel olcsóbban, mint a hestore-on. Már kinézetre is különböznek. Ezek mennyire kompatibilisek egymással? (kivezetések, programok,stb.) 2) a 3,3 és 5 V-os átalakító panelt honnan vetted meg? 3) tudom, hogy igényesebb a feszültség átalakító panellal dolgozni, de a másik megoldás, miért nem olyan jó? Egyébként nagyon igényesen megcsináltad a cikket, és nagyon nagy tisztelet jár neked ezért, mert ez nem "csak" egy hétköznapi avr-programozás.(nem is tudom elképzelni, hogy honnan olvastad ezeket) :worship: :eek2:
Elnézést kérek, közben megoldódott (mindkét ciklust beletettem egy közös végtelenbe).
Az egészet bele kellene tenni egy végtelen ciklusba, mert ha nem teszed, akkor nem fog visszaugrani az elejére, hogy újra megcsinálja az első ciklust.
Szerk.: Gyorsabban jöttél rá, mint ahogy én beírtam.
Igen, de azért köszönöm, hogy válaszoltál.
Hoops,
Elsőre valóban átsiklottam ezen, de újra átnézve az első cikk 2.táblája és a második cikkben leírt parancs (0001) szerintem nem egyezik. Jól gondolom? Mellékletben a problémám. Köszi.
hol van a cikkben 0001? Szerintem jo a cikk, azt irja, amit az angol doksi is. Eloszor 0011xxxx, ami 8 bitesre allitja, majd 0010xxxx, ami a 4bites uzemmod.
Fejlődőképes vagy.
A break; utasítással ki is lehet lépni a ciklusból.
Köszönöm. A break-et is, ezt eddig nem ismertem.
Mostmár ismered.
Szívesen!
Csináltam gyakorlásképpen egy egyszerű "kódzárat". Csak 2x2 nyomógomb van rajta, és nem állítható (legalábbis nem egyszerűen) a kód, viszont van rajta néhány "extra": gombnyomáskor sípol egy picit, háromszor lehet rossz kódot beütni, negyedikre nem enged ki a szirénából (addig is szirénáz, csak addig egy gombpárossal ki lehet lépni belőle, bár ha valaki nem azt a két gombot nyomja, már az első rossz kódnál szirénázva marad), jelzi három LED-del, hogy mennyi van még hátra, ha elütöttem a kódot, de még nincs meg a négy gombnyomás, akkor vissza lehet vonni az addig beírtat, ha belépek, akkor törlődik a próbálkozások száma. Lehet, hogy kihagytam valamit, ha érdekel valakit ez az egész, csinálok videót. Majd még annyit tervezek, hogy beírom eepromba a rossz próbálkozásokat, hogy ha közben kikapcsolódik, ugyanonnan folytatódjon, de egyenlőre elég ennyi. Szóval ha érdekel valakit bővvebben, szóljon, és csinálok videót.
Sziasztok!
TSOP1736-al szeretnek taviranyitobol jeleket venni. Sajnos sehol nem talaltam leirast, a teljes jelmodulaciorol, igy gondoltam majd en kikiserletezem.
Azert a portokra teszem, mert nincs mas eszkozom, amivel nezni tudnam. ( UART illesztot meg nem sikerult mukodesre birni, LCD-t meg nem vettem ). Az A porton maximumnak 200 koruli ertek jelenik meg, C porton minimumnak 2. Itt mar szurve van a kod, csak 10nel nagyobbakat mutatja, igy 13-at kapok... Ezekkel a beallitaskal megy a timer, belso 8MHzes orajelrol:
Tudtok mondani valami konkret idozitest, amivel a jeleket dekodolni tudnam? Esetleg egy konkret IR leiras is megteszi. Udv.: Atya
Engem érdekel, jöhet a videó!
Ok, mindjárt.
Sajnos elég lassú lesz (youtube-ra teszem), mert elég nagy, de amint fent van, írok(kb.:egy és egynegyed óra).
1) A HEstore-os BT modult nem nagyon tanulmanyoztam, de ugy tunik hogy mas parancsokat hasznal, ezert mashogy lehet beallitani. De egyebkent a hasznalatanak az elve ugyan az (BT-n keresztul egy virtualis soros portot hoz letre a Pc-kozott)
2) Innen rendeltem (jelenleg itt vagyok az also felteken) Logic Level Converter 3) elvileg az ellenallasokkal is ugyan olyan jo, csak ha mar vettem egy ilyet, akkor ki akartam probalni hogy mukodik-e. Minden infot a neten talaltam (legtobbszor angolul), es megprobaltam megerteni hogyan mukodnek a dolgok. Utana megprobaltam megcsinalni magamtol es ha sikerult, akkor irtam rola cikket, mert akkor ert meg valamit igazan az ember, ha el is tudja azt masnak magyarazni. Ha hiszed, ha nem, csak kb 1 evvel ezelott kezdtem el elektronikaval foglalkozni. A programozas nem az erossegem, egyetemi eveim alatt is csak egy felevig volt egy targy ami az alapokkal foglalkozott, ezert annak nagyon orulnek ha nekem is jol menne a "csak" hetkoznapi avr programozas. Idézet: „Tudtok mondani valami konkret idozitest, amivel a jeleket dekodolni tudnam? Esetleg egy konkret IR leiras is megteszi. Udv.: Atya” Szia! Ezt nezted mar?: Távirányító jelének fogadása uC-vel
Szia! Igen.
Regen El is felejtettem, hogy van ilyen cikk. Mint irtam, fogalmam sincs a jelekrol, scope-om pedig nincs. A hangkartyara illesztes hogyan mukodik? Gondolom mikrofon oldalra, es valami grafikus hangmodulalo programmal ( Audacity, Windows hangrogzito? ). Az illesztesnek a mikentje erdekelne. Gondoltam megszamolom a kuldott biteket, es csainaltam egy external interruptos programocskat. Kimenete szinten az egyik port. Porbaltam any change, rising, falling edge-re is beallitani, az eredmeny mindig ugyan az lett: Egy ideig novelte a port erteket, utana nem reagalt semmit. Probaltam vezetekkel birizgalni a labat, akkor sem volt semmi. Nem ertem
Köszi, ez maradt ki, pedig első telepítéskor még eszembe volt.
Most az a baj, hogy a P2-es 450MHZ-s gépemen nem tudok égetni (XP alól), szerintem lassú neki a processzor, vagy nem tudom. Le lehet valahogy lassítani az égetési sebességet, hogy esetleg azon a gépen is működjön a WIN-AVR? Novarobot.
Szívesen. A másik kérdésedre viszont sajnos nem tudok mit mondani.
Szia killbill
Szóval..... őőőőő.... igen. Kösz.
Hali.
Az LCD-nél az adat vonalakat hogyan tudom beállítani, hogy hova csatlakozzanak az AVR-hez? Ez így jó:
Sziasztok!
Érdekes problémával fordulok hozzátok, a megszakításkezelésnél az ISR rutin kétszer fut le egymás után miközben én egyszer hívom meg (1 lefutó jellel az INT0-án). Belépéskor rögtön tiltom a globális megszakítást,valamint "törlöm" a flaget. A másik, hogy a GIFR regisztert nem tudom írni, írás után rögtön kiolvastam de mindíg 0. A kérdésem, hogy is van ez? Atmega16-on kísérletezgetek.
Ha interruptban vagy, akkor miért törlöd a flag-et?
Nézd meg azt is, hardveresen hogyan épül fel az interrupt mechanizmusa. A GIFR regiszter nem olyan regiszter mint bármi más... Eleve a flag regiszterekre ez elmondható. Törölni is nem véletlen úgy törölsz, hogy az 1-re egyet írsz. Ezek "billegnek". Ez nem írható - olvashat oly módon, mint ahogy ezt más regiszternél megszokhattuk. Ezek mögött nem D tárolók, hanem RS és JK FlipFlop-ok vannak. Beeshet nála magasabb prioritású interrupt, hogy indokolt a letiltás? Egyébként sokszor interruptban nem szabad használni a cli, sei párost. Többször tapasztaltam, hogy legfőképp magasabb prioritású interruptoknál a státusz regisztert hazavágja. Ha mindenféleképpen szükséges tiltani más interruptokat (ami azért elég ritka, tipikus ismertető jele az "igénynek", hogy túl hosszú az ISR tartalma) akkor az alábbit szoktam csinálni. Működik, és sok optimalizálási miatti cifraságot gyógyít meg:
Ez akkor is hasznos, ha az SREG-ben mást is használsz. És akkor is hasznos, ha máshol direkt tiltod az interruptokat. Ha nem így csinálod, és a végén sei-t hívsz, abból gond is lehet... Mert lehet hogy főprogramban valahol direkt tiltottad... Az ISR meg újra engedélyezi. A fentebbi megoldás erre is gyógymódot ad, mert azt teszi vissza ami volt előtte. Ha az interrupt egyéb okán szükséged lenne mégis letiltásra, vagy azonnali cselekvésre, akkor NAKED ISR-t használj. Ott az történik, amit Te akarsz. Nem úgy indul, hogy stack-be teszi a GPR-eket... Konkrétan tök üres. Gyorsaságot kapsz, cserébe rengeteg alacsony szintű kötelező játékért. ASM betétek, stack-ek kezelése (push - pop).
Hello!
Az baj lenne, ha az alábbi képen látható 10uH induktivitás helyett 47uH-t tennék? Az adatlapban 10uH van csak ezért kérdem. Kössz a választ.
Köszönöm a választ! Amúgy azért próbálkoztam törölni, mivel egy infra jelsorozatot vételezek (RC5) és többszöri megszakítást idéz elő a PD2/INT0 lábon. Eddíg ezt a jelenséget nem tapasztaltam, többi mikrovezérlőn, többekközött az Atmega16-on is tökéletesen működött, ott sem kellett túlbonyolítsam, lehet hogy csak ez az egy példány viccel meg. Kipróbálom a kódot amit írtál, és jelzek mik a fejlemények.
ICR-en vedd és ne INT0-án. Vagy ha INT0-án veszed, akkor NAKED ISR-el csak kapcsold be a timert, majd compare-nél olvass port állapotot.
Ha ICR-en veszed, akkor magától indítja a timert.
Sziasztok!
Most kezdem tanulni az avr programozást egy Atmega16-tal. Van egy kódrészlet:
A bajom ezzel az, hogy az AVR Studióban a ret után nem a jmp sorra ugrig vissza, hanem az ldi r16,low(ramend) -re. Jól van ez így? És hogyan kellene a programba visszaugratni? Köszönöm előre is!
Közben egy sorral kiegészítettem a programot, de nem vagyok biztos abban, hogy ez így nem gányolás.
Már máskor is tapasztaltam, hogy a ret utasítás a legelejére küldi vissza a PC-t. Miért? Mit csinálok rosszul?
Én így csinálnám:
A "megnyomva" szubrutin számomra értelmetlen. Azonkívül, hogy ott állítod be a C port irányát, illetve mindig ugyanazt az értéket teszed ki, érdemileg nem változik semmi... |
Bejelentkezés
Hirdetés |