ATMega128 mit externen ADC

Gast #934749
Lesenswert?

Hallo,
habe folgendes Problem mit einem Atmega128 und einem ADC LTC 1867, von 
dem die Digitalleitungen (Chip Select, SDI, SDO, und SCK) an drei Pins 
des Atmegas hängen. Sobald ich die Konvertierung starte 
(Spannungsmessung zwischen CH1 und GND) gibt er mir unabhängig von der 
Eingangsspannung am SDOut highByte 0 und am LowByte zw. 48 und 112 
zurück. Im Vergleichsmodus zw. zwei Eingängen (CH0 & CH1) bekomme ich 
127 am High und 240 am LowByte (wieder sind die Spannungen egal). Am 
Oszi, welches am SDOut hängt lässt sich das gleiche feststellen.

1
unsigned int value = 0x0000;
2

3
mask = 0x80;
4

5
SET_CS_ADC;     // chip select (set --> low)
6
CLEAR_CS_ADC;   // start convertion at rising edge
7
warte(1);       // 1 ms convertion time
8
SET_CS_ADC;
9

10

11
do
12
{
13
  if(mask & control)   // control --> CH0 to GND, Bipolar
14
    SET_BIT;
15
  else
16
    CLEAR_BIT;
17

18
  SET_SCK;
19

20
  if(PIN_SPI & (1 << PIN_MOSO))
21
    value |= iMask;
22
  
23
  CLEAR_SCK;
24

25
  mask = mask >> 1;
26
  iMask = iMask >> 1;
27

28
}while(mask);
29

30
mask = 0x08;  // 4 more bits
31

32
do
33
{
34
  SET_SCK;
35

36
  if(PIN_SPI & (1 << PIN_MOSO))
37
    value |= iMask;
38

39
  CLEAR_SCK;
40

41
  mask = mask >> 1;
42
  iMask = iMask >> 1;
43

44
}while(mask);
45

46

47
CLEAR_CS_ADC;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren