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   448 / 840
(#) zombee válasza Fery hozzászólására (») Jún 3, 2012 /
 
CLK: órajel kimenet, nem minden változaton működik.
RXD/TXD: soros port kimenetek, de nem egyszerű a használata(értsd: szinte lehetetlen)
HID mód: nem emulál COM portot hanem "natív" driverre kapcsol át. Windows alá nem kell driver
(be van építve),cserébe nem létezik windows-os progi ami ténylegesen kezelni tudná HID módban.

A saját Doper változatomból ezeket száműztem, mert használhatatlanok, és tőlük nem lenne szabványos
a kimenet! Talán a CLK még jól jönne, de azt nem sikerült életre keltenem ezért maradt ki...
(#) dB_Thunder válasza zombee hozzászólására (») Jún 3, 2012 /
 
Nálam működik a CLK kimenet, hoztam már vele vissza AVR-t az élők sorába. AvrStudióba a programozáskor felugró kis ablakocskának vannak fülei, és valamelyiknél van olyan lehetőség ahol meg lehet adni a CLK frekijét is.
A soros, pontosabban UART kimenetet, még nekem sem sikerült használnom, Paradox riasztóközpontot próbáltam programozni, A programozó szoftver (BabyWare) elfogadta, de mégsem sikerült kommunikálni a központtal, mintha visszafele (RX) nem jött át adat...
(#) Fery válasza zombee hozzászólására (») Jún 3, 2012 /
 
Köszönöm srácok.
Mivel PIC-re már csináltam egy, sőt nem is egy fejlesztő panelt, most nekiálltam AVR-el foglakozni, arra tervezem a fejlesztőpanelt éppen, gyakorlatilag a PIC fejlesztő mintájára, csak ezt a részét nem értettem az égetőnek...Mondjuk egy rádugható hüvelysorra kivezettem azért ezeket is, de a leírtak szerint akkor nem nagyon lesz rá szükségem...

Fery
(#) Sanyi87 hozzászólása Jún 3, 2012 /
 
Hali
Valaki ismeri ezt? Bővebben: Link Esetleg van erről tapasztalata?
Próbálkoztam sokat, de valami elkerülheti a figyelmem...
Nekem nem működik a bootloader. ATmega324P-re szeretnék bootloader-t tenni.

köszönöm
(#) kakas92 hozzászólása Jún 3, 2012 /
 
Hello!
Az lenne a kérdésem hogy lehet e valahogy hálózati izzókat vezérelni atmega mikrovezérlővel?
(#) Fery válasza kakas92 hozzászólására (») Jún 3, 2012 /
 
Természetesen. Érdemes a Triakot, vagy esetleg tirisztort leválasztani egy optocsatolóval...

De akár relével is, SSR-el is...Sok féle megoldás van...
(#) mzozo95 hozzászólása Jún 3, 2012 /
 
Sziasztok!

A következő állományok (main.c és manchester.c)átfordításával küszködöm: Bővebben: Link

A manchester.c állományban van egy
  1. putc(i1,radio);

Függvény, amit nem találtam meg sehol... Ez a függvény, ha jól sejtem a uvezérlő adott lábára pakolja ki az adott Manchester kódolást, időben eltolva...
Hogyan épülhet fel ez a függvény?

Emellett van egy
  1. getc(radio);

függvény is, ami a beérkező manchestert fordítja át... erről fogalmam sincs hogyan csinálja...

Tudna valaki segíteni?

Vagy esetleg tud valaki egy kész atmega8 uart->manchester kódolást?

Segítségeteket előre is köszönöm!
Zoltán
(#) Reggie válasza mzozo95 hozzászólására (») Jún 4, 2012 /
 
(#) kakas92 válasza Fery hozzászólására (») Jún 4, 2012 /
 
Köszi! annyi kérdésem lenne még, hogy az atmega kimenetére mit kötök ilyen esetbe?? hogy vezérelni tudja a lámpát.
(#) Fery válasza kakas92 hozzászólására (») Jún 4, 2012 /
 
Vagy egy tranzisztort a bázisán egy ellenállással, és azzal kapcsolgatod a relét, vagy az optocsatolót egy előtét ellenállással, az optó után lehet triak, vagy tirisztor.
Vagy egy SSR-t akár közvetlenül, mert az le van választva...többféle megoldással lehet hálózati fogyasztót vezérelni....
Fery
Jaaa, és ez PIC-re ugyanúgy érvényes, mindegy milyen típus a proci...
(#) pluto válasza kakas92 hozzászólására (») Jún 4, 2012 /
 
Szia!

Ez itt egy kapcsolás részlet. 100%-an működik már időtlen idők óta. Null átmenetes optocsatoló és egy triak. A terhelés (220V) az LSP3 és LSP4 csatlakozókon van. Az ATmega kimeneti lába az X3-4-re csatlakozik. Az előtét ellenállás 15mA-t enged az optocsatolóra. Ennyi kell neki az adatlap szerint. A trafón ne csodálkozz, hogy két szekunderes. Ez volt itthon. Ugyan úgy a D1 és a C5. A C5 egy fólia kondi. A triakra ugyan tettem egy kis hűtő zászlót - jobb a béke alapon -, de nem kell. Egyáltalán nem melegszik. Ca. 230W-t kapcsol.

Remélem tudtam segíteni. Üdvluto.

Triak.PNG
    
(#) kala1982a hozzászólása Jún 5, 2012 /
 
Atmega8 C portjára ha kiírok egy byte-ot, (PC6 - resetláb), de nem akarom használni az összes lábát a C portnak, ez okoz valamilyen gondot? Vagy amíg a fuse biteknél a reset láb engedélyezve van addig hiába írok rá akármit nem fog reagálni rá? Egyszerűbben: nekem csak PC0-tól PC4-ig kellene, de portként nem lábanként, lehet így egyből ráírni, vagy maszkolni kell?

Az AVR akkor hajtja végre az utasításokat amikor az órajel magas fázisban van?
(#) sikolymester válasza kala1982a hozzászólására (») Jún 5, 2012 /
 
Ha a többi nincsen használatban, akkor nagy gond nem lesz. Reset láb csak akkor működik, hogyha a fuse bitet átállítod, ahogy mondtad.

Miért érdekel, hogy mikor hajtódik végre az utasítás?
(#) kala1982a válasza sikolymester hozzászólására (») Jún 5, 2012 /
 
Ha felfutó él után hajtódnak végre az utasítások akkor kihagyhatom a szinkronizálást. SID chip akkor hajlandó adatot fogadni csak. De gondolom ezzel így vannak a régebbi epromok, meg EEpromok is. Róbert másik fórumon írta nekem, hogy belső órajelet használjak, 1Mhz-en (8 div 8), annyi kell a csipnek is, ráadásul az atmega8 6-os lába (XCK, ClkOut engedélyezés) mehet rá órajelnek.
(#) mzozo95 hozzászólása Jún 5, 2012 /
 
*

Törölve! Ez nem apróhirdetés! (Topi)
(#) kala1982a hozzászólása Jún 6, 2012 /
 
Atmega8-nál nem találom a CLKOut lábat, lehet hogy nincs neki? 2313-asról kap órajelet egyenlőre az atmega is meg a SID is.(nem sikerült szóra bírnom, párhuzamosan rákötve nem is egészséges szerintem...) Melyik fuse bitet kell az atmegánál állítani, hogy az XTAL2-es lábról tovább tudjam vinni az órajelet?
(#) Reggie válasza kala1982a hozzászólására (») Jún 6, 2012 /
 
Nem is fogod, mert nincsen. Ha sima kvarcrol akarod jaratni, akkor az XTAL2 labrol tudod tovabbvezetni az orajelet, amennyiben CKOPT programozott allapotba allitod. Egyebb esetben nincs ra lehetoseg.
(#) kala1982a válasza Reggie hozzászólására (») Jún 6, 2012 /
 
Ha külső kvarcról fog menni az atmega, div8-as fuse bit külső forrásnál is él, nem csak belsőnél ugye?
(#) Reggie válasza kala1982a hozzászólására (») Jún 6, 2012 /
 
Nincs ilyen fuse bitje. Biztos, hogy atmega8-at hasznalsz?
(#) kala1982a válasza Reggie hozzászólására (») Jún 6, 2012 /
 
Nem is néztem még, azt hittem, hogy ez minden avr-nél így van, CLKout az nincs mindegyiknél az ok, ckdiv8-at meg nem is néztem.

Pedig jó lenne, mert 8Mhz-es kvarcom van otthon, meg ugye 1mhz kellene.

Hazaérek megnézem
(#) tecsa hozzászólása Jún 6, 2012 /
 
Sziasztok!

Egy kis segítséget szeretnék kérni.

Egy fűtés vezérlést szeretnék megcsinálni, ahol a plafonba épített fűtő filmeket szeretnék szeretnék vezérelni. Olyan programra lenne szükségem, ami megadott időre pl.: 30 percre bekapcsolja a kimeneteit, egy előre megadott algoritmus alapján. Összesen max. 8 kimenetet kéne vezérelni, úgy hogy egyszerre max. 2 vagy 3 lenne aktív, ez a fűtőfilmek nagyságától függ, ezeket előre beállítanám, hogy egyszerre a fűtés ne vegyen fel túl nagy áramot.

Szóval az lenne kérdés, hogyan lehetne fél órát pontosan, mérni? Mi lenne erre a legjobb módszer?

Előre is köszönöm a segítséget!!

Üdv: Tecsa
(#) zombee válasza tecsa hozzászólására (») Jún 7, 2012 /
 
1: vegyél valami elég pontos kristályt(6 ppm-es már jó lesz), esetleg frekimérővel még hegeszthetsz rajta
2: vegyél külső RTC-s IC-t, az majd mérni fogja neked az órát
(#) JoEy28 hozzászólása Jún 7, 2012 /
 
Sziasztok!

USB-n keresztül szeretnék felprogramozni egy Atmega128-at windows alatt, de a következő hibával nem hajtja végre:

Idézet:
„C:\...>avrdude -p atmega128 -P avrdoper -c stk500v2 -U flash:w:main.hex:i

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e9702
avrdude: avrdoper_send(): I/O Error.


Az a furcsa számomra, hogy Linux alatt szó nélkül megcsinálja. Valakinek van ötlete mi lehet a probléma?
(#) vanzerr hozzászólása Jún 7, 2012 /
 
Sziasztok!

Segítségre lenne szükségem. Kizártam magam egy Attiny2313-20PU mikrokontrollerből. Érdeklődnék, hogy a Topi féle AVR Dopper, USB-s ISP programozóval, valamit ezzel a segédórajel kiegészítő áramkörrel tudok e életet lehelni bele és ha igen mit hova kössek és hogyan állítsam be az ide legalkalmasabb (erre is ha lehet kérnék egy tippet) szoftvert.

AVR-ben nagyon kezdő vagyok, olvastam már sokat utána, de ez nekem sajnos egy kicsit magas.

Előre is köszönöm a segítséget.
(#) qvasz2 válasza vanzerr hozzászólására (») Jún 7, 2012 /
 
Ő a te embered:Bővebben: Link
(#) Massawa válasza tecsa hozzászólására (») Jún 7, 2012 /
 
Én is amondo vagyok, hogy a legolcsobban egy mezei elektronikus kapcsoloorával kellene kezdened. Abban minden van amire igényed van, csak a kimeneti jeleket kell megfelelöen elosztani (mert csak 1 kimenete van- de akár 32 programot is tudnak).
(#) sikolymester válasza zombee hozzászólására (») Jún 7, 2012 /
 
Szerintem a 6ppm az ágyúval vérebre esete. Nem hinném, hogy ilyen pontosan kellene neki az idő.

Szerintem a kérdés az volt, hogy miként lehet időt mérni AVR-rel. Erre a válasz a Timer használata. Szerintem lehet tutorialokat találni rá.
(#) tecsa válasza sikolymester hozzászólására (») Jún 7, 2012 /
 
Teljesen igaz!

Az a lényeg tudjak megmérni 30 percet. Hogy az 28 vagy 32, nem annyira fontos. (tudom korábban oda írtam pontosan, most már magam sem tudom miért) És be tudjak állítani utána egy mondjuk 5 órát amikor nem kell fűtenie. És persze ezeket az időket variálni.

Szóval végülis timerrel valami időzítőt készíteni, és az alapján kimérni a fél órát?

Köszi: Tecsa
(#) sikolymester válasza tecsa hozzászólására (») Jún 8, 2012 / 1
 
A következő módon szokás csinálni:

Kiszámolod, hogy a használt órajeledet hogyan kell leosztanod, hogy 1mp-et tudjál kapni. Tehát az órajeled f Hz, ebből szeretnél 1Hz-et csinálni. A számlálóknak van egy előosztójuk d [-], ami f/d Hz-et csinálni az órajeledből. Ezután megnézed, hogy meddig kell így elszámolni a számlálónak, hogy az ~1 mp legyen, arra beállítasz egy interruptot és abban az interruptban mindig növeled a globális változó mp értékét.

Gyakorlatban 1MHz-es órajellel így néz ki:
Leosztod 1024-gyel, ami 976 Hz-et ad, ez ugye 1/976 [s] -ként lépteti a számlálót, tehát ebből 976-ig kell elszámolni, hogy 1 [s] legyen. Tehát fogod a 16bites timered (lévén a 8 bites timer eddig nem számol el) és úgy konfigolod, hogy 976-nál adjon egy interruptot. Az interruptban ne felejtsd el nullázni a számlálót, mert az menne tovább a 16 bites timerban 2^16 ig.

Az eltelt másodperceket meg úgy manipulálod, ahogyan akarod.
(#) tecsa válasza sikolymester hozzászólására (») Jún 8, 2012 /
 
Köszönöm a segítséget.

Magam a következőt ötlöttem ki:
1 Mhz-re definiálom az órajelet.
  1. TCCR1b |= (1<<CS10); //nem állítok be előosztást
  2.  
  3. if(TCNT1 > 10000) //1Mhz/10000 = 1/100s
  4. {
  5.     TCNT1 = 0;
  6.     x++;
  7.     If ( x>100) //Itt pedig minden századik után lép be az if-be
  8.     {
  9.      // itt már 1s-el tudok dolgozni
  10.     }
  11. }
Következő: »»   448 / 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