LTC2306 Kommunikation funktioniert nicht

OP #4579838
Moin,

ich versuche gerade mit einem ATMEGA328PB mittels SPI mit dem LTC2306 zu 
kommunizieren. Leider gelingt dies nicht, ich erhalte keine Antwort, 
wenn ich eine Anfrage sende. Hier mal mein Code, vielleicht fällt 
jemanden etwas auf, was ich übersehen habe:
1
#define F_CPU 8000000UL
2

3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <util/delay.h>
6
#include <stdlib.h>
7
#include "avr.h"
8
#include "ADC.h"
9
#include "LTC230x.h"
10
#include "UART.h"
11
#include "SPI.h"
12

13
uint8_t counter_isr = 0;
14
uint8_t counter_isr2 = 0;
15
uint16_t adc_value = 0;
16
uint16_t vbat = 0;
17
double adc_result = 0;
18
char Buffer[10];
19
char Buffer_Bat[10];
20

21

22
ISR (TIMER0_COMPA_vect)
23
{
24
  counter_isr++;
25
  if (counter_isr == 50)
26
  {
27
    PORTD ^= (1<<PD3);
28
    counter_isr = 0;
29
  }
30
}
31

32
ISR(ADC_vect)
33
{
34
  adc_value = (uint16_t) (ADCL + (ADCH<<8));
35
  
36
  adc_result = calculate_adc(adc_value);
37
  
38
  calculate_temp(adc_result);
39
}
40

41

42

43
int main(void)
44
{
45
  
46
  avr_init();
47
  SPI_MasterInit();
48
  UART_Init();
49
  
50
  if (!(PIND & (1<<PIND5)))
51
  {
52
    LED_VBAT(1);
53
    LED_SER(0);
54
  }
55
  
56
    
57
  uart_puts("Welcome");
58
    uart_puts("Booting...");
59
  _delay_ms(250);
60
  
61
    while (1) 
62
    {  
63
    uart_puts("Temperatur: ");
64
    start_converting();
65
    _delay_ms(500);
66
    if (!(PIND & (1<<PIND5)))
67
    {
68
       //SPI_MasterTransit(0x88);
69
        D9_low();
70
       _delay_us(10);
71
        select_D9();
72
       _delay_us(10);
73
       D9_high();
74
       SPI_MasterTransit(0b10001000);
75
       //vbat = SPDR0;
76
      _delay_ms(1);
77
      itoa(vbat, Buffer_Bat, 10);
78
      Send_UART_Char(Buffer_Bat);
79
    }
80
    
81
    
82
  }
83
}

Die SPI_MasterInit():
1
void SPI_MasterInit (void)              //Deklaration der Funktion 'SPI_MasterInit' als Funktion ohne Rückgabewert
2
{
3
  DDRB =  (1<<DDB1) | (1<<DDB2) | (1<<DDB3) | (1<<DDB5);
4
  DDRB &= ~(1<<DDB4);
5
  
6
  //Deklarieren von Pin PB0, PB1, PB3 und PB5 von Port B als Ausgang
7
  
8
  PORTB |= (1<<PB1);            //Setzen des Ausgangs PB1 auf high
9
  PORTB |= (1<<PB2);            //Setzen des Ausgangs PB2 auf high
10
  
11
  /*Alle Deklarationen von Port B als Ausgänge müssen in der 'SPI_MasterInit' erfolgen, damit sie global gültig sind.
12
  Dannach können die Pins auch in der Main-Funktion benutzt werden.*/
13
  
14
  /*Der Pin PB4 von Port B muss als Ausgang definiert oder bei einem Eingang per Pull-Up auf high gezogen werden. Sonst ist es 
15
  möglich, dass der µC im Slave-Modus arbeitet und so keinen Takt an PB7 (Port B) generiert*/
16
  
17
  
18
  SPCR0 |= (1<<SPE0) | (1<<MSTR0) | (1<< SPR00);// | (1<<CPOL0);
19
  //Setzen der Bits SPE, MSTR, SPR0 & CPOL im Register SPCR (SPI Status Register)
20
  //SPE = enable SPI
21
  //MSTR = µC als SPI-Master definieren
22
  //SPR0 = den CPU-Takt/16 als SPI-Clock
23
  //CPOL = Taktbeginn auf fallende Flanke setzen
24
}

Ich hoffe jemand kann mir weiter helfen.

Gruß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.