Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h> // dołączenie głównego systemowego pliku nagłówkowego
- #include <avr/interrupt.h>
- #include <util/delay.h>
- volatile uint8_t pwm;
- int main()
- {
- DDRB |= (1<<PB3); // kierunek wyjściowy dla OC0
- // konfiguracja fast PWM
- TCCR0 |= (1<<WGM01) | (1<<WGM00); // tryb fast PWM
- TCCR0 |= (1<<COM01); // clear OC0 on compare match
- TCCR0 |= (1<<CS00); // preskaler na 1
- OCR0 = 128; // wypełnienie około 50%
- // programowy PWM
- DDRA |= (1<<PA0); // wyjście PWM
- TCCR2 |= (1<<WGM21); // tryb CTC
- TCCR2 |= (1<<CS20);// preskaler 1
- OCR2 = 77; // ustalenie częstotliwości (256kHz)
- TIMSK |= (1<<OCIE2); // zezwolenie na Compare Match Interrupt
- sei();
- while(1)
- {
- pwm = 127;
- }
- //uint8_t i;
- /*while(1)
- {
- // pętla rozjaśniająca
- for( i = 0 ; i<255; i++)
- {
- OCR0 = i;
- _delay_ms(3);
- }
- // pętla gasząca
- for( i = 255; i > 0; i--)
- {
- OCR0 = i;
- _delay_ms(3);
- }
- }*/
- }
- ISR ( TIMER2_COMP_vect )
- {
- static uint8_t counter;
- if(counter>=pwm)
- {
- //PORTA |= (1<<PA0);
- PORTA &= ~(1<<PA0);
- }
- else
- {
- //PORTA &= ~(1<<PA0);
- PORTA |= (1<<PA0);
- }
- counter++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement