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
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); } -------------------------------------------
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.