www.mikrocontroller.net

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


Autor: rolf-harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: rolf-harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich hatte 2- und 3-Draht verwechselt.

Autor: rolf-harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: rolf-harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gelöst! Hatte im Makefile einen Fehler! Der Code passt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.