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   143 / 840
(#) zaik válasza zaik hozzászólására (») Aug 21, 2009 /
 
Elnézést a kacsacsőrözés miatt, de nem jelent meg a többi kódrészlet a << után.
(#) vzoole válasza zaik hozzászólására (») Aug 21, 2009 / 1
 

Mert nem így írtad: (code=C)kód(/code)
  1. ACSR|= (0<<ACD)

(#) zaik válasza vzoole hozzászólására (») Aug 21, 2009 /
 
Köszönöm, nem volt triviális.
(#) Sir-Nyeteg válasza zaik hozzászólására (») Aug 21, 2009 /
 
Mindig működött így is a 0-ba írás, de kipróbáltam, ahogy ajánlottad, sajna semmi változás
(#) janyjozsef válasza Sir-Nyeteg hozzászólására (») Aug 21, 2009 /
 
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)
(#) Sir-Nyeteg válasza janyjozsef hozzászólására (») Aug 21, 2009 /
 
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.)
(#) Sir-Nyeteg válasza janyjozsef hozzászólására (») Aug 21, 2009 /
 
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
(#) janyjozsef válasza Sir-Nyeteg hozzászólására (») Aug 22, 2009 /
 
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.
(#) Sir-Nyeteg válasza janyjozsef hozzászólására (») Aug 22, 2009 /
 
Ő 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.

chopper.JPG
    
(#) janyjozsef válasza Sir-Nyeteg hozzászólására (») Aug 22, 2009 /
 
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.
(#) Sir-Nyeteg válasza janyjozsef hozzászólására (») Aug 22, 2009 /
 
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.
(#) inci88 hozzászólása Aug 22, 2009 /
 
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?
(#) Sir-Nyeteg hozzászólása Aug 22, 2009 /
 
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!
(#) kocsma hozzászólása Aug 22, 2009 /
 
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
(#) MaSTeRFoXX válasza inci88 hozzászólására (») Aug 22, 2009 /
 
Egy kis magyar tudnivaló az elv miatt, de ez basicben van Bővebben: Link

Avrgcc usart tutorial
Bővebben: Link

Avrfreaks:
Bővebben: Link
(#) mammut hozzászólása Aug 22, 2009 /
 
: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ő?
(#) kocsma válasza mammut hozzászólására (») Aug 22, 2009 /
 
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.
(#) janyjozsef válasza mammut hozzászólására (») Aug 22, 2009 /
 
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.
(#) janyjozsef válasza inci88 hozzászólására (») Aug 22, 2009 /
 

A használatuk
  1. #define FOSC 7372800                                            // Clock Speed
  2. #define BAUD 2400                                                       // Baudrate
  3. #define USART_BAUDRATE FOSC/16/BAUD-1           // Calc value
  4.  
  5.  
  6. typedef struct Str_Device_Command       // Egy készülék parancsai
  7. {
  8.         BYTE m_DeviceID;                                // Készülék azonosító
  9.         BYTE m_Command;                                 // Beállít vagy lekérdez
  10.         char m_Param[3];                                // Beállítandó vagy lekérdezendő paraméter
  11.         BYTE m_ParamValue;                              // Ezt az értéket kapja SET esetén az adott paraméter
  12. }Device_Command;
  13.  
  14.  
  15.  
  16.  
  17. Init_UATRT(USART_BAUDRATE);
  18.  
  19.  
  20.  
  21. if(UART_Msg_Service(&m_Device_Command))                                                                         // soros porton üzenet érkezett
  22.                 {
  23.                         if(m_Device_Command.m_Command == TRUE)                                                                  // SET
  24.                         {
  25.                                 if(strcmp(m_Device_Command.m_Param, "VO") == FALSE)                                     // Volume
  26.                                 { Amit csinálni akarsz...



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.
(#) mammut válasza janyjozsef hozzászólására (») Aug 22, 2009 /
 
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ó.
(#) janyjozsef válasza mammut hozzászólására (») Aug 22, 2009 /
 
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.
(#) inci88 válasza MaSTeRFoXX hozzászólására (») Aug 22, 2009 /
 
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. )
(#) janyjozsef válasza mammut hozzászólására (») Aug 22, 2009 /
 
Ja amit lefelejtettem.
a maradék 2 file.
(#) mammut válasza janyjozsef hozzászólására (») Aug 22, 2009 /
 
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!
(#) Barbár válasza Topi hozzászólására (») Aug 23, 2009 /
 
Tudnátok segíteni h Win7-hez drivert honnan lehet leszedni?

Előre is köszi!

Barbár
(#) janyjozsef hozzászólása Aug 23, 2009 /
 
Valaki esetleg tudna tippet adni, hogy honnal
lehetne AVR-eket beszerezni olcsón?
S.S-től szoktam általában.
Egyéb?

Köszi.
(#) mammut válasza janyjozsef hozzászólására (») Aug 23, 2009 /
 
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...
(#) mammut válasza janyjozsef hozzászólására (») Aug 23, 2009 /
 
Érdekes, drágább a soros EEPROM, mint a mikrovezérlő! :eek2:
(#) Barbár válasza mammut hozzászólására (») Aug 23, 2009 /
 
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.
(#) mammut válasza Barbár hozzászólására (») Aug 23, 2009 /
 
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!
Következő: »»   143 / 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