Hallo Ich versuche gerade herauszufinden, wie schnell man mit dem Atmega-SPI Daten übertragen kann. Hab ins Datenblatt des Mega32 geschaut, eine konkrete Datenrate findet man da nicht - lediglich ein Register für die Prescaler-Einstellung: SCK = Taktfrequenz / x Stimmt die Annahme, dass pro SCK ein Bit übertragen wird? D.h., bei 16 MHz und einem Prescaler von 2 würde ich eine Datenrate von 1 Megabyte/s erreichen? Gruss Michael
> Stimmt die Annahme, dass pro SCK ein Bit übertragen wird? D.h., bei 16 > MHz und einem Prescaler von 2 würde ich eine Datenrate von 1 Megabyte/s > erreichen? Ja, sofern Du die Daten schnell genug anliefern kannst ...
> Ja, sofern Du die Daten schnell genug anliefern kannst ...
In aller Regel werde ich hier ja entweder ein Interrupt oder eine
Flag-pollende Schleife machen, und dann jeweils sobald ein Byte 'raus
ist, das nächste ins Datenregister schreiben. Da dürfte also schon
einiges an Overhead anfallen. Alternativ könnte ich bei dieser hohen
Datenrate den Code für das SPI auch direkt in den Datenberechnungscode
einbinden und die Takte abzählen.
Trotzdem, da wird einiges an Overhead entstehen. Aber für eine
uC-zu-uC-Verbindung scheint mir SPI doch ähnlich schnell als eine
handgemachte 8-Bit-Port-zu-Port-Datenübertragung.
Hallo, Du hast 8 Takte Zeit für ein Byte. Davon gehen 2-3 dafür ab, das Byte aus dem Ram zu holen und ins SPI-Register zu schreiben. Bleiben noch 5. Wenn Du jetzt noch das Flag auswerten willst, sind mindestens 2-3 weg, also noch 2 für andere Aufgaben... Naja, IRQ fällt hanz aus, der braucht schon 4 für reti, Aufruf müßte ich schauen, wohl auch 4. Das meinte er mit schnell genug liefern. Gruß aus Berlin Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.