Forum: Mikrocontroller und Digitale Elektronik Allgemeine Fragen zu SPI


von Siegfried S. (dieleena)


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

von Siegfried S. (dieleena)


Lesenswert?

Hallo guten morgen,

Wer kann mir hierzu Infos geben ?

Gruß Siegfried

von so nicht (Gast)


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 ?

von Siegfried S. (dieleena)


Lesenswert?

Hallo,
Master habe ich geänder in "FOSC/64"
"Timer interrupt" Slave war 100 µs, habe dieses auf 1 ms geändert.
Dieser wird genutzt, um periodich die Taster abzufragen.
Gruß Siegfried

von Ralph (Gast)


Lesenswert?

Möglich wäre zb eine zusätzliche Verbindung der beiden µC mit der der 
slave dem Master "mitteilen" kann das er für das nächste Byte bereit 
ist.

Stichwort: Busyline

von Siegfried S. (dieleena)


Lesenswert?

hallo,
"Möglich wäre zb eine zusätzliche Verbindung der beiden µC mit der der
slave dem Master "mitteilen" kann das er für das nächste Byte bereit
ist.
"
leider nicht Möglich. Hardware besteht schon.

Gruß Siegfried

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.