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   429 / 840
(#) Reggie válasza zombee hozzászólására (») Márc 24, 2012 /
 
Ezzel a kapcsolassal az a baj(szerintem), hogy vagy telitesbe viszi a tranzisztort, vagy kicsi lesz a kimeno jelszinted. Raadasul kell a bazissal antiparallel egy dioda, ami kisuti a kondenzatort. Ennek a diodanak a feleledesi ideje is egy frekvencia korlatot fog eredmenyezni.
(#) zombee válasza Reggie hozzászólására (») Márc 24, 2012 /
 
Akkor valami egyéb ötlet? A komparátorossal hogy lehet kivitelezni? Nem ártana ha olyan frekit is mérne,
amiben DC-komponens is van. Direkt ez miatt a diódát nem tartom jó ötletnek én sem.
(#) zolee1209 hozzászólása Márc 24, 2012 /
 
Egy egyszerű kérdésem lenne hozzátok, mert már nem hiszek az eddig megszerzett tudásomban!
  1. SBR r16,6

Ennek nem az r16-os regiszter 6-ik bitjét kellene 1-be állítania?! Szimulátorban és a hardveren sem akar működni, mert a hatodik bit beállítása helyett 6-ot tölt bele! Ha úgy tekintek rá, 64 helyett... Ha ezt én teszem meg az SBR utasítás helyett, akkor működik minden. Szerintetek? 4.19-es AVR stúdió van fent.
(#) zombee válasza zolee1209 hozzászólására (») Márc 24, 2012 /
 
SBR Rd,K Set Bit(s) in Register Rd <-- Rd v K

Szerintem az utolsó része mindent elárul. Kevered az SBI-vel.
Tényleg hülye megoldás mert pont ugyanaz mint az "ORI" és nem azt adja amit a neve mutat, de ez van.
Használd ezt: SBR r16,1<<6>>>
(#) Massawa válasza zolee1209 hozzászólására (») Márc 24, 2012 /
 
Szerintem ez 6-t ir a regiszterbe, azaz 0x0000 0110-t, tehát nem a 6. bitet állitja, hanem az elsöt mega a másodikat.
A hatodik bit =0x0100 0000 ez lenne.
(#) zolee1209 válasza Massawa hozzászólására (») Márc 24, 2012 /
 
Azért is értetlenkedem, mert mintha eddig ezt nem így csinálta volna... Vagy csak elég volt egymás után a 3 éjszakás műszak.

Meg mi értelme lenne, hogy 6-ot töltsön bele, arra ott van az LDI utasítás.
(#) dc001 válasza blackdog hozzászólására (») Márc 24, 2012 /
 
Potmétert egyszerűen csak rá kell kötni valamelyik ADCx lábra.
Programból:
- az ADMUX segítségével kiválasztod melyik porton van a potméter
- elindítod az AD mérést (ADSRA)
- eredménye 0-1023 közé fog esni (ADCL és ADCH)
- valamilyen időalappal (pl.: 1ms vagy 100ms) generáltatsz megszakítást valamelyik timer-el (pl.: TIMER1)
- a timer megszakításban egy globális változó értékét csökkented 1-el
- ha 0-ra ért, akkor akkor bekapcsolod a 3 relét.
- amikor aktív lesz valamelyik bemenet és másik még nem aktív, akkor az ADCL/ADCH (arányosított) értékét átmásolod a globális változóba -> ezzel elindul a időzítő

pl.: 10ms időalappal 1023 ADCL/ADCH érték mellett 10,23 mp múlva jár le az időzítő.

Alap esetben teljesen mindegy, hogy melyik be- vagy kimenetet hova kötöd. Oda érdemes kötni őket, ahol a panelen a legkényelmesebb.

Megkötés akkor lesz, ha valamelyik belső perifériát szeretnéd használni, ekkor lényeges, hogy csak az adott periféria által használt portok jöhetnek szóba, pl.:
- a potmétert ADCx lábra
- shift regisztert MOSI/SCK lábakra

Néhány megjegyzés a kapcsolásodhoz:
- Ha hardware-ből szeretnéd használni a shift regisztert, akkor azt a MOSI (1) - DB (14) és SCK (3) - SH_CP (11) kell kötni. Jelen bekötés estén csak szoftveresen tudod használni a 74HC595 IC-t.
- Az AREF-et nem kell VCC-re kötni, elég egy 100nF keresztül GND-re.
- A DIP kapcsolóknál megspórolhatod az összes ellenállást, ha a kapcsolókat VCC helyett GND-re kötöd. Minden porthoz a AVR-en belül van egy-egy felhúzó ellenállás, amit software-ből be lehet kapcsolni. Így használhatod azokat az R50, R43 vagy akár az R25..R32 helyett.

adc.png
    
(#) Massawa válasza zolee1209 hozzászólására (») Márc 25, 2012 /
 
Az SBR egy OR funkciot is takar, az LDI nem, legalábbis én igy értelmezem.
(#) TavIR-AVR válasza dc001 hozzászólására (») Márc 25, 2012 /
 
Az A végű chipek esetén a belső felhúzó-ellenállás értéke az eredeti 8...15k helyett ~100k lett! Azaz nem árt, ha van külső felhúzó-ellenállás.
(#) blackdog válasza dc001 hozzászólására (») Márc 25, 2012 /
 
Példaprogramot nem tudsz ajánlani ahol láthatom a poti és ADC működését?

A shift regisztert kénytelen leszek szoftveresen használni mert az általad írt lábak pont más irányba lesznek és nem tudom átforgtni.
(#) Fizikus válasza blackdog hozzászólására (») Márc 25, 2012 /
 
ADC rovid ismertetese:
ADC
ADC AVR-rel:
ADC AVR-rel
Egy egyszeru pelda az oldal aljan (a fotoellenallast csereld ki potira):
Pleda
(#) blackdog válasza Fizikus hozzászólására (») Márc 25, 2012 /
 

Azt hiszem ma rászánom a délutánom és estém. Elolvasom az összes írásod és jegyzetelek.
(#) gordonfreemN hozzászólása Márc 25, 2012 /
 
Sziasztok!
Pár napja kezdtem az ismerkedést az AVR-el, illetve úgy általában ezzel a világgal. (előismeret programozható dolgokról nagyon kevés)
Két kérdésem lenne.
Egyik, hogy a polling módszert mikor és a megszakítás kérelmes módszert mikor kell alkalmazni?
Elolvastam a hozzá kapcsolódó cikket, de ez lehet elkerülte a figyelmem. Jobbára azt értem, ha van bőven prociidő, akkor polling, ha kell a proci a folyamatra, akkor megszakítás. De konkrét gyakorlati példákkal tudnátok mondani eseteket.
A másik azon kérdésem lenne, hogy mit ajánlotok, mivel kezdjem az ismerkedést azon kívül, hogy töviről hegyire mindent elolvasok ezzel kapcsolatban? Például ilyenre gondolok, hogy kezdjem az "egyszerű soros kommunikáció AVR-el" cikk elolvasásával és ha megértettem, akkor a benne lévő példák megoldásával (amúgy most olvastam el éjszakás után, még egyszer nekifutok úgyis). Ha ez jó, akkor folyamatában az itteni cikkek és a bennük lakozó gyakorlati példák folyamatos megvalósításával elegendő egy alapnak?
Köszönöm előre is!
(#) mzozo95 válasza gordonfreemN hozzászólására (») Márc 25, 2012 /
 
Szia!

"alapnak" elegendő, de sztem ha saját projektbe kezdesz, és ha ott elakadsz és az itteni projektekből veszel ötletet a továbbhaladáshoz, az a legjobb. Saját projektek pl: vonalkövető autó(mint a robonaut versenyen), hexabot(6 lábú robot), hangkövető rendszer, autó, ami nem megy sosem falnak, vagy a wall-e saját tervekből... Vagy, ha van pár modellező ismerősöd, akkor építhetsz valami modellezésben hasznosat, amiből pénzt is kereshetsz...

Zoltán
(#) szdani hozzászólása Márc 25, 2012 /
 
Hali!
van egy atmega168-am összekötve egy 3310-es lcd-vel, és olyat szeretnék csinálni vele hogy sd kártyáról olvasson txt file-t. Ennek hol tudok utána járni hogy hogyan kell?
(#) sikolymester válasza szdani hozzászólására (») Márc 25, 2012 /
 
Ez kell neked:FatFs
(#) szdani válasza sikolymester hozzászólására (») Márc 25, 2012 /
 
Köszönöm, megpróbálom összehozni
(#) Fizikus válasza gordonfreemN hozzászólására (») Márc 26, 2012 / 1
 
A kezdetekhez nem kell sok minden. Egyetlen LED-del es a hozza szukseges 330-580 ohm-os aramkorlatozo ellenallassal is nagyon sok mindent ki lehet probalni.
Pl. az alap kimeneti I/O muveletek hasznalatat (LED villogtatas), vagy a PWM hasznalatat (fenyerosseg szabalyozas) gyakorolhatod.
Ha hozzateszel egy nyomogombot is, akkor pedig az alap bementi I/O muveletekkel ismerkedhetsz: polling, interrupt, prell kikuszoboles stb...
Egy LED + potenciometerrel pedig analog-digitalis konverzio (ADC) es PWM hasznalatat probalhatod ki.
8 db LED-del mar kulonbozo effekteket is keszithetsz pl. futofeny.

Ezen alapok utan kiprobalhatod a kulonbozo kommunikacios fajtakat:
Pl. egy shift regiszterrel es Led-ekkel az SPI-t.
Ha veszel egy 24 LC02 EEPROM-ot, LM 75 homero IC-t vagy egy MCP 23S17 I/O bovito-t, akkor pedig az I2C(TWI)-vel ismerkedhetsz.
Egy FTDI FT232RL vagy PL2303 vagy CP2102 USB-UART IC-vel pedig a soros kommunikacio(UART) probalhato ki.

Ha bontasz regi/rossz jatekokbol DC villanymotor-t, akkor egy L293D H-hid IC-vel a motorvezerlessel is ismerkedhetsz.
Egy nyomtatobol bontott leptetomotor es egy ULN2003 segitsegevel pedig a leptetomotorok vezerlesenek az alapjait tanulhatod meg.
Ha szerzel egy hobbi mikroszervot, akkor meg a szervovezerlessel ismerkedhetsz meg.

A fent felsorolt peldak kozul szinte mindegyikre van pelda itt a Hobbielektronikan az AVR-es cikkek kozott.

Szoval attol fugg, hogy milyen erzekeloket/alkatreszeket tudsz konnyen beszerezni. Es ezeket probald meg az AVR-rel hasznalni...
(#) blackdog válasza blackdog hozzászólására (») Márc 26, 2012 /
 
Sziasztok!

A korábban mellékelt kapcsolásban a következő kérdés merült fel bennem:
Jó az, ha csak 5VDC van a kapcsolásban és ekkor 5V tekercsű reléket használok vagy jobb, ha csinálok egy 12VDC -kört a reléknek és ebből stab. IC-vel veszem le a külön 5VDC-t az egyéb elemeknek?
(#) Massawa válasza blackdog hozzászólására (») Márc 26, 2012 /
 
Mindenképpen jobb ha a külsö fogyasztokat nem az 5 V-rol hajtod meg.
A uC-k kimeneteit amugy is jó egy kicsit védeni tranzisztorokkal vagy ULN-nel stb., amik lehetövé teszik majdnem bármilyen fogyaszto vezérlését.
Ráadásul pl. a 12V-s relék, motorok stb. olcsobbak is.
(#) blackdog hozzászólása Márc 26, 2012 /
 
RS232 -vel is lenne egy kérdésem.
Egyenlőre nem szándákozom használni csak szeretném előkészíteni a kapcsolást, hogy később, ha kell számítógéppel is hozzáférjek.
Itt ez a kapcsolás:
Bővebben: Link
Elegendő annyi ami ezen van? MAX232IC néhány kondi és a csatlakozó.

És, ha már ez a kapcsolás:
A RESET lábon milyen IC van és milyen célból?
(#) Reggie válasza blackdog hozzászólására (») Márc 26, 2012 /
 
a) Igen.

b) Az egy reset aramkor, aminek az a celja, hogy bizonyos tapfeszultseg alatt, reset jelet ad. Mamar erre nem nagyon van szukseg, tudja az AVR is ezt a funkciot.
(#) Reggie válasza zombee hozzászólására (») Márc 26, 2012 /
 
Szerintem az LMH7322 adatlapjanak 18. oldalan talalhato kapcsolast kene atszabnod. Az 50 Ohm helyett nagyobb impedanciat hasznalj, es a kondival sorosan egy ellenallast is kossel, hogy a 400V-os feszultseg le legyen oszva.
(#) TavIR-AVR válasza gordonfreemN hozzászólására (») Márc 26, 2012 /
 
Kezdőknek a következő javaslataim szoktak lenni:
- döntsd el, mihez kaphatsz a környezetedben (lehetőleg élőszóban) segítséget.
Innen két kérdés helyből megoldódik:
- AVR vagy PIC?
- Programnyelv?

A kísérleti sor:
- alapchip programozása (programozó + milyen chippel kezdjek)
- LED villogtató
- Futófény
- IO kezelés, prell, kapcsolók)
- Sorosport (vagy soros USB átalakítóval, vagy RS-232)
- LCD (karakteres)
- ADC kezelés
- INT kezelés
- itt jonnek a biztosítékbitek megismerései
- buszrendszerek:
- I2C (hőmérő, EEPROM, óra)
- 1Wire (hőmérő)
- SPI busz (DAC, hőmérő, majd komplex eszközök: nagy memória: 45DB/25DB chipek, SD kártya)
- Ethernet
- spec eszközök: GSM, GPS, RFID, XBee, RF hálózatok, stb

Mivel kezdjek? - cikksorozat
(#) Axel hozzászólása Márc 26, 2012 /
 
Sziasztok!

Az mennyire normális ha egy tqfp tokozású atmega8L melegszik? 8MHz-en járatom.
(#) zolee1209 válasza Axel hozzászólására (») Márc 26, 2012 /
 
Attól függ, mit csinál... Egy hőmérőben nekem is melegedett kicsit. Multiplex vezérlés, zöld kijelzők. Előtét nélkül hajtottam a kijelzőket, a kellő fényerő miatt...
(#) Axel válasza zolee1209 hozzászólására (») Márc 26, 2012 /
 
Itt csak kettő led van rákötve. Meg még UART-on kap parancsokat.
(#) kiborg hozzászólása Márc 27, 2012 /
 
Kicsit OFF, de azért megkérdem:
while (PIN&(1<<2)); mit csinál ? Egy Mega48 esetén?
Üdv Kiborg>>
(#) Topi válasza kiborg hozzászólására (») Márc 27, 2012 /
 
Idézet:
„mit csinál ?”


Hibát

Amúgy hiányzik hogy melyik PIN. De ha mondjuk PINB, akkor várakozik addig, amíg PB2 igaz... Ha logikai nulla lesz a lábon, akkor továbblép, ellenkező esetben megragad ott.
(#) kiborg válasza Topi hozzászólására (») Márc 27, 2012 /
 
Értem, köszönöm.
Üdv Kiborg
ui: tényleg kihagytam egy D-betűt a PIN után.
Következő: »»   429 / 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