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
Elnézést a kacsacsőrözés miatt, de nem jelent meg a többi kódrészlet a << után.
Mert nem így írtad: (code=C)kód(/code)
Mindig működött így is a 0-ba írás, de kipróbáltam, ahogy ajánlottad, sajna semmi változás
Szia!
Szerintem az a baj, hogy a fő ciklus azonnal visszakapcsolja a tápot. A komparátornak kellene ki és be is kapcsolni a tápot. Az atmellel meg a kapcs frekit és a max kitöltési tényezőt kellene beállítani. Én PWM lábra tenném a FET-et és a komparátor kikapcsolná (vagy modulálná a kitöltési tényezőt) és visszakapcsolná. De egy 50HUF-os analóg PWM IC is képes erre. komparátor és áramkorlát is van benne. UC38XX (ha jól emlékszem)
Próbáltam úgy is, hogy a főciklusban várok egy jókora időt. Azaz késleltetést rakok be a bekapcsolás elé.
A bekapcsolás ciklikus lenne azaz "bizonyos frekvenciával" kapcsolgatna be. Ezzel már létre is hoztam lényegében a PWM-et.(Szerintem.) Azért nem használok célIC-t, mert lesz még pár funkció a programban. Illetve jó lenne állíthatóvá tenni a frekvenciát. (Analógban ennek a megvalósítása: egy komparátor melynek a kimenete egy rs ároló resetjére megy, és a set bemenetre kapcsolnak egy oszcillátort, ez ciklikusan kapcsolgatja be az RS tároló kimenetén levő fetet. Jelenleg az RS tároló maga a kimenet kezelése, a megszakítással.)
Arra már rájöttem, hogy nem kapcsol le a megszakítás által a kimenet. Áttettem a kimenet bekapcsolását a főprogram elé, így nem ismétlődik, csak egyszer fut le.
Valószínüleg az initializálásban van a hiba. Eddig kb 30-szor néztem át a katalógus alapján a bitek beállítását Folytatás holnap
Meg lehetne nézni a kapcsolási rajzot?
És akkor összevetve a kóddal, könnyebben meg lehetne találni, mi okozza a problémát.
Ő lenne az eredeti megvalósítás, azóta teszt jelleggel kicsit módosult!
R3: mérő ellenállás, ezen figyeljük a feszültséget, ami arányos az árammal, ami a feten és pl egy motoron, vagy teljesítményleden folyik. R1: referenciafeszültséget állítok elő vele Azóta: R3 helyett egy ledet használok Fetet elhagytam, kimenetre ellenállással raktam a ledet Szerintem nem jön létre a megszakításkérelem a komparátortól.
Nos!
Első látásra. R2 nyugodtan elhagyható. R3 (LED azonban nem jó helyen van! A FET Drai lábára kell kötni és a Source lábat mindig GND-re. Különben a FET nem teljesen lesz jól vezérelve. Ha az áramot akarod mérni, akkor se legyen nagyobb mint 1 OHM. Vagy, ha nagyobbat szeretnél, használj meghajtó tranyót a FET-hez. A potin le tudod húzni a feszt nullára és a max táp is beállítható rajta? Inicializálásnál: Az ACR |= helyett ACR =. és a többi helyen is. Initnél egyenlővé teszed, így biztosítva, hogy az indulási érték ne okozzon problémát. Ja! Szerintem lefutó élet állíts be. Mivel a + a reef és ha a negatívon nagyobb a fesz a komp kimenete negatívba megy. (szolj rám, ha tévednék) Azonkívül a main-be ne azonnal állítsd vissza a lábon a feszt, mer így nem marad idő, hogy a fesz lecsökkenjen. Adjál neki egy kis időt PL 1ms. Nézzél utánna a PWM vezérlésnek. Így ugyanis az történik, hogy IT bejön => Láb 0-ba => IT vége => Láb azonal 1-be => kövi IT-ig "sok" idő tellik el így látszólag a láb folyamatos 1-ben van. Nem is lesz több IT-d mert nem lesz élváltozás, mivel nem csökkent le a fesz a kimeneten. Szerintem ezeket nézd meg. Ha tévednék, akkor javítsatok ki.
Köszönöm segítségedet!
R2 a nagy frekvencia miatt kell elvileg. Na most az R3 értéke 0,1ohm-1 ohm között lesz. A lényeg az lenne, hogy egyből a földön legyen, így közvetlenül mérhető rajta a feszültség. Az alkalmazott fet logikai vezérlésre alkalmas, így 5V-nál már bőven nyit. (Szerintem 4V-nál is elegendő). De jelenleg a fetet elhagytam, csakis Led van rajta. (kipróbáltam hogy párhuzamosan kötök a leddel egy kondit, de így sincs változás.) Poti kimenő feszültsége teljes mértékben állítható Vcc és GND között. Inicializálást javítottam, lefutó él: igazad van, valahogy összecseréltem De így sem megy. Kipróbáltam, hogy egy kis késleltetést berakok pár helyre. Ez volt nop, 1ms, 1sec is, a következő helyeken: megszakításban a lekapcsolás végén, főprogramban bekapcsolás előtt... Ill. mindkettő. Ami miatt aggódok, hogy még másodperces késleltetés esetén sincs villogás. Szerintem nem működik a komparátor, vagy nem érzékel, vagy nincs jól inicializálva Valami a szoftverben lesz elszúrva. Ebéd után kipróbálom külső komparátorral, sima megszakítást használva.
Sziasztok!
Szeretnék kommunikálni egy attiny2313-al rs 232-n keresztül. Saját programmal pc felől. de sajnos vagy nem megfelelően keresgéltem, vagy hanyag módon. Valami leírás kellene, hogy hogyan kell felépíteni a programot. (pc és avr oldalról). Mindezt C-ben. (gépfelől ha lehet ANSI C-t használnék, linux rendszeren.) Az eszközöm portjain pedig ledek csücsülnének, amiket a gépről szeretnék ki, illetve be kapcsolni. Tudtok segíteni?
Megkértek programozásra. Külső kvarcos program
Ha beleírom az AVR-be a programot, akkor ugyebár az "benne is lesz". De a külső kvarcot külön lehet állítani a fuse biteknél. Ha átírom, akkor kizárom magam az AVR-ből. Ha utoljára állítom át, hogy külső kvarc, akkor már kész is a tökéletes AVR, vagy kell a kvarc is hogy jól fel legyen programozva? Köszi!
Sziasztok!
Rengeteg fórumolvasgatás, és kísérletezés után még mindig nem tudom megoldani a problémám. Attiny13-at programoztam, amire filctollal ráírtam részben hibás, de már nem emlékszem miért. A programot ráírtam, és futott, de lassítani akartam, így levettem a belső órajelet a minimumra, és 8al osztottam. Na azóta nem látja az AVRStudio. Az összes ISP sebességgel próbáltam de semmi. Mi lehet a gond? Érdemes high voltage programozót építeni, habár nem a reset láb miatt van a gond? Még a program messze nem működőképes, jó lenne az utolsó 13as procit visszahozni
Egy kis magyar tudnivaló az elv miatt, de ez basicben van Bővebben: Link
Avrgcc usart tutorial Bővebben: Link Avrfreaks: Bővebben: Link
:wave: Valaki fel tudna világosítani konkrétan hogyan működik és mire jó az AVR belső SRAM-ja? És ha kicsi a kapacitása, mivel helyettesíthető, vagy esetleg bővíthető?
Szia. Az sram-ot főleg veremtárolónak használjuk, és az eeprom, illetve a programmemória is használható, de korlátozásokkal, vagy külső memóriával bővíthető. Amúgy nem okoskodás képpen, de nem ártana, valami átfogó avr oktatóanyaggal megbirkóznod, mivel a használata az egész alapokat átfogja.
Az SRAM-ot főkén futásidejű változók tárolására használjuk. PL: int a; a = 1; a++;
Itt van még a Stack, esetleg a HEAP. Külső memóriát is lehet illeszteni, azonban ekkor vagy te írod meg a kezelését, vagy választasz olyan kontrollert ami alapból tudja kezelni PL ATMEGA 128. Azonban a mikrovezérlők belső felépítésének alapja. Ha ezzel nem vagy tisztában, akkor olvasgass és csak utána írj programot. Olvad el a választott vezérlő adatlapját is.
A használatuk
Az Msgservice elhagyható és a benne lévő részt használhatod. Nekem valamikor így kellett. Amit itt látsz csak egy példa, de az UART.C és h azok jók. És 2313-on ment Remélem, ki tudod hámozni. Vagy megtalálod ami kell neked.
Köszi!
Ezaz, hogy a led mátrix vezérlése miatt kell ezekkel foglalkoznom, a c-ben megírt program pedig bufferekből dolgozik, ehhez pedig nagy méretű kijelzőnél (8x8(64/128)) már 1024byte buffer vagyis 2kbyte SRAM szükséges állítólag! A forráskódot majd egy megfelelő AVR-re kell lefordítanom, egy kis átalakítás után. A forráskód ITT található.
Na számoljunk. 8x8 LED = 64 bit = 8BYTE
Az 1024 byte buffer az nem 2k hanem 1k Én már csináltam és 128byte is elég bolt a 8x8 mátrixhoz. Igen sok és szép szöveget ki lehetett írni. Tárhely akkor kell, ha sok mindent akarsz kiírni, de azt érdemes külső eeprom-ba tenni. És csak a szükségesz szövegrészt betenni a SRAM-ba és azt kitenni a kijelzőre. Így LED-enként 1bit-el megúszod. A kód jó más kontrollerhez is, csak a regiszterek nevét kell megnézni és a bit-jeit. Ha azok helyesek, akkor menni fog. A kódot nem néztem meg. Kezdek álmos lenni.
Köszönöm a választ.
Elegendő választ kaptam a kérdésemre. (most már tudom, hogy uart, usart ként kellett volna keresnem, nem csak a szabvány megnevezésével. )
Ja amit lefelejtettem.
a maradék 2 file.
OK köszi! Mondjuk az én mátrixaimnál komolyabb a dolog, mert bicolor(zöld, piros(narancs)) mátrixaim vannak, amik így 8x16 képpontosak.
Na még utánaszámolok. Jajj, azok inci88 fájlai!
Tudnátok segíteni h Win7-hez drivert honnan lehet leszedni?
Előre is köszi! Barbár
Valaki esetleg tudna tippet adni, hogy honnal
lehetne AVR-eket beszerezni olcsón? S.S-től szoktam általában. Egyéb? Köszi.
Nézd meg ezeket!
A dollárt 189Ft-ba váltották legutóbbi rendelésemkor. A postaköltséget ki lehet kalkulálni az oldalon! Hónap elején rendeltem innen egy csomag cuccot (Ledeket, mátrixokat...), a ledek erősfényűek, viszont az áruk sokkal jobb az ithoniéknál! Szerintem az AVR-ek is jobb árban vannak...
Érdekes, drágább a soros EEPROM, mint a mikrovezérlő! :eek2:
Az első dolog amire rákeresteM ATtiny 45-ös kellene (nekem special éppen most), én ez az eredmény bárhogy vaiálom a keresést...
Én szerintem maradok a HEstore -nál.
Hát igen nagyon szegényes kb 4-5 féle van, és már a microchip vezérlők sincsenek, pedig 1 hete még volt nekik.
Érdekes, hogy az Atmel.com-on sincs semmi érdemi dolog, hogy lehetne-e rendelni vagy valami, csak vakítanak, meg vetítenek az új dolgokról, velünk meg az amatőr kisebbséggel nem is foglalkoznak, hogy hozzájuthassunk egy-két eszközükhöz! |
Bejelentkezés
Hirdetés |