Bei fsys/2 ohne ISR's, was wohl logischer wäre und einem Code der
meistens 512 Bytes auf einmal senden/empfangen wird sieht es so aus:
1.) 1 Byte ans/vom SPI = 1 Takt
2.) 16 Takte warten dann jump 1.)
Zwischen 1.) und 2.) können nun aber andere Befehle ausgeführt
werden,zb. das nächste Datenbyte holen oder das empfangen Datenbyte
speichern, einen Zähler inkrementeren oder eine Prüfsumme über die
Daten berechnen. Man wird also minimal 16 Takte pro Byte benötigen,
macht 2 Takte pro Bit.
Bei Software SPI mit gleichem Takt dann so:
1.) Clock togglen 2 Takte
2.) datenbit setzen mit Branch 4 Takte
3.) Shift Datenbyte, 1 takt
4.) Schleife für 8 Bits, 2 Takte
5.) alle 8 Bits neues Datenbyte holen 1 Takt
6.) Zeiger für Datenbyte inkrementieren 1 Takt
macht ca. 8.4 Takte pro Bit.
Ergo HW SPI sollte mehr als 4 mal schneller sein.
Gruß Hagen