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   515 / 837
(#) gacserus hozzászólása Feb 3, 2013 /
 
Sziasztok,

4 db fényérzékelővel szeretnék vezérelni két motort Attiny2313 v Attiny45 segítségével. HOgy tudom a 4 érzékelőt beolvasni.
Attiny2313ban nincs ADC a 45ben van ugyan de nincs 4 bement.

Előre is kösz a választ
Gacserus
(#) csabeszq válasza csabeszq hozzászólására (») Feb 3, 2013 /
 
Végül összebarkácsoltam a rövidzár védelmet. A fentebb csatolt ábrához hasonló, de az áramot pontosabban korlátozza. Ki is próbáltam és egy szikrát sem dobott, azonnal kigyulladt a piros LED. Kapcsolóval kikapcsolva újra rendesen adta a feszültségeket. Ha valakit érdekel az új rajz szóljon, mert akkor felrakom.
(#) kiborg válasza gacserus hozzászólására (») Feb 4, 2013 /
 
Szia!
Ami nem megy, nem kell erőltetni. Használj ATMega8-t. Minimálisan drágább, de minden van benne, ami neked kell.

csabeszq: érdekel

Üdv Kiborg
(#) gacserus válasza kiborg hozzászólására (») Feb 4, 2013 /
 
Kiborg,

....hár válaszoddal igazából nem segítettél.

De a szükség néha rákényszeríti az embert hogy jobban utánanézzen a dolgoknak. Ezt tettem és azt látom hogy a Attiny45ben vsn egy 4 csatornás multiplexer ami becsatornázható az analóg comparator egyik bemeneteként...



Gacserus
(#) kiborg válasza gacserus hozzászólására (») Feb 4, 2013 /
 
Szia!
Igazából azt akartam javasolni, hogy válts procit.
De ezek szerint Te szeretnél ennél a típusnál maradni.De miért?
Nem értem, hogy hogyan akarod kivitelezni a "becstornázást". Mit értesz alatta? Az analóg komparátor és az Analóg Digitál konverter más és más dolog.
Ráadásul, ha ADC0-t akarod használni, már le is mondhatsz a RESET lábról.
Kiborg
A hozzászólás módosítva: Feb 4, 2013
(#) gacserus válasza kiborg hozzászólására (») Feb 4, 2013 /
 
Szia,

Nos úgy látom hogy ha az ADC-t kikapcsoljuk akkor a benne lévő multiplexer lábai az analóg comparátor egyik lábának feleltethetőek meg így a négy bemeneti jel (ADC0-ADC3) megmérhető és a legnagyobb kiválasztható.

az persze kérdés hogy a maradék lábak elegendőek lesznek-e a motor vezérléshez és persze a reset ügy is igaz. .. még dolgozom rajta.

Azért erőltetem ezt a procit mert ez van itthon

Gacserus
(#) thomas3 válasza gacserus hozzászólására (») Feb 4, 2013 /
 
Attól, mert az van otthon nem biztos, hogy megéri vele bajlódni. Amennyit agyalsz azon, hogy hogyan variált össze a dolgokat illetve ezt programban is megvalósítsd fele annyi idő alatt kihozható a projekt például egy ATmega8-ból.

De persze ha Te ennyire ragaszkodsz az otthoni procihoz, akkor sok sikert hozzá.
A hozzászólás módosítva: Feb 4, 2013
(#) kiborg válasza gacserus hozzászólására (») Feb 4, 2013 /
 
Tévedés.
Más az analóg komparátor és más az analód digitál koverter.
Az analóg komparátornak egy bitnyi kimenete van, hogy az adott jel a beállított referenciánál kisebb vagy nagyobb. a ADC pedig konkrét számszerű értéked ad a jelről. Ez 10bites adat. Nem illek ezt összekeverni a kettőt, teljesen más a funkciója.
Kiborg
(#) zombee válasza gacserus hozzászólására (») Feb 4, 2013 /
 
#1: Az ATTiny45-nél van 4 ADC bemenet, a másik kettővel használhatod a motort.
DE: ez esetben a RESET-et ki kell kapcsolnod, így normál programozóval többé nem fog menni az újraprogramozás. Nem túl elegáns, de ha veszel/építesz egy Fusebit Doctor-t,
azzal vissza tudod állítani és újból programozható lesz.

#2: használj 2 darab ATTiny45-öt, ha a motorok függetlenek azzal el is van minden intézve.
Ha nem függetlenek akkor még mindig marad 2 vezeték(ha a RESET-et kikapcsolod akkor 3),
amin keresztül a két AVR szépen megverekszik egymással.

#3: Végy egy analóg multiplexert(külön IC), abból neked egy 4-ből 1-et típusú kell.
A multiplexer kimenete elvesz 1 darab ADC-s lábat, a vezérlésére rászánsz kettőt.
Kettő lábad pedig marad a motorok vezérlésére.

A komparátor teljesen más, azt ne keverd az ADC-vel!
A hozzászólás módosítva: Feb 4, 2013
(#) gacserus válasza kiborg hozzászólására (») Feb 4, 2013 /
 
Kiborg,

értem amit mondasz, feladva az ADC 10 bites képességét a feladat megoldásához - megállapítani melyik a legnagyobb jel a négy közül - végeredményben az 1 bit is elegendő lehet.

100 szónak is egy a vége, a lehetőségeim:
1.) kinlódok a meglévő 45össel - valószinűleg meg lehet oldani a feladatot kompromisszumokkal
2.) beruházok egy mega8ba. pénzbe kerül de elegánsabb, egyszerűbb lesz a kivitelezés

Uraim köszönöm a hozzászólásokat, végeredményben segített a tisztánlátásban.

Üdv,

Gacserus
(#) csabeszq válasza gacserus hozzászólására (») Feb 4, 2013 /
 
Az elektrokonthában az ATMega48PA-t 545-ért mérik, az ATTiny45-öt 625 Ft-ért.
Az ATMega48PA láb és funkciókompatibilis az ATmega8-cal, csak kisebb a memóriája.

Maradjunk annyiban, hogy az ATTiny45 a drágább és bonyolultabb megoldás.
(#) csabeszq válasza csabeszq hozzászólására (») Feb 4, 2013 /
 
Mellesleg a mikrovezérlő az, amivel nem érdemes szórakozni. Mármint, ha a programod 3.5 kbyte, akkor már ne vegyél 4 kbyte-os mikrovezérlőt.

Nálam hasonló szituáció állt elő: 21 I/O port kellett volna, de egy trükkös átalakítással 20-at csinálhattam volna belőle. Miután sokáig morfondíroztam, arra a következtetésre jutottam, hogy két mikrovezérlőt használok egy helyett. Több láb marad az értelmes átgondolt kialakításra. Tapasztalatból tudom, hogy a trükkös megoldások vezetnek oda, hogy később használhatatlan lesz az egész és úgyis újracsinálod végül normálisan.

A mikrovezérlőt kell a feladathoz választani és nem fordítva.
(#) csabeszq válasza kiborg hozzászólására (») Feb 4, 2013 / 3
 
Kiborg, csatoltam a rövidzárvédő kapcsolást.

1) Normál mód
Q1, Q2 tranzisztor zár, az M1 P-FET vezet, mert a gate-je R3-on keresztül a földre van kötve. Az áramkörön áram folyik.

2) Rövidzárba lépés mód:
R1 ellenállás eléri a nyitófeszültség szintjét és Q1 kinyit, a nyitás miatt az M1 P-FET gate-je magasra kerül, az áramkör kikapcsol, a LED világít (D1)

3) Rövidzár tartása
Mivel a M1 P-FET kikapcsolt, Q2 tranzisztor bázisán áram indul el, R6 - D3 - D2 - R4/R_LOAD útvonalon és az áramkör önfenntartóvá válik

4) Bekapcsolási tranziensek:
Normál módban Q2 bázisa lebegne, ami magától is kinyithatná, ezért R5-tel VCC-re van kötve

A dióda lánc 4.7V zener (D3) + egyenirányító dióda (D2) azért kell, mert a bekapcsolásnál a P-FET-nek legalább 4V feszültség kell. Ha nincs ott a Z-dióda, akkor az áramkör helyből rövidzárral startol, mert Q2 előbb nyit ki, mint a P-FET.
A hozzászólás módosítva: Feb 4, 2013
(#) pici hozzászólása Feb 5, 2013 /
 
Sziasztok
Valaki csinált már sikeres RTC calibrációt Xmega procin?
(AVR1606)
(#) Müszi hozzászólása Feb 6, 2013 /
 
Sziasztok!

Ki tudna nekem beégetni egy DIP tokos ATMEGA8-at ha adott a .HEX fájl? Aki tudna nekem segíteni, írjon privátban a részletekért!

Köszönöm!
(#) csabeszq válasza Müszi hozzászólására (») Feb 6, 2013 /
 
Melyik város?
(#) Müszi válasza csabeszq hozzászólására (») Feb 6, 2013 /
 
Az adatlapomon láthatod, postán rendezném a dolgot
(#) gacserus hozzászólása Feb 6, 2013 /
 
Sziasztok,

Atmega8-cal próbálkozok/tanulok.
Beégettem a következő kódot:

**************
#define F_CPU 1000000UL /* 1 MHz CPU clock */
#include
#include

int
main (void)
{
DDRC = _BV (PC0); /* PC0 is digital output */

while (1) /* loop forever */
{
/* set PC0 on PORTC (digital high) and delay for 500mS */
PORTC &= ~_BV(PC0);
_delay_ms(500);

/* PC0 on PORTC (digital 0) and delay for 500mS */
PORTC |= _BV(PC0);
_delay_ms(500);
}

return (0);
}

Nem csinál semmit a PC0 porton illetve véletlenül vettem észre hogy a PD6on meg villogtatja a ledet.... számomra érthetetlen.ül

Atmel studióval csináltam a build-et.
Dasa3 programozót használok. Avrdude a softver. Az lefut hiba nélkül (verify OK, Fuse OK...) .
Semmi más nincs a controllerre kötve csak a programozó, gnd, vcc, agnd, avcc, és a led egy ellenállással.
Saját belső órajelet használok.

Próbálkoztam más "demo" kóddal is de nem ment.

Bármi ötletet szivesen veszek,

előre is köszönöm,

Gacserus
(#) sikolymester válasza gacserus hozzászólására (») Feb 6, 2013 /
 
Használd a kód taget, amikor forráskódot posztolsz.

Nézd meg szimulátorban, hogy ott mi történik a C porton. Szimulátorban ne használj delay parancsokat, mert "bezavar" a szimulációba.

Ha a szimulátorban működik, akkor valami hardver bibi lesz.
(#) csabeszq válasza gacserus hozzászólására (») Feb 6, 2013 /
 
Az effajta problémák esetében nálam az szokott lenni, hogy lefordítom a kódot, elkészül a hex fájl és egy teljesen másikat töltök fel, utána meg csodálkozom, hogy miért úgy megy, ahogy.

(#) ThompsoN hozzászólása Feb 6, 2013 /
 
Sziasztok.

Újra AVR kérdésem lenne. Ma megérkezett a programozó, és a két ATTiny24-es mikrokontroller (egy tartaléknak).
OC0A jó lenne arra, hogy tennék rá egy 1kOhmos ellenállást egy FET-tel, mint kimenet, és ide jönne a PWM jel?
Bemenethez pedig használnék 5 lábat, egy fokozatkapcsoló 5 kimenetére kötve őket. Melyik lábakra célszerű, vagy a RESET kivételével mindegy? Illetve kell a lábakhoz ellenállás, és ha igen, akkor mekkora? (Minden stabil 5V-ról fog menni, a FET lesz csak 12V-ra kapcsolva.)

Bocsi a sok amatőr kérdésért, de még sosem foglalkoztam AVR-el korábban.
(#) csabeszq válasza ThompsoN hozzászólására (») Feb 6, 2013 /
 
Az AVR max. 40mA-t bír el, így az 1k ellenállás semmiképpen sem probléma.

A lábakra, ha akarsz ellenállást raksz, ha nem akarsz, nem raksz, csak akkor másképpen kell programozni.
Én nem szoktam rakni. Az AVR-nek van bekapcsolható felhúzóellenállása, ami szakadás esetén automatikusan 1-be megy. Amikor lenyomod a kapcsolót, akkor a bemenetet lehúzod a földre, azaz 0-ba.

Ha raksz ellenállást, akkor a felhúzó ellenállást természetesen ki kell kapcsolni.

Ami a lábakat illeti, oda kötöd ahova jólesik. A helyedben én mindet a PA0-7 lábak valamelyikére kötném. Működik másképp is, csak kicsit macerás, ha egyik fokozatot a B portról, a másikat pedig az A-ról olvasod. De mégegyszer, oda kötöd, ahová jólesik.

DDRA(0-7)=0 PORTA(0-7)=0 -> nincs felhúzó ellenállás, bemenet
DDRA(0-7)=0 PORTA(0-7)=1 -> van felhúzó ellenállás, bemenet
DDRA(0-7)=1 PORTA(0-7)=0 -> kimenet 0-ás
DDRA(0-7)=1 PORTA(0-7)=1 -> kimenet 1-es
A hozzászólás módosítva: Feb 6, 2013
(#) ThompsoN válasza csabeszq hozzászólására (») Feb 6, 2013 /
 
Köszönöm a segítséget!
(#) boomerang hozzászólása Feb 7, 2013 /
 
Sziasztok !

RTC kiolvasáshoz szeretném használni ezt a kódot Atmega 8-cal. Ez az alap TWI inicializálás, azt hiszem ezzel már kapnom kellene valami adatot az RTC-ből, de nem..... Mi lehet a hiba ?
Köszi

Névtelen.jpg
    
(#) csabeszq válasza boomerang hozzászólására (») Feb 7, 2013 /
 
Ebből nem látjuk, hogy hogyan számolod az address-t.
Ha a fizikai címe az IC-nek 13 és olvasni akarsz, akkor a TWI address 27.

2*fizikai cím+(1 ha olvasás).

Meg azt is jó lenne tudni, hogy melyik soron áll meg.
(#) e-chipmunk hozzászólása Feb 7, 2013 /
 
Üdv!Remélem jó helyen kérdezek. Ha nem ajánljatok egyet, köszönöm!

Én a TI CC2530-ról szeretnék kérdezni. Ezzel az IC vel szeretnék egy egyszerű "játékot" készíteni. Két panelt szeretnék, egy oda vissza adó vevő párt, de kezdetben nem lenne baj az sem, ha az egyik csak adna, a másik pedig csak venne. Úgy képzeltem el, hogy a panelokon lenne egy nyomógomb és egy led. Ha a gombot megnyomom az egyik panelon, akkor a másikon felvillanna a led, illetve fordítva.

A kérdés, hogy lehet-e ezt az IC-t ilyenre felhasználni, illetve hogyan kezdjek hozzá?
Segítségeteket köszönöm!
A hozzászólás módosítva: Feb 7, 2013
(#) sikolymester válasza e-chipmunk hozzászólására (») Feb 7, 2013 /
 
Mielőtt bárki bármit mondana, meg kell kérdezzem, hogy egy legyártott működő NYÁKod ugye van belőle?
A válasz röviden persze az, hogy igen, erre lehet használni.

További kérdésem lenne, hogy egy AVR-t szeretnél rákötni?
Van hozzá programozód, mert ebben egy 8051 -es uC van?
(#) e-chipmunk válasza sikolymester hozzászólására (») Feb 7, 2013 /
 
AVR programozóm van, most egy ATMEGA8-at programozok, és ha lehet, akkor akár ezt is rákötném.
Nyák az még nincs kész, de kb itt is a gond, hogy hogyan tervezzem meg, mert ugye ajánlás az van. de ehhez kell még pár dolog
(#) sikolymester válasza e-chipmunk hozzászólására (») Feb 7, 2013 /
 
Nézd meg kicsit alaposabban az adatlapját. Ebben egy különálló mikrokontroller van. Nem egy modul egy mikrokontrollerhez, hanem komplett megoldás.

Ha nincsen hozzá programozód, akkor csak nézheted az asztalon.
Meg nem tudom mennyire vagy jártas tervezésben, de a 2.4GHz -es domain már nem piskóta.

Ha mindenképpen magad akarsz NYÁKot tervezni és AVR-ra akarod kötni, akkor ezt lesd meg: Si4421
Van referencia EAGLE design.
(#) e-chipmunk hozzászólása Feb 7, 2013 /
 
Konkrétan a CC2530-hoz nincs programozóm.
Akkor amit szeretnék, ahhoz elég lenne simán ez a 2530-as IC!?
Csinálnom kellene egy nyákot, vagy csináltatni, mert ahogy mondod ez már necces.
Ahhoz kellene egy gomb, meg egy led, azt nyilván definiálni programban, hogy mi mi.
meg egy antenna, táp. És kész, vagy még nagyon messze állok attól is, hogy jól gondolkodjam a problémámról?
Következő: »»   515 / 837
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