File: ex_pinout.c

package info (click to toggle)
simulavr 1.0.0%2Bgit20160221.e53413b-1
  • links: PTS
  • area: main
  • in suites: buster
  • size: 5,748 kB
  • sloc: cpp: 35,491; python: 6,991; ansic: 3,567; makefile: 1,072; sh: 653; asm: 414; tcl: 320
file content (37 lines) | stat: -rw-r--r-- 639 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// modified from examples/atmega128_timer/main.c!
#include <avr/interrupt.h>

volatile int timer2_ticks;

ISR(TIMER2_COMP_vect) {
   timer2_ticks++;
}

int main(void) {
  volatile int tmp;

  DDRA = 0x01;
  PORTA = 0;

  /* Set up timer and enable interrupts */
  TCNT2 = 0;   /* Timer 2 by CLK/64 */
  OCR2 = 124;  /* 2ms on 4MHz, CTC mode */
  TCCR2 = 0x0b;
  TIMSK = _BV(OCIE2);

  sei();

  tmp = timer2_ticks;
  while(1) {
    if(tmp != timer2_ticks) { // toggle about every 2ms
      tmp = timer2_ticks;
      if((PINA & 0x01) == 0x01) {
        PORTA &= 0xfe;
      } else {
        PORTA |= 0x01;
      }
    } 
  }

  return 0;
}