Statistics
| Branch: | Revision:

scoutece / paintboard / code / geiger.c @ 11c945d9

History | View | Annotate | Download (413 Bytes)

1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <stdlib.h>
4
#include "geiger.h"
5

    
6

    
7
int16_t count;
8
int16_t rate;
9
int16_t ticks;
10

    
11
void geiger_init()
12
{
13
  EICRA |= _BV(ISC11) | _BV(ISC10);
14
  EIMSK |= _BV(INT1);
15
}
16

    
17
void geiger_tick()
18
{
19
  ticks++;
20
  if(ticks==100)
21
  {
22
    ticks=0;
23
    rate = count*3;
24
    count = 0;
25
  }
26
}
27

    
28
int16_t geiger_rate()
29
{
30
  return (rate==0)?count:rate;
31
}
32

    
33
ISR (INT1_vect)
34
{
35
  count++;
36
}