Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   326 / 840
(#) trudnai válasza tursaba hozzászólására (») Máj 21, 2011 /
 
Idézet:
„Jó az IT kezelés. A fordított állományban az IT vektor táblában a helyére (jó címre)fordította be.”


Nem csupan a megfelelo helyre kell betennie a kodot. Annak a fuggvenynek megfelelo prologue es epilogue kell hogy legyen. Gondolok itt a kontextus kezelesre es a helyes visszateresre. Nem ismerem a Mikroelektronika C forditojat igy segiteni ebben nem tudok, de ha vasaroltad biztosan van hozza konyv esetleg peldatar...
(#) vagnerjazon hozzászólása Máj 21, 2011 /
 
Biztos nem tud segíteni senki ebben? Hogyan kell ezt használni? Nekem valamiért nem megy. A master valamiért nem tudja neki elküldeni az adatokat.
(#) Knaliret hozzászólása Máj 21, 2011 1 /
 
Sziasztok!
A mellékelt UART-USB átalakítót építettem meg. A gondom az vele, hogy kiszámíthatalanul működik. Próba képpen egy WT41-A bluetooth modult kötöttem rá. Kb. 80-ból 5 esetben ismerte fel a notebookom. Amikor felismeri, akkor rendesen működik, terminálon keresztül elértem, és használni is tudtam a bluetooth modult.
Szerintetek mitől lehet ilyen bizonytalan ez az ft232rl-es áramkör?

Próbálkoztam azzal is, hogy a hidegítő kondikat a átforrasztottam a ki-, és bemenetek közelébe...de a helyzet változatlan.
Az is eszembe jutott, hogy esetleg az USB csatlakozó és az ft232rl chip közötti távolság túl nagy?
(#) L_Maqvus válasza Knaliret hozzászólására (») Máj 22, 2011 /
 
Gondolom USB-ről kapja a tápot, nézd meg hogy a táp nem-e szakadt.
(#) kovacsj válasza Ricsi89 hozzászólására (») Máj 22, 2011 /
 
Idézet:
„A 400 Ω-on ha már 0,6V esik, akkor már nem fog lezárni a tranzisztor, bármit csinálsz.”


Lehet, hogy valamit nem jól látok, és azért kérdezem, mert tanulni szeretnék ebből az esetből is, de hogyan esik itt a 400 Ohmos ellenállás hatására a bázis és ez emitter között 0,6V?
Az ellenállás mindkét lába GND-n van, itt nem kellene feszültségnek lennie. Vagy tévedek?

Köszönöm előre is!
(#) Knaliret válasza L_Maqvus hozzászólására (») Máj 22, 2011 /
 
A táp mindenhova eljut ahova kell.
(#) trudnai válasza kovacsj hozzászólására (») Máj 22, 2011 /
 
Az attol fugg... A fold az egy referencia, es ha jol megnezzuk azt a rajzot, akkor van egy 5V-os es egy 12V-os ag (bar ezt is csak sejteni lehet, mert nincs normalis kapcsolasi rajz). Tehat ha a ket ag fold-je azonos, akkor igazad van, ha nem, akkor ott az azonostol a 3kV-ig barmi is lehet plusz es minusz iranyban.

Nyilvan az az ellenallas lenne a LED-eknek szant aramkorlatozas, de azt nem igy kellene csinalni es raadasul ket db ellenallas kellene mert ket sor LED van ha jol latom.

Na mindegy, en ezt az egeszet mar nem ertem, hogy az OP miert nem tud egy meglevo kapcsolast hasznalni ha nem tud sajat maga tervezni, mert itt fundamentalis problemak vannak. Ezt nem bantasbol mondom, hanem gondolat ebresztonek. Lehet az alapoknal kellene kezdeni es nem itt. Es kozben is lehet forrasztgatni, niincs azzal sem semmi gond, csak nem tervezni kellene hanem megepiteni egy mar megtervezett aramkort.
(#) Hooligan01 válasza Knaliret hozzászólására (») Máj 22, 2011 /
 
Szia!

A kapcsolási rajzon nincs kivetni való, elméletben jó. (a kivitelezése megint más kérdés)
A bluetooth modul helyett, inkább kösd össze az RX-TX vonalakat, és úgy próbáld terminal programmal, így kizárható a bt modul hiba.

Egyébként ez az áramkör hogy kapcsolódik a topichoz?
(#) kovacsj válasza trudnai hozzászólására (») Máj 22, 2011 /
 
Köszönöm szépen!
Az első gondolatom nekem is a közös föld volt.

Ismételten nagyon szépen köszönöm!
(#) Ricsi89 válasza kovacsj hozzászólására (») Máj 22, 2011 /
 
Írta, hogy külön van neki 5V-os tápja a vezérlő számára és 12V a ledeknek. De akkor a két földet közösíteni kellett volna és nem ellenállással összekötni. Ő a bázisellenállást akarta megspórolni úgy, hogy ide tesz be egy nagy közös ellenállást. Ez az ellenállás így olyan, mintha az Emitter és test közé lenne kötve. Ha viszont a tranzisztoron áram folyik, akkor az ellenálláson feszültség fog esni. Ekkor viszont kinyithat a tranzisztor és nem tudod többé lezárni, csak a tápfeszültség elvétellel.
Így tehát ha a két test potenciálja megváltozik egymáshoz képest, akkor a tranzisztor kinyithat és akkor hiába akarod te lezárni, ő nem fog engedelmeskedni, mert nem tudod az emitter szintjére lecsökkenteni a bázis feszültségét. ezért is kellene egy közös fix változatlan pont, ami itt a testpont lenne, amihez képes lehetne változtatni a tranzisztor bázisát.
(#) kovacsj válasza Ricsi89 hozzászólására (») Máj 22, 2011 /
 
Aha! Így már világos!
Neked is köszönöm szépen!
(#) Knaliret válasza Hooligan01 hozzászólására (») Máj 22, 2011 /
 
RX-TX összekötését már próbáltam, de a helyzet változatlan. A vezetősávok szakadását ellenőriztem még beültetés előtt, illetve beültetés után a zárlatokat, de nem találtam hibát.

A kivitelezés kritikáját nem vitatom - gyorsan lett volna szükségem rá...ha működne.

Egyébként egy ATmega128-hoz készült.

Igazából azért tettem fel az sch-t és brd-t is, hogy esetleg valami olyan hibát vétettem, ami ezt okozza. De ha elvben jó, akkor a panel a ludas.

Köszi, hogy rápillantottál!
(#) kiborg válasza Knaliret hozzászólására (») Máj 22, 2011 /
 
Szia!

Átfutottam a panelodat. Kapcsold ki az össze réteget (kivéve az unroutedet) és rájössz, hogy van 1-2 vezeték, ami nem került megrajzolásra. (Legalábbis abban a tervben, amit ide feltettél).(ez egy GND vonal az FT ic környékén)
Ez okozhatja a problémádat ?

Üdv Kiborg
(#) mario1111 hozzászólása Máj 24, 2011 /
 
Üdv!

Szeretném kikérni az okosabbak tanácsát! Építettem a motoromba egy "fedélzeti számítógépet" ami egy 12 V-os savas akkuról működik. A megtett napi utat és a megtett összes utat ki kell menteni az eeprom-ba, de csak akkor, amikor lekapcsolom. Én megoldottam ezt egy külső interrupt generáló cuccal, ami ad egy megszakítást, ha a fesz hirtelen megzuhan. Azt szeretném megkérdezni, hogy van-e erre valami korrektebb megoldás, amit pl alapból tud az uC. Egy atmega128-as van benne.

Márió
(#) kovacsj hozzászólása Máj 24, 2011 /
 
Sziasztok!

Azt szeretném megkérdezni, hogy GSM-modul használata esetén az SMS végére C-ben hogyan illesszem a CTRL-Z karaktert?
Ahogy kimegyaz utolsó karakter, küldjek utána egy '\x1A'-t és kész?

Köszönöm előre is!
(#) trudnai válasza kovacsj hozzászólására (») Máj 24, 2011 /
 
Pontyosan!
(#) kovacsj válasza trudnai hozzászólására (») Máj 24, 2011 /
 
Köszönöm szépen!

Tehát akkor ez úgy lesz, hogy ciklusban karakterenként kiteszem az UART-ra az SMS-szövegét, majd amikor kiment az utolsó is, a ciklus után a függvényen belül még egy utasítással kiküldöm az említett karaktert.
(#) tursaba válasza mario1111 hozzászólására (») Máj 25, 2011 /
 
Üdv Márió .

Korrekt a megoldásod. Az 5 V stabilizátora elé tegyél egy soros diódát és a uC tápelkója tartalékolni tudjon elég energiát az eeprom írás idejére.
(#) bzolitb hozzászólása Máj 28, 2011 /
 
Sziasztok!

Olyan kérdésem lenne, hogy az AVR reset lába milyen célt szolgál? Resetet akkor használunk, ha a futó program olyan ágba fut, ami végtelen ciklus? Na meg az ISP és JTAG felprogramozás után küld reset jelet. Ha a tápot leveszem az uC-ről, akkor az egyenértékű egy reset pinre adott megfelelő impulzussal? A programozó interface lábakat lehet e anélkül i/o lábnak használni, hogy letiltanám az interfaceket?

Köszönöm
(#) Reggie válasza bzolitb hozzászólására (») Máj 28, 2011 /
 
A reset arra szolgal, hogy bekapcsolaskor megfeleloen induljon el vagy felhasznalo igenye szerint ujraindithato legyen(mint pl a szamitogep), illetve ezen kivul meg az SPI es JTAG programozasnal szukseg van ra.

Ha a tapot leveszed az IC-rol es visszaadod, egy kicsit mas folyamat jatszodik le, hiszen a kvarcot is be kell rezgetni stb, de hasonlithato a RESET-hez, csak lassabban zajlik le.

Az SPI programozo labakat tudod barmire hasznalni, a programozassal kapcsolatos funkciokat csak akkor latjak el, hogyha a RESET lab a foldre van huzva. A JTAG eseteben mar kicsit bonyolultabb a helyzet. Ebben az esetben nem tudod hasznalni az i/o labakat, kivetel, ha menet kozben letiltod programbol a JTAG interfeszt. Ekkor viszont nem tudod programozni az IC-t amig nem reseteled, igy pl. ICD(mukodes kozbeni debuggolas)-re nem tudod hasznalni.
(#) sikolymester válasza Reggie hozzászólására (») Máj 28, 2011 /
 
Jtag programozásnál nem feltétlenül szükséges a reset láb használata. A Jtag protokoll tartalmaz olyan parancsot, ami egy external resetnek felel meg.
(#) Thomm hozzászólása Máj 28, 2011 /
 
Sziasztok
Tudom nem itt a helye de vészhelyzet van :S Szükségem lenne S.O.S. az tavir féle stk500 xp driverére, notin kéne dolgoznom bascom és stk500.exe adott, de mobilnet kiköhögte a tavir.hu-s 170 megás csomagra hogy mér csak 9 óra... valaki segítsen! csak a driver kéne...
(#) Axel hozzászólása Máj 28, 2011 /
 
Sziasztok!

Adott egy 8 bites szám (hex. vagy akár dec. formában). Ezt bitenként szeretném egy portlábra shitfelni, hogy egy shift regisztert töltsek fel vele. Kérdésem, hogy hogyan tudnám megoldani hogy a legalacsonyabb helyiértékkel kezdve a legnagyobbig egyenként kerüljenek a helyiértékek a lábra.
Elvben 8bites tömbbel és binárissá alakítással megoldható lenne de valami egyszerűbb, tisztán logikai műveletekkel megvalósítható megoldás érdekelne.

Köszönöm!
(#) samu003 hozzászólása Máj 28, 2011 /
 
Sziasztok!

Egy rövid példával el tudja valaki magyarázni, hogy tudok 20ms gyakorisággal programot indítani atiny45 processzoron? LED kijelző frissítését szeretném megoldani, de nem nagyon boldogulok.

Köszönöm!
(#) Axel válasza samu003 hozzászólására (») Máj 28, 2011 /
 
Olyasmire gondolsz hogy van pl. egy függvényed ami egy kijelző meghajtását végzi és a kijelzett értéket 20ms. gyakorisággal frissítse tehát maga a függvény 20 ms.-onként legyen meghívva?
(#) samu003 válasza Axel hozzászólására (») Máj 28, 2011 /
 
Igen!

Görcsölök az angol tudással meg a bitek állítgatásával de nem sikerül. Példát is csak külsö megszakításra találok. Belső orajeles megszakításra keresnék példát!
Üdv!
(#) IMi válasza samu003 hozzászólására (») Máj 28, 2011 / 2
 
Szia!
Kis segítség....
Bővebben: Link
(#) Axel válasza samu003 hozzászólására (») Máj 28, 2011 / 1
 
Itt volna egy kis programrészlet (igaz Attiny24-hez). A függvény nem csinál mást mint hogy elindítja a timert és egy segédváltozó értékét növeli amint a timer modul számláló regisztere megtelik. Elég régen írtam már ezt, meg lehetett volna elegánsabban, belső interrupttal is oldani. A beállított előosztás itt most 1024 tehát minden 1024-edeik órajelre inkrementálódik a számlálóregiszter értéke. A proci órajeléből ezek után könnyen kiszámolható, hogy 20ms elteltével mekkora értéket olvashatsz ki a timer számláló regiszterből(Timer Counter Register). A segédváltozóval neked nem kell szerintem vacakolnod csak azért van benne mert nekem hosszabb, több sec késleltetéshez kellett, minimális módosítást igényel a függvény.

  1. void start_timer(int *p_count){
  2.           TCCR0B|=(1<<CS12)|(0<<CS11)|(1<<CS10);
  3.           if(TCNT0==255){
  4.           (*p_count)++;
  5.           TCNT0=0;}}
(#) bzolitb válasza Reggie hozzászólására (») Máj 28, 2011 /
 
A bekapcsoláskor megfelelő időzítést a Fuse bitekkel betudom állítani, hogy a kvarc megfelelően induljon és a többi időkritikus egység is, ezért én sosem teszek soros RC-t a reset lábra. Nyomógombot szoktam, de feleslegesnek tartom azt is, ha a táp ki-be kapcsolás helyettesíti. Ezért szeretném a reset lábat i/o funkcióra használni. De ezek szerint a reset és power off-on közt a különbség, h a reset az uC nem minden részét áramtalanítja, csak a processzor részt. A programozó interfészeket pedig azért nem értem, mert a PIC-nél ilyen gond nincs, szó nélkül lehet bármit kötni azokra a lábakra is, de tapasztalatom szerint AVR-nél nem így van.
(#) Ricsi89 válasza bzolitb hozzászólására (») Máj 28, 2011 /
 
Ha ISP-n keresztül programozol, akkor lehet bármit kötni azokra a lábakra. Viszont a Jtag az lehetővé teszi a debuggolást is, így kicsit gáz lenne, ha debuggolás közben a programozó lábat másra is használnád. Akkor hogy kommunikálna a processzorod a programozóval? Ha ISP-n programozol, akkor pedig a reset lábat nem tilthatod le, mert akkor nem tudsz belépni programozói módba, mert nem tudod a resetet használni, ugyanis a reset folyamatos aktív állapotában lehet programozó módba lépni és programozni a kontrollert.
Következő: »»   326 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem