Allgemeine Fragen zu SPI

OP #968737
Lesenswert?

Hallo guten morgen,
MPLAP 7.60; C18;

Als Master nutze ich einen PIC18F4550 Takt 20MHz und Slave PIC18F258 
Takt 4MHz. Mein Datenpaket besteht aus 10 Byte. Ein Paket besteht aus 8 
Daten Bytes und 2 Quersumme Bytes

In Master habe ich SPI Slave Takt "0001 = SPI Master mode, clock = 
FOSC/16" eingestellt.

Beim Slave arbeite ich mit "InterruptVectorHigh = 0x08 und if 
(PIR1bits.SSPIF == 1)"

Slave arbeitet auch mit "InterruptVectorLow = 0x18 und if( 
PIR1bits.TMR1IF == 1 )" für periodiche Abfrage

Master:
wieviel Verweilzeit soll zwischen 2 Byte liegen und wieviel zwischen den 
Datenpakete?


Slave:
wird "PIR1bits.SSPIF   = 0;" am Anfang oder am Ende eingesetzt?
z.B.
-->>
if (PIR1bits.SSPIF == 1)
{
PIR1bits.SSPIF   = 0;
... CODE
}
oder
if (PIR1bits.SSPIF == 1)
{
... CODE
PIR1bits.SSPIF   = 0;
}
<<--

Mein Paket aus 10 Bytes besteht nutze ich ein Array. Der Counter wird 
nach dem lesen von SSPBUF um 1 erhöht. wenn alle Bytes übertragen sind, 
setze ich den Counter wieder auf 0.

Wie ist das mit dem Timer Interrupt? Muß ich diesen in der Zeit einer 
Verarbeitung des SPI Interrupt anhalten ? Kann aber auch gut sein, das 
der SPI Interrupt in der Verarbeitung des Timer Interrupt kommt. Was 
dann?

Was ist die Minimalste Zeit für den Timer Interrupt ?

Soll für den Anfang mal reichen.

Gruß Siegfried
Gast #970743
Lesenswert?

Du hast 2 PICs die mit unterschiedlichen Clocks arbeiten und haengst die 
mit SPI zusammen. Nun koennte es Timingprobleme geben wenn man an das 
obere Limit der Geschwindigkeit gehen wollte. Das ist richtig erkannt. 
Muss es denn das obere Limit sein ? Ist die SPI Kommunikation denn 
wirklich so dringend ?  Den Timerinterrupt  waehrend der SPI 
Kommunikation unterbrechen ... Wie oft kommt der Timer interrupt denn ? 
Und was geschieht falls der verzoegert wird ?

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