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   159 / 840
(#) ATtiny válasza trudnai hozzászólására (») Okt 26, 2009 /
 
Igen már én is azt látok ott... misztikus dolgok ezek
(#) Sir-Nyeteg válasza ATtiny hozzászólására (») Okt 26, 2009 /
 
Gyorsan átírtam, a javaslatodra!
Köszi! Direkt nem ide akartam feltölteni, hogy ne szerepeljen itt hibás kód, főleg ne sok hibás kód
Azt a végtelen ciklust megszüntettem.
Prellmentesítés: áramkörileg megoldott a nyomógombbal párhuzamosan kötött kondival. Ez már bevált.
Amit nem csinált maga a kapcsolás: Nem tudtam váltani a 3 állapot között (switch-case) Illetva egyből átugrott a 3. case-re, nem volt 1. és 2.
Elvileg ez megoldott most, holnap tesztelem.
Köszönöm!
(#) TavIR-AVR válasza bladika hozzászólására (») Okt 27, 2009 /
 
HalfBridge FET vezérlő.

IR2104S vagy ha 100% a nyitási idő, akkor a nagyobbak...

12V tápfeszről eljár....
A vezérlése 3.3Vról is OK

Elég a N csatornás FET (kisebb a vesztesség.


Esetleg valami integrált vezérlő? Ezek 1-2Aig elvannak... (L297 v. L298)
(#) gulyas hozzászólása Okt 27, 2009 /
 
Sziasztok!

Lenne két kérdésem:
Az egyik az, hogy tudom-e vegyesen használni az analóg portot, adc bemenetként és digitális kimenetként egyszerre?
A másik, pedig hogyha ledeket szeretnék vezérelni, amiknek 12V kell (és a föld van közösítve), akkor ugye csinálhatom így, hogy a Vcc-re nem 5V-ot, hanem a 12V-ot kötöm?
(#) edgaar válasza gulyas hozzászólására (») Okt 27, 2009 /
 
hali

a ledek jók úgy igen.
a másik kérdés, ha adott pillanatban csak egyik funkció kell, akkor átállítód a lábakat, végrehajtódik a rutin, és visszaállítod. de ennek az a feltétele hogy az elektronika a lábakon, ne beszéljen bele. mármint ami bemenetként van kötve, az miközbe kimenetként használod ne mondjon semmit, mert az gáz.

Edgár
(#) Topi válasza edgaar hozzászólására (») Okt 27, 2009 / 1
 
"a ledek jók úgy igen."

Ez így nem jó. Nagyon nem.
A processzor kimenete megközelítőleg 0 és 5V, 5V-os tápfeszültség esetén. A PNP tranzisztort az 5V még nyitva tartja. Bármit állítasz be a processzor logikai kimenetén, a PNP mindig nyitva lesz. Akkor zár le, ha a bázisára kerülő feszültség nagyobb mint a 12V-0,6V. Ezt pedig kizárólag egy NPN - PNP párossal fogod tudni megoldani.

NPN-t vezérli a processzor. Annak a kollektora rajta a PNP bázisán, és egyúttal ez a PNP bázis +12V felé van húzva mondjuk 10K-val.

Szerk: Rajzoltam. Így fog menni csak P-s tranzisztorral.
(#) Combord hozzászólása Okt 27, 2009 /
 
Hy mindenki.
Kérdés:A cpp31-ben használt c-programozási nyelvem elegendő az avr programozáshoz?
(#) Topi válasza Combord hozzászólására (») Okt 27, 2009 /
 
Mindenféle képpen igen nagy előny lehet a C ismerése. Csak hajrá! A GCC nem egy ördöngősség.
Annyi a nehézség, hogy sok mindent teljesen máshogy kell megírni, mint amit az ember PC programozáskor tenne.
(#) trudnai válasza Combord hozzászólására (») Okt 27, 2009 /
 
Ezt a kerdest nem ertem?
[OFF]Amugy a "Hi" az pontos i-vel van, ha mar mindenaron Angolul akarsz koszonni...
(#) gulyas válasza edgaar hozzászólására (») Okt 27, 2009 /
 
Lehet félreérthetően fogalmaztam. Úgy akarom használni az analóg portot, hogy 4 lábára kötök egy potit az ADC-nek, a maradék 4-et pedig digitális kimenetként használom.

És a ledes meghajtást N-es tranzisztorral csinálhatom úgy, mint a csatolt képen?

npn.png
    
(#) Topi válasza gulyas hozzászólására (») Okt 27, 2009 /
 
Azt minden gond nélkül megteheted, hogy analóg / digitet egyszerre használsz. Annyi a lényeg, hogy nézd meg az adott procinál, van-e DIDR regiszter. Mert akkor külön kell engedélyezni hogy melyik PIN-en van analóg / digitális.

Így ne hajtsd a LED-eket. NPN tranyót így ne használd! Mellékeltem az előbb a rajzot, hogy hajtsd.
(#) gulyas válasza Topi hozzászólására (») Okt 27, 2009 /
 
És ott az NPN ugye lehet kis áramú is?
(#) Topi válasza gulyas hozzászólására (») Okt 27, 2009 /
 
Persze. 10K esetén ugye maximum durván számolva 12/10000 = 1,2mA. Ha nagyon gyorsan kell ki-be kapcsolni, vagy esetleg nagyobb áramokat, akkor inkább 4K7 - 1K környéki ellenállást tegyél bele. Meg kell növelni akkor a bázis áramot kikapcsoláskor, hogy gyorsabban zárjon le.
(#) gulyas válasza Topi hozzászólására (») Okt 27, 2009 /
 
PWM-es vezérlés lesz, tehát gyorsan kell ki-be kapcsolnia
(#) Combord hozzászólása Okt 27, 2009 /
 
Kösz mindenki!
(#) Combord válasza gulyas hozzászólására (») Okt 27, 2009 /
 
Mit nem értesz a kérdésen?
(#) trudnai válasza Combord hozzászólására (») Okt 27, 2009 /
 
Idézet:
„Mit nem értesz a kérdésen?”


Szerintem ez nekem iranyult, mert en nem ertettem

Idézet:
„Kérdés:A cpp31-ben használt c-programozási nyelvem elegendő az avr programozáshoz?”


Egyreszt, hogy mi az a cpp31? Borland C++ 3.1 akar lenni?

Masreszt, hogy a "c-programozási nyelvem" az "c-programozási gyakorlatom" akar lenni?
(#) Suncorgo hozzászólása Okt 27, 2009 /
 
Sziasztok! Megakadtam az ATmega8-as PWM moduljának a beindításánál! A segítségeteket kérném

Mi lehet a baj? Néztem mintaprogikat és ennél több nem volt beállítva bennük...

Segítséget előre is köszönöm!

Üdv: Sunci

csatolva a .c fájl

PWM.c
    
(#) wg_kezdo hozzászólása Okt 28, 2009 /
 
Van valami adat arról valahol, hogy egy Analóg bemenet mérése mennyi ideig tart?
(#) TavIR-AVR válasza wg_kezdo hozzászólására (») Okt 28, 2009 /
 
Adatlap.

13 órajel a mérés, az első beállás kb. 25 órajelnyi.
A 10bites felbontashot 200kHz-s órajel tartozik.
(#) wg_kezdo válasza TavIR-AVR hozzászólására (») Okt 28, 2009 /
 
Értem akkor ezek szerint a proci indulásánál egyet érdemes mérni utána már stabil.

A mérés közben a megszakítások működnek vagy leállítja őket?
(#) zsimon hozzászólása Okt 28, 2009 /
 
AVR USB-CAN

Ezt kellene megcsinálnom. CANOpen-t csinálok PIC24-re. Megrögzött PIC-es vagyok, de "szűklátóköröm" most akadályokat teremtett. Nincs mivel beprogiznom, és amikor december végén 10 napra hazajövök, csak arra lesz időm hogy a kész chip-et bepakoljam egy panelra.
Kérdés: Tudna e valaki nekem segíteni ebben? Afgánba vagyok, nem tudok vásárolni meg semmi, de ha valaki akárhonnan beszerezné az AVR-t beprogramozná, és postán elküldené haza, a bejárónőm rendezné, illetve én is képes vagyok bármikor bárkinek a költségeit és fáradozásást banki átutalással megtéríteni.

A többit magánba kérném, ha van vállalkozó segítő szellemű.
Köszönöm: Simi
(#) gulyas válasza Topi hozzászólására (») Okt 28, 2009 /
 
Akkor mind a két ellenállás 4K7 legyen?
(#) trudnai válasza zsimon hozzászólására (») Okt 28, 2009 /
 
De most akkor PIC kell vagy AVR?
(#) zsimon válasza trudnai hozzászólására (») Okt 28, 2009 /
 
AVR.
A fenti linkből kiderül.
Diagnosztikai-adatküldő cucc kell PC-re nekem, és ez ami a linkben van AVR. Ez a baj. Én meg PIC-es vagyok, tehát elakadtam és ezért írtam ide. Csak vázoltam a gondomat.

S.
(#) gtk válasza gulyas hozzászólására (») Okt 28, 2009 /
 
Lehet mindketto az.
(#) gulyas hozzászólása Okt 28, 2009 /
 
Most egy új problémába ütköztem.
Miután inicializáltam a pwm-et, hiába állítom mind a három csatornán nullára a komparálási szintet, mégis világít halványan az rgb led.
Mitől lehet ez? Egy mega16-ról van szó
  1. int main(void) {
  2.         //RGB kimenetek
  3.         DDRD  |= 0b10110000;
  4.  
  5.         //PWM inicializálása
  6.         //TIMER2-PD7
  7.         TCCR2 = (0<<FOC2)
  8.                   | (1<<WGM20)
  9.           | (1<<COM21)
  10.                   | (0<<COM20)
  11.                   | (1<<WGM21)
  12.                   | (1<<CS22)
  13.                   | (1<<CS21)
  14.                   | (0<<CS20);
  15.         TCNT2 = 0;
  16.         OCR2 = 0;
  17.  
  18.         //TIMER1-PD4;PD5
  19.         TCCR1A = (1<<COM1A1)
  20.                    | (0<<COM1A0)
  21.                    | (1<<COM1B1)
  22.                    | (0<<COM1B0)
  23.                    | (0<<FOC1A)
  24.                    | (0<<FOC1B)
  25.                    | (0<<WGM11)
  26.                    | (1<<WGM10);
  27.         TCCR1B = (1<<ICNC1)
  28.                    | (0<<ICES1)
  29.                    | (0<<0)
  30.                    | (0<<WGM13)
  31.                    | (1<<WGM12)
  32.                    | (0<<CS12)
  33.                    | (0<<CS11)
  34.                    | (1<<CS10);
  35.         TCNT1 = 0;
  36.         OCR1A = 0;
  37.         OCR1B = 0;
  38.  
  39.  
  40.  
  41.         while(1);
  42.  
  43.         return 1;
  44. }
(#) gulyas válasza gulyas hozzászólására (») Okt 28, 2009 /
 
Próbáltam szerkeszteni, de így maradt.
Az escape (illetve annak a hiánya) miatt elég érdekesen néz ki a kód.
(#) vzoole válasza gulyas hozzászólására (») Okt 28, 2009 /
 
C kódot így szurj be:

(code=c)kód(/code)

persze szögletes zárójelekkel.
(#) gtk válasza gulyas hozzászólására (») Okt 28, 2009 /
 
Nem csak forraskod hiba lehet. Lehet hogy nem zar le (idoben?) a meghajto fokozat. Szkoppal ramerni.
Következő: »»   159 / 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