File: example.c

package info (click to toggle)
simulavr 1.0.0%2Bgit20160221.e53413b-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,740 kB
  • sloc: cpp: 35,491; python: 6,995; ansic: 3,567; makefile: 1,075; sh: 653; asm: 414; tcl: 320; javascript: 32
file content (37 lines) | stat: -rw-r--r-- 650 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;

/* Every ~ms */
ISR(TIMER2_COMP_vect) {
   timer2_ticks++;
}

int main(void) {
  volatile int tmp;

  /* Set up our timers and enable interrupts */
  TCNT2 = 0;   /* Timer 2 by CLK/64 */
  OCR2 = 124;  /* ~2ms on 4MHz */
  TCCR2 = 0x0b;
  TIMSK = _BV(OCIE2);
  DDRA = 0x01;
  PORTA = 0;

  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;
}