Changing the speed of blinking LED by using AVR (ATMEGA16)

rombikkukurt

MB Üyesi
Kayıt
2 Mayıs 2017
Mesajlar
1
Tepkiler
0
Yaş
28
Üniv
Osmangazi Üniversitesi
Merhaba arkadaşlar,

Osmangazi üniversitesinde 2. sınıf öğrencisiyim. Şu an Litvanya'da Erasmus yapıyorum. Lablardan biri şu şekilde ve additional partsı tam anlamıyla yapamadım. Yardım edebilir misiniz? Yazdığım kod da şu şekildedir.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

volatile uint16_t overflow;
volatile int i=61;

ISR(TIMER1_OVF_vect){

overflow++;

}
void timer1(){

TCCR1A = 0x01 ;
TCCR1B = 0b01001101;
TCNT1 = 0; //Clear the value of timer/counter1 register
TIMSK |= (1<<TOIE1); //Enable the interrupt of overflow
sei();

}
int main(void){

DDRD = 0xFF; //Set D as output
DDRA = 0b00000011;
PORTA = 255;
timer1(); //Initialization of timer/counter1

int b = 0;

while(1){

if(!(PINA&(1<<PA2))){ //when PA2 is pushed
if(btns == 0){
i+=61;
b=1;
}
}
else{
b = 0;
}

if(!(PINA&(1<<PA3))){ //when PA3 is pushed
if(btns == 0){
i-=61;
b=1;
}
}
else{
b = 0;
}

if(overflow==i){
PORTD ^= (1<<PD4); //Toggle the level of voltage on pin PD4
overflow=0;
TCNT0=0;
_delay_ms(3000);
}
}
}
 

Dosyalar

Yukarı Alt