www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage USI-Schnittstelle bei Tina2313


Autor: Santiago (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche für einen Freund eine Firmware zu stricken und hänge 
irgendwie in der Luft. Ich selbst habe (noch) keine Ahnung von Hardware 
- ich verschicke die jeweilige Firmware nur per email und bekomme die 
Testergebnisse auch per email.

Für entsprechende Nachsicht Eurerseits wäre ich sehr dankbar :)

Das Protokoll läuft in 2 Schichten ab. Eine Schicht schiebt jeweils nur 
ein Byte raus, die andere Schicht kümmert sich um die Bitreihenfolge und 
deren Bedeutung.

Die USI-Schnittstelle läuft im TWI-Modus, weil die Datenleitung für 
Schreib- und Leseoperation verwendet werden soll.

Dafür setze ich USITC und USIWM1 auf 1, USIWM0 auf 0. Beide USICS sind 
auf 0 - also Softwareclock. Clock liegt im Ruhezustand auf High und für 
ein Byte soll Clock 8mal auf Low gezogen werden.
Der Oszi-Mitschrieb sieht für Clock so aus wie gewollt.

Leider bekomme ich auf der Datenleitung keinerlei Pegeländerung.
Beide Leitungen habe ich über DDR als Ausgang geschaltet und externe 
Pullups sind dran.

Bin für jeden Tip dankbar.

Autor: Alex Bürgel (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen!

1. Wie groß sind die Pull-Ups?
2. Vielleicht eine dumme Frage, aber hast du vorher auch Daten ins 
USI-Datenregister (USIDR) geschrieben?
3. Wie erzeugst du das Clock-Signal? Durch Veränderung des 
entsprechenden PORT-Bits oder über das Clock-Strobe-Bit USICLK?

Schöne Grüße,
Alex

Autor: Santiago (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,

vielen Dank für Deine Aufmerksamkeit.

zu 1: Mit 4K7 haben wir angefangen - jetzt bin ich aber nicht 
informiert, ob mein Freund da selbst schon experimentiert hat.

zu 2: ein weiser Mann meinte mal, es gibt keine dummen Fragen :)
Yep. Gerade nochmal kontrolliert - hätte ja sein können, dass ich es mit 
auskommentiert hätte ...

zu 3: ich habe 2 defines:
#define COMM_CLOCK_LOW  (1 << USIWM1 | 1 << USITC)
#define COMM_CLOCK_HIGH (1 << USIWM1 | 1 << USITC | 1 << USICLK)

und weise die abwechselnd dem USICR zu.

In der Initialisierung setze ich beide Pins als Ausgang und setze Clock 
über PB7 auf High.

Wenn jetzt das USI-Modul den Start mit fallender Flanke nicht 
unterstützt, hätte ich wenigstens erwartet, dass die Bits eine halbe 
Periode versetzt rauspurzeln, aber tote Hose habe ich nich erwartet.

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.