SPI Slave über USI bei ATtiny4313

OP #2518562
Moin,

ich möchte einen ATtiny4313 als SPI-Slave über USI mit einem anderen 
ATmega kommunizieren lassen. Die Geschwindigkeit soll dabei mit clk/2 
ablaufen (also dem Maximum). Dabei möchte ich pro Kommunikation 2 Byte 
hintereinander übertragen. Jedoch ist mir aus dem Datenblatt nicht 
wirklich klar, wie das zu erfolgen hat. Meine beiden Bytes stehen dabei 
in R16 und R17.
Also zunächst warte ich auf eine fallende Flanke am SlaveSelect (SS) 
Pin:
1
  ldi  R18, (1<<USIOIF)
2

3
wait_for_SS:
4
  sbic  USI_DDR, USI_SS      ; Skip if SlaveSelect is low
5
  rjmp  wait_for_SS
Sobald das geschehen ist, lade ich das erste Datum in USIDR:
1
  out  USIDR, R16        ; write first byte in Shift-Register
Jetzt müsste ich ja eigentlich warten, bis USIOIF-Flag gesetzt ist:
1
  out  USISR, R18
2
loop:
3
  in  R16, USISR
4
  sbrs  R16, USIOIF
5
  rjmp  loop
doch wie mache ich das mit dem zweiten Byte? Wenn ich jetzt wieder
1
  out  USIDR, R17        ; write second byte in Shift-Register
2
  out  USISR, R18
aufrufe, dann sind das ja schon zwei Takte, abgesehen davon, dass die 
loop-Schleife ja auch nicht direkt nach dem letzen Takt beendet ist.

Habt Ihr da eine Idee/implementation, wie man das besser machen könnte? 
Oder hilft da wirklich nur 2x1 Byte lesen?
Vielen Dank im Voraus!!!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.