-
Notifications
You must be signed in to change notification settings - Fork 0
/
analog.c
62 lines (53 loc) · 2.1 KB
/
analog.c
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*------------------------------------------------------------------------------
Copyright: Radig Ulrich mailto: [email protected]
Author: Radig Ulrich
Remarks:
known Problems: none
Version: 31.12.2007
Description: Analogeingänge Abfragen
Dieses Programm ist freie Software. Sie können es unter den Bedingungen der
GNU General Public License, wie von der Free Software Foundation veröffentlicht,
weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder
(nach Ihrer Option) jeder späteren Version.
Die Veröffentlichung dieses Programms erfolgt in der Hoffnung,
daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE,
sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT
FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
Programm erhalten haben.
Falls nicht, schreiben Sie an die Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
------------------------------------------------------------------------------*/
#include "analog.h"
#if USE_ADC
volatile unsigned char channel = 4;
volatile unsigned char sampnum = 0;
//------------------------------------------------------------------------------
//
void ADC_Init(void)
{
ADMUX = (1<<REFS0) + (1<<REFS1) + channel;
//Free Running Mode, Division Factor 128, Interrupt on
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE);
}
//------------------------------------------------------------------------------
//
ISR (ADC_vect)
{
//ANALOG_OFF; //ADC OFF
if (sampnum < 2) {
sampnum++;
return;
}
sampnum = 0;
var_array[channel++] = ADC;
//usart_write("Kanal(%i)=%i\n\r",(channel-1),var_array[(channel-1)]);
ANALOG_OFF;
// RoBue:
// A7 steht nicht mehr zur Verfügung -> 1-Wire
// if (channel > 7) channel = 4;
if (channel > 6) channel = 4;
ADMUX =(1<<REFS0) + (1<<REFS1) + channel;
ANALOG_ON;//ADC ON
}
#endif //USE_ADC