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


von Santiago (Gast)


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.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


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

von Santiago (Gast)


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.

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.