PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Software SPI



simple
25.08.2006, 10:34
Hi,

ich möchte gerne ein Software SPI für meinen Atmega16 realisieren. Bisher habe ich leider keine entsprechenden Infos gefunden. Mir würde vorerst nur die Senderichtung genügen.
Hat jemand schon erfahrung wie ich einen solchen Datenstrom erzeugen kann, oder kann mir jemand Tips geben? Einen Takt zu erzeugen, das gelingt mir noch, aber wie ich dann die Datenworte mit dem Takt synchronisiere etc. ist mir schleierhaft.

Vielen Dank,
simple.

m.a.r.v.i.n
25.08.2006, 10:49
Hi simple,

schon mal im RN-Wissen nachgeguckt.
Hier gibt es ein Beispiel:
https://www.roboternetz.de/wissen/index.php/Portexpander_am_AVR#Ohne_SPI-Hardware

Gruß m.a.r.v.in.

simple
25.08.2006, 11:01
Hey super. Danke für die Ersthilfe. Das habe ich garnicht gefunden. Ich werde es mir mal zu Gemüte führen und sehen, dass ich zurecht komme.

simple
25.08.2006, 12:40
Ok. Der Code "SPI-Ohne Hardware" ist soweit ich das sehe genau das was ich brauche.
Allerdings verstehe ich die Zeile

unsigned char* serp = serpa+SERPA_SIZE;
nicht. serpa ist doch ein Array. Deswegen müsste doch zumindest &serpa o.ä. dastehen?

m.a.r.v.i.n
25.08.2006, 12:58
denke, das ist OK so.
serpa ist hier ein Zeiger auf das Array, besser gesagt auf &serpa[0].
serp zeigt dann auf das Ende des Arrays. Alles ganz normale C Zeigerarithmetik.

C ist wunderbar (sonderbar) :wink:

Gruß m.a.r.v.i.n

SprinterSB
25.08.2006, 13:21
Das Array serpa wird vom Ende nach vorne hin durchlauften, und zwar mit dem Zeiger serp, der auf Element *hinter* serpa initialisiert wird! (also serp = &serpa[SERPA_SIZE]).

Da der Zugriff über foo = *--serp (oder so) geschieht, wird als erstes serpa[SERPA_SIZE-1] gelesen.