Timer_Overflow_IRQ.c


1
/*
2
 * ATmega162.c
3
 *
4
 * Created: 14.10.2016 18:35:33
5
 *  Author: Mathias
6
 */
7
8
//#define F_CPU 8000000     das gehört in die Project Settings
9
#include <avr/io.h>
10
#include <avr/interrupt.h>
11
12
ISR (TIMER1_OVF_vect)
13
{
14
  PORTD ^= (1 << PD0);                      // PD0 toggeln -> f=2,5Hz
15
}
16
17
ISR (TIMER1_COMPA_vect)
18
{
19
}
20
21
int main (void)
22
{
23
  // I/Os festlegen
24
  DDRD = 0xFF;
25
  DDRE = 0x04;
26
27
  // Timer1 Frequenz 5Hz
28
  TIMSK |= (1 << TOIE1);                    // hierfür braucht es eine ISR
29
  TIMSK |= (1 << OCIE1A);                   // hierfür braucht auch es eine ISR
30
31
  ICR1 = (uint16_t)25000;                   // Top => 5Hz
32
  OCR1A = (uint16_t)12500;                  // Vergleichswert einstellen
33
  OCR1B = (uint16_t)12500;                  // Vergleichswert einstellen
34
35
  TCCR1A |= (1 << COM1A1);                  // non-inverting mode für Pin 0C1A
36
  TCCR1A |= (1 << COM1B1) | (1 << COM1B0);  // inverting mode für OC1B
37
38
  TCCR1A |= (1 << WGM11);                   // Fast PWM Mode 14 Teil A
39
  TCCR1B |= (1 << WGM13) | (1 << WGM12);    // Fast PWM Mode 14 Teil B
40
  TCCR1B |= (1 << CS11);                    // Prescaler: 1/8
41
42
  // Allgemeine Settings
43
  sei();                                    // IRQ's Freigabe
44
45
  while(1)
46
  {
47
  }
48
49
  return(0);
50
}