Forum: Compiler & IDEs USI Slave im 3-wire-mode mit TINY24 - AVR319


von rolf-harry (Gast)


Lesenswert?

Hallo, habe mir gedacht, über den USI könnte man schön Daten senden, 
z.B. zum Debuggen; dazu hab ich mit einem Mega16 einen SPI-UART Gateway 
nach Appnote 303 gebastelt, dieser Teil funktioniert auch, ich kann mit 
einem PC-Terminalprogramm schön Daten über RS232 zum Gateway senden, und 
die kommen dann am MOSI des Mega16 (USI-Master) raus, und auch am Tiny 
(USI-Slave) an, wie auch das Clock-Signal.

Leider schaffe ich es nicht, die am Tiny empfangenen Daten 
zurückzusenden, am Tiny MISO will einfach nix rauskommen. (das Ding 
ansich sollte aber i.O. sein, schliesslich lässt er sich mit ISP 
programmieren)

Hat jemand schon mal einen Tiny24 als Slave mit avr-gcc zum laufen 
gebracht ?

Grüsse rolf-harry

von A.K. (Gast)


Lesenswert?


von rolf-harry (Gast)


Lesenswert?

Oops, hab ich doch den Code vergessen...
Der Slave soll einfach nur das empfangene Byte hochzählen, und 
zurücksenden.

Grüsse rolf-harry
-------------------------------------------
#include <avr/io.h>

char c;

int main (void)
{
  DDRA |= _BV(DDA5);                      // DO
  PORTA |= _BV(PA4) | _BV(PA6);  // Pull-ups für DI/CLKL

  char c=1;
  // Configure USI to 3-wire slave mode .
  USICR = _BV (USIWM0) | _BV(USICS1) ;

  for (;;){
    USIDR = c++;
    USISR = _BV(USIOIF);
    loop_until_bit_is_set(USISR, USIOIF);
    c = USIDR ;
     }
  return (0);

}
-------------------------------------------

von A.K. (Gast)


Lesenswert?

Sorry, ich hatte 2- und 3-Draht verwechselt.

von rolf-harry (Gast)


Lesenswert?

Trotzdem, Danke, A.K. Hatte das Beispiel schon gesehen, aber habe das 
Gefühl, das ist zu kompliziert für mich.
Ich wollte also bei Null beginnen, der Code-Schnipsel soll die Umsetzung 
des Beispiels aus dem Tiny-Handbuch sein, ganz einfach, ohne Interrupts.
Leider klappt das nicht, wie gesagt, aus dem Slave DO kommt einfach nix 
raus.

von rolf-harry (Gast)


Lesenswert?

Gelöst! Hatte im Makefile einen Fehler! Der Code passt.

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
Noch kein Account? Hier anmelden.