SPI Slave Interrupt

Gast #1257775
Ich habe zwei Mikrocontroller miteinander verbunden.
Mit dem Master schreibe ich Daten, CLock und ein CS heraus. Funktioniert 
auch. Leider springt mein Slave (Atmega88) nicht in den Interrupt. Dies 
müßte er doch tun wenn er Daten am Miso, CLock am SCK und ein CS (von 
high nach Low) bekommt?
Hat jemand eine Idee, was ich falsch mache?


Hier der Quellcode für meinen Slave:

//CPU:   ATMega88
//Clock: 8MHz

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <avr/eeprom.h>
#include <avr/delay.h>

#define F_CPU   8000000 //CPU-Frequenz
#define USART_BAUD_RATE 9600 //gewählte Baudrate



volatile unsigned char RECEIVE_u8[10];   //SPI-Empfangsarray



//****Portinitialisierung*********************************************** 
*****
void init_ports(void)
{
 //Eingänge  SPI
 DDRB &= ~ (1<<PB2) | (1 <<PB4) | (1<<PB5);   //SPI SS Miso und SCK 
als Input

 //Ausgänge  SPI
 DDRB |= (1<<PB3);
}
//************ENDE 
Portinitialisierung****************************************




void SPI_Slave_INIT(void)
{
SPCR |= (1<<SPE) | (1<<SPIE);
}



Signal(SIG_SPI)   //SPI-Interrupt wenn etwas empfangen wird. Empfangene 
Daten in RECEIVE_u8[1]
{

while(!SPSR & (1<<SPIF));
RECEIVE_u8[1] = SPDR;

}




int main (void)
{
init_ports();        //Portinitialisierung
sei();               //Globale Interrupts aktiviert


void SPI_Slave_INIT();  //INIT SPI

while(1)
  {
  //warten bis etwas empfangen wird

  }


}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.