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 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...
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.
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?
Gondolom USB-ről kapja a tápot, nézd meg hogy a táp nem-e szakadt.
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!
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.
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?
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!
Í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.
Aha! Így már világos!
Neked is köszönöm szépen!
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!
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
Ü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ó
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!
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.
Ü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.
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
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.
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.
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...
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!
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!
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?
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!
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.
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.
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.
|
Bejelentkezés
Hirdetés |