 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 06 22, 19:31. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » atmega fast pwm
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
 |
atmega fast pwm |
Parašytas: 2010 04 20, 23:40 |
|
|
|
sveiki, turiu tokia viena klausymeli. Iskart mestelesiu koda fragmenta
Kodas: |
void PWM_Init()
{
TCCR2|=(1<<WGM20)|(1<<WGM21)|(0<<COM20)|(1<<COM21)|(1<<CS20)|(1<<CS22)|(1<<CS21);
DDRB|=(1<<PB3);
}
|
taciau prijungus ledo anoda prie PB3 kojos ir minusa prie ledo katodo ir esant mikrovaldiklio 1 Mhz daznui eina pamatyti, kad ledas blikscioja, nors turetu buti uzgeses. Juk OCR2=0x00; O istikro veikia kaip butu koks OCR2=0x05; tai gal zinot programiskai kaip sita problema man isspresti. |
|
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku. |
|
|
|
 |
atmega fast pwm |
Parašytas: 2010 04 21, 01:16 |
|
|
|
osilografu ziurek kas vyksta, gal cia kazkokia atmegos problema |
|
|
|
|
 |
atmega fast pwm |
Parašytas: 2010 04 21, 02:01 |
|
|
|
na issprendziau sita problema iterpdamas sitas eilutes
Kodas: |
if(USART_Receive()<1)
{
TCCR2&=(0<<WGM20)|(0<<WGM21);
}
else
{
TCCR2|=(1<<WGM20)|(1<<WGM21)|(1<<COM21)|(1<<CS20);
OCR2=USART_Receive();
USART_Transmit(OCR2);
} |
oscolografo neturiu  |
|
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku. |
|
|
|
 |
atmega fast pwm |
Parašytas: 2010 04 21, 10:14 |
|
|
|
OCR=0x00 nera pilnai isjungtas PWM.
pvz atmel pavyzdyje daryroma taip:
void Stop_PWM(void) // Stops the PWM in off pos.
{
if ((TCCR1B & (1<<CS10))&&(OCR1 != 0))
{
if (OCR1 == 1)
{
while(TCNT1 > 2); // Wait for PWM == 1
while(TCNT1 < 2); // Wait for PWM == 0
}
else
{
while(TCNT1 > OCR1); // Wait for PWM == 1
while(OCR1 > TCNT1); // Wait for PWM == 0
}
TCCR1B = 0x00; // Turn PWM off
}
} |
|
|
|
|
 |
 |
Re: atmega fast pwm |
Parašytas: 2010 04 21, 13:03 |
|
|
|
pcwortex rašo: |
sveiki, turiu tokia viena klausymeli. Iskart mestelesiu koda fragmenta
Kodas: |
void PWM_Init()
{
TCCR2|=(1<<WGM20)|(1<<WGM21)|(0<<COM20)|(1<<COM21)|(1<<CS20)|(1<<CS22)|(1<<CS21);
DDRB|=(1<<PB3);
}
|
taciau prijungus ledo anoda prie PB3 kojos ir minusa prie ledo katodo ir esant mikrovaldiklio 1 Mhz daznui eina pamatyti, kad ledas blikscioja, nors turetu buti uzgeses. Juk OCR2=0x00; O istikro veikia kaip butu koks OCR2=0x05; tai gal zinot programiskai kaip sita problema man isspresti. |
taip ir turi veikti fast PWM, atmegos datasheet pasiskaityk, vos 5 psl apie tai. su atmega viskas gerai.
naudok kitą pwm mode. arba naudok inversiją, bet tada negausi nuolatinės, bus trūkis, kai norėsi maksimaliai šviesti tarkim LEDą |
|
|
|
|
 |
 |
atmega fast pwm |
Parašytas: 2010 04 21, 15:23 |
|
|
|
ACC rašo: |
OCR=0x00 nera pilnai isjungtas PWM.
pvz atmel pavyzdyje daryroma taip:
void Stop_PWM(void) // Stops the PWM in off pos.
{
if ((TCCR1B & (1<<CS10))&&(OCR1 != 0))
{
if (OCR1 == 1)
{
while(TCNT1 > 2); // Wait for PWM == 1
while(TCNT1 < 2); // Wait for PWM == 0
}
else
{
while(TCNT1 > OCR1); // Wait for PWM == 1
while(OCR1 > TCNT1); // Wait for PWM == 0
}
TCCR1B = 0x00; // Turn PWM off
}
} |
cia kiek suprantu tai leidzia dar viena paskutini cikla prasukti iki galo ir poto isjungia, kad tipo nebutu isjungimo viduryje ciklo  |
|
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku. |
|
|
|
 |
atmega fast pwm |
Parašytas: 2010 04 26, 02:26 |
|
|
|
Proteus'e įsikelk mikrovaldiklį bei osciloskopą, ir viskas kuo puikiausiai matysis.
Pats ką tik išbandžiau PWM ir kuo puikiausiai parodė.  |
|
|
|
|
 |
 |
atmega fast pwm |
Parašytas: 2011 01 20, 22:39 |
|
|
|
Kodas: |
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
void ADCInit(void) { ADMUX = (1<<REFS0) | (0<<REFS1) | (1<<MUX0) | (0<<MUX1) | (1<<MUX2) | (0<<MUX3) | (1<<ADLAR);
ADCSRA = (1<<ADEN) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2) | (1<<ADSC); //bitai nustatyti pagal datasheeta
ADCSRB = (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0) ; //freerunig rezimas
}
int main()
{
DDRB |= _BV(PB1) | _BV(PB2); //Enable output on PINB1 (OC1A)
DDRD |= _BV(PD6) | _BV(PD5); //Enable output on PINB1 (OC1A)
TCCR1B |= (1 << WGM13); //Configure timer for PWM Mode 8
TCCR0B |= (1 << WGM13); //Configure timer for PWM Mode 8
ICR1 = 10000; //Set TOP value for the wave form
TCNT0 = 10000;
OCR1A = 750; //Set servo compare value to 1.5ms pulse
OCR0A = 750; //Set servo compare value to 1.5ms pulse
TCCR1A |= ((1 << COM1A1) | (1 << COM1B1)); //Clear OC1A/OC1B on upcount compare and set downcount compare
TCCR0A |= ((1 << COM1A1) | (1 << COM1B1));
TCCR1B |= (1 << CS10); //Start timer with no prescalar (1Mhz)
TCCR0B |= (1 << CS10); //Start timer with no prescalar (1Mhz)
int x;
while (1)
{ ADCInit();
x= (ADCH*11)+1400 ; // nuo 1400 iki 4200
OCR1A = x;
OCR0A = x;
_delay_ms(1);
}
}
|
padariau viena Pwm servai , per proteus ismeginau , veike dabar reike dar 1 servos bet nezinau kuo pakeisti ICR1 , bandziau TCNT0 , bet tada pwm neveikia .
gal galit uzrodyt kaip pasijunk daugiau pwm kanalu ? |
|
|
|
|
 |
 |
atmega fast pwm |
Parašytas: 2011 01 20, 23:17 |
|
|
|
Puse kodo visiska xuinia... Bent datasheeta buvai atsivertes? Daugelis atmegu turi tik 1 16bitu counteri... Nors tas counteris turi pora pwm isejimu. |
|
|
|
|
 |
atmega fast pwm |
Parašytas: 2011 01 21, 00:13 |
|
|
|
sneikaz rašo: |
Puse kodo visiska xuinia... Bent datasheeta buvai atsivertes? Daugelis atmegu turi tik 1 16bitu counteri... Nors tas counteris turi pora pwm isejimu. |
Taip pritariu , ce is dvieju susidejau ir nelabai kertu todel ir klausiu .
naudoju 168mega .
yra 8 bit , yra 16 bit counteriai .
raso kad turi 6 pwm kanalus .
man siuo metu 4 reikia . |
|
|
|
|
 |
atmega fast pwm |
Parašytas: 2011 01 21, 12:20 |
|
|
|
Tarkim 16bitinis caunteris turi du isejimus, nustatai ka veiktu su ICR nustatai dazni, o su OCRA ir OCRB tu dvieju kanalu pwm impulsu plocius.
kad uzvest ant kelio:
ICR1 = 1000;
OCR1A = 600;
OCR1B = 300;
ir tt... |
|
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau  |
|
|
|
 |
 |
atmega fast pwm |
Parašytas: 2011 01 21, 19:56 |
|
|
|
didshirshis rašo: |
Tarkim 16bitinis caunteris turi du isejimus, nustatai ka veiktu su ICR nustatai dazni, o su OCRA ir OCRB tu dvieju kanalu pwm impulsu plocius.
kad uzvest ant kelio:
ICR1 = 1000;
OCR1A = 600;
OCR1B = 300;
ir tt... |
Dekuij , pagavau kaip valdyti atskirai . bet visokius rezimus bandziau ir neina pajunk abieju servu tik atskirai viena , arba abu vienodai .
kokius cia rezimus imti ?
Kodas: |
DDRB |= _BV(PB1) | _BV(PB2); //Enable output on PINB1 (OC1A)
TCCR1A |= (1 << COM1A1) | ( 1 << COM1B1 ) ;
TCCR1A |= (1 << WGM13);
TCCR1B |= (1 << WGM13) ;
TCCR1B |= (1 << CS10);
|
prescalerio jokio nerkia , bet neikertu koki rezima pasiimt su wgm ir com bitais . |
|
|
|
|
 |
atmega fast pwm |
Parašytas: 2011 01 21, 21:08 |
|
|
|
Jei virsu nustatai su ICR1, tai reikia imti " Fast PWM" kur TOP nurodyta kaip "ICR1" |
|
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau  |
|
|
|
 |
atmega fast pwm |
Parašytas: 2011 01 21, 23:44 |
|
|
|
didshirshis rašo: |
Jei virsu nustatai su ICR1, tai reikia imti " Fast PWM" kur TOP nurodyta kaip "ICR1" |
nu manau pavyko dazniai du skirtingi , tik dabar belieka atitaikit dazni.
fOCnxPWM = fclk_I/O / (N ⋅ (1+top)) pagal sita formule skaiciuojamas fast pwm ?
gal jau zinot kokius skaicius yrasyt servom valdyti ? |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |