PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SPI-Soft-Wirrwarr



Lord_Vader
28.12.2014, 00:16
Hi,

nachdem mein rechenproblem erfolgreich gelöst wurde habe ich jetzt noch ein paar fragen, welche ich nicht beantwortet bekomme mit google und der forensuche...

Soft-SPI:
- Mein Clocksignal ist unregelmäßig, also nicht high-low-high-low sondern eher H-L-L-L-H-L-H-L-H-L-L-L-H-L-L-H-L
wie kommt das???
- Das lesen eines Wertes auf dem MCP3201 (ADC) dauert locker 100µs. Das geht doch auch schneller oder nicht? Hat clockrate bei Soft-SPI eine auswirkung? Oder kann ich sonst was ändern? Mein AVR läuft auf 16Mhz
- Ist es besser eine eigene Soft-SPI routine zu schreiben oder eher schwachsinn?

MfG Vader

Peter(TOO)
28.12.2014, 00:48
Hallo Vader,


Soft-SPI:
- Mein Clocksignal ist unregelmäßig, also nicht high-low-high-low sondern eher H-L-L-L-H-L-H-L-H-L-L-L-H-L-L-H-L
wie kommt das???
Die Software muss zuerst das Bit aus einem Byte rausfummeln und die Datenleitung entsprechend setzen.
Dann den Clock Auf H und dann L setzen( mit der LH-Flanke werden die Daten eingelesen).
Dann das nächste Bit rausfummeln ....
Zudem wird das Ganze noch in einer Schleife gemacht, das brauch auch noch etwas Zeit.


- Das lesen eines Wertes auf dem MCP3201 (ADC) dauert locker 100µs. Das geht doch auch schneller oder nicht? Hat clockrate bei Soft-SPI eine auswirkung?
Ich bin jetzt zu faul, das Datenblatt rauszusuchen, um nachzurechnen wie schnell der MCP3201 könnte.
Der Takt hat keine Einfluss, ausser du hast einen schlechten Aufbau und streust dadurch Störungen ein.

,

Oder kann ich sonst was ändern? Mein AVR läuft auf 16Mhz
- Ist es besser eine eigene Soft-SPI routine zu schreiben oder eher schwachsinn?

Das hängt von deinen Fähigkeiten ab!
Das Optimum erreich man mit Assembler, zumindest für die eigentliche Send-Funktion.
Von einem Profi erwarte ich, dass er das in 1-2 Stunden am laufen hat (Also der reine Code ohne Dokumentation), andere können sich damit Tage vergnügen.[/QUOTE]

MfG Peter(TOO)

Klebwax
28.12.2014, 09:24
Ich bin jetzt zu faul, das Datenblatt rauszusuchen, um nachzurechnen wie schnell der MCP3201 könnte.
Der Takt hat keine Einfluss, ausser du hast einen schlechten Aufbau und streust dadurch Störungen ein.

In diesem Fall leider doch. Das interne Timing des Chips hängt nur an der SPI-Clock. Das ist auch der Grund für die beiden Leerbits am Anfang der Übertragung. Es gibt auch einen extra Abschnitt (6.2) im Datenblatt dazu. Dieser Chip wäre nicht meine erste Wahl.

Selber schreiben ist immer gut, üben, üben und nochmal üben. Auch Lord Vader hat mal als Padawan angefangen. ;) Zum Schluß kann man ja immer noch die Library verwenden, weiß aber dann, was da abgeht.

MfG Klebwax

Lord_Vader
28.12.2014, 10:29
@Peter: Du anscheinend auch zu faul? Nach dem DS macht der MCP bis zu 100kilosamplesperf*ckinsecond.
Im moment leider nur 2000 samples/sec...

Das meine ich, bin nich zu faul zum lesen.

Peter(TOO)
28.12.2014, 10:50
Hallo Klebwax,

In diesem Fall leider doch. Das interne Timing des Chips hängt nur an der SPI-Clock. Das ist auch der Grund für die beiden Leerbits am Anfang der Übertragung. Es gibt auch einen extra Abschnitt (6.2) im Datenblatt dazu. Dieser Chip wäre nicht meine erste Wahl.

So, habe jetzt mal nachgelesen.

1. Der Chip kann in minimal 10µs die Daten Übertragen (bei 5V, sonst nur in 20µs)

2. Bei Soft-SPI muss man mit den Interrupts aufpassen! Wenn das Auslesen über 1.2ms dauert, wird das Resultat ungenauer.

MfG Peter(TOO)

- - - Aktualisiert - - -

@Vader

Das meine ich, bin nich zu faul zum lesen.

ICH war zu faul, das Datenblatt rauszusuchen!

MfG Peter(TOO)

Klebwax
28.12.2014, 11:14
2. Bei Soft-SPI muss man mit den Interrupts aufpassen! Wenn das Auslesen über 1.2ms dauert, wird das Resultat ungenauer.

Ich würde das rein in SW machen. Da kann man dann gleich das 12 Bit Format berücksichtigen und spart sich die Rumschieberei danach. Also im Prinzip FIGURE 5-1 nachprogrammieren. Zur Not sperrt man für die paar µs die Interrupte.

MfG Klebwax

Lord_Vader
28.12.2014, 13:11
Bin gerade dabei, interrupts scheinen keine probs zu machen, wird nichts unterbrochen.