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
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.
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.
Egy egyszerű kérdésem lenne hozzátok, mert már nem hiszek az eddig megszerzett tudásomban!
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.
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>>>
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.
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.
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.
Az SBR egy OR funkciot is takar, az LDI nem, legalábbis én igy értelmezem.
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.
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.
ADC rovid ismertetese:
ADC ADC AVR-rel: ADC AVR-rel Egy egyszeru pelda az oldal aljan (a fotoellenallast csereld ki potira): Pleda Azt hiszem ma rászánom a délutánom és estém. Elolvasom az összes írásod és jegyzetelek.
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!
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
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?
Ez kell neked:FatFs
Köszönöm, megpróbálom összehozni
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...
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?
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.
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?
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.
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.
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
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...
Itt csak kettő led van rákötve. Meg még UART-on kap parancsokat.
Kicsit OFF, de azért megkérdem:
while (PIN&(1<<2)); mit csinál ? Egy Mega48 esetén? Üdv Kiborg>> 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.
Értem, köszönöm.
Üdv Kiborg ui: tényleg kihagytam egy D-betűt a PIN után. |
Bejelentkezés
Hirdetés |