SIO3,4 beim M16C

Gast #301456
Lesenswert?
• ▲
▼
Hallo zusammen,

in den M16C-Controllern von Renesas, bei mir speziell auf dem M16C29,
gibt es zwei serielle Schnittstellen SIO3,4. Das Versenden klappt
wunderbar, nur weiss ich nicht wie ich empfange. Das Versenden wird
durch Schreiben in das Sende/Empfangs-Register initiiert.
Wie kann ich nun empfangen wenn der Takt nur solange aktiv ist wie ich
etwas in das Register schreibe?
Hat schon jemand mit dieser Art von Schnittstellen Erfahrung gemacht
und kann mir ein Hinweis geben?

Gruß an alle
Gast #301457
Lesenswert?
• ▲
▼
Hi,

du musst ein sogenanntes Dummy-Byte rausschicken um für das empfangene
Gerät Takte erzeugen, dabei etwas warten bis die Takte durch sind (Die
Wartezeit ergibt sich aus der Baudrate). Ich habe mal meine Ansteurung
für einen 12-Bit AD-Wandler (==> bei 8Byte Datenbreite auf 2mal
holen)in Pseudocode geschrieben:
(s3trr = sio3 transmit receive register), ADC_COM=Kommando Byte als
define

ADC_ON                          //Chip select für ADC low -->aktiv
wait_s(15);              //kurz warten  bis ADC initialisiert
s3trr = ADC_COM;               //Kommando schicken (Kanal,conf. usw.)
wait_s (15);                //warten bis draußen
High Byte = s3trr;           //High Byte reinholen
s3trr     =  DUMMY_BYTE;        //dummy (irgendwas)f. 8 weitere Takte
wait_s (15);                //warten bis 8 Takte rum
low Byte = s3trr;           //low Byte holen
ADC_OFF                  //Chip Select geht high --> inaktiv

Ist Anfangs ein Problem die Zeiten festzulegen, ein Oszi hilft, falls
vorhanden.

Ich hoffe es hilft ein wenig
Grüße Ralph
Gast #301458
Lesenswert?
• ▲
▼
Hallo,

Danke schon mal für die Antwort, aber es funktioniert immer noch nicht.
Ich verstehe nicht, dass du nachdem du den Befehl raus schickst gleich
wieder einliesst, du musst doch erst den Dummy schicken um Takte zu
erzeugen?
Kann es an den Einstellungen liegen? Was hattest du für Einstellungen?
Bei mir geht es um ein serielles EEPROM von Microchip (25AA256).
Ich hoffe ich habe einen Geistesblitz übers Wochenende.

Gruß an alle
Gast #301461
Lesenswert?
• ▲
▼
Hi,

sorry, das hat jetzt länger gedauert, ich war unterwegs. Nochmal etwas
ausführlicher:

s3trr = ADC_COM;
//Kommandobyte wird über SIOout rausgetaktet. Wandler schickt
gleichzeitig High Byte der letzten Wandlung über SIOin rein.
Ansprechbar ebenfalls über s3trr (Gleicher Name für IN und OUT, CPU
unterscheidet beim lesen und schreiben).
wait_s (15);                //warten
High Byte = s3trr;
//abholen bis reingetaktet (Takt ist der Schreibtakt vom Kommandobyte)
//Hier fertig mit HighByte. Wandler hat aber noch 4 weitere. Also:

s3trr     =  DUMMY_BYTE;    //dummy (irgendwas)f. 8 weitere Takte
//Wandler schickt mit den Schreibtakten die 4 lowBits der letzten
//Wandlung
wait_s (15);                //warten bis 8 Takte rum
low Byte = s3trr;           //low Byte holen. Fertig.


Drei Dinge sind vielleicht verwirrend:
1. SIO In und Out über den gleichen Namen anzusprechen. Intern sind das
natürlich verschiedene Register.
2. Der Wandler hat nochmal einen eigenen Wandel-Takt, der deutlich
höher ist als der Schiebetakt.
3. Man erhält immer das Ergebnis der letzten Wandlung. Da muss man sehr
aufpassen. Besonders am Anfang und bei Kanalwechsel. Also:
Kommunikation1 gibt das Ergebnis für Kommunikation2 vor.

So ich hoffe Du bist nicht allzu verwirrt. Bei mir hats auch eine Zeit
gedauert bis das alles lief. Deshalb nur Mut und ein bisschen
rumspielen, Zeiten ändern usw. Oszilloskop zur Hand? Dann die Sende und
Empfangsleitung abhören.

Viel Erfolg und Grüße Ralph

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.