morse_code_transcoder/transcodeur/timerinterrupt.c

53 lines
No EOL
970 B
C

/*
* timerinterrupt.c
*
* Created: 17/05/2021 12:58:50
* Author: yboujon1
*/
#include "main.h"
#include "timerinterrupt.h"
volatile unsigned char etat = 0;
void start_timer0(void){
DDRB |= (1<<PB3);
TCCR0 |= (3<<CS00)|(1<<WGM01)|(1<<COM00);
OCR0 = 65;
}
void stop_timer0(void){
TCCR0 &= ~(3<<CS00);
}
void init_interruption(void){
DDRD &= ~(1<<PD2); //on met int sur pd2
MCUCR |= (3<<ISC00);
GICR |= (1<<INT0);
sei();
}
ISR (INT0_vect){
etat = 1 - etat;
}
void start_timer1(unsigned short int ocr1a){
OCR1A=ocr1a;
TCCR1A |= (1<<COM1A0); //toggle
TCCR1B |= (1<<WGM12)|(1<<CS12); //compare + div 64
}
void stop_timer1(void){
TCCR1B &= ~(1<<CS12);
OCR1A=0; //règle le soucis du premier mot oublié
}
void resume_timer1(void){
TCCR1B |= (1<<CS12);
}
void wait_ocf1a_timer1(void){
do{
status=TIFR;
}while((status & (1<<OCF1A))==0);
TIFR = TIFR | (1<<OCF1A); //on remet OCF1A a 0
}