Pic 18f4520 SPI-BF-flaggan

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1358
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Pic 18f4520 SPI-BF-flaggan

Inlägg av baron3d »

Min Pic vill inte stanna och vänta tills mottagningen är klar.
Har svurit åt PIC-fn, och det hjälper inte.
Använder Mickrochips C18-kopilator och SPI-bibliotek.
Har läst i berörda errator. Har modifierat koden i enlighet efter dessa.
Problemet kvarstår. Lägger jag till en lämplig fördröjnings loop är det inga problem. HJÄLP
Dessa kod-snuttar har jag provat.

Kod: Markera allt

do{
   spi_tmp_reg=SSPSTAT;
} while( (spi_tmp_reg&1u)==0u );

Kod: Markera allt

while( !SSPSTATbits.BF );
Har provat med att deklarera spi_tmp_reg som "volatile unsigned char"
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Är du säker på att BF var "nollad" sedan förra byten togs emot ?
Jag har för mig att man alltid måste läsa motttagningsregistret även när
man bara har sänt, eftersom en byte alltid tas imot automatiskt samtidigt
som man skickar.

Så prova med att alltid läsa mottagningsregistret (även om det bara är
en dummy-läsning) mellan varje operation, oavsett om det var sändning
eller mottagning. Detta resetar BF flaggan.

Om jag har förstått det rätt... :-)
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1358
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Inlägg av baron3d »

Tack sodjan, det skall jag pova.
Har tittat i MCC18:s lib, För att skriva en sträng.
Dom litar tydligen bara på BF-flaggan.

Kod: Markera allt

void putsSPI( unsigned char *wrptr )
{
  while ( *wrptr )                // test for string null character
  {
     SSPBUF = *wrptr++;           // initiate SPI bus cycle
     while( !SSPSTATbits.BF );    // wait until 'BF' bit is set
  }
}
Insatt senare:
Tack igen. Det fungerar bra. :D
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Dom litar tydligen bara på BF-flaggan.

Jag vet inte vad de gör, men läser de inte mottagningsregistret
också fär att nolla BF ?

Jag tror också att man kan "lita" på BF-flaggan, förutsatt att man nollar
den på rätt sätt.
Skriv svar