mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik brauche Hilfe :- R8C1B mit SSU


Autor: weissvonnix (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bräuchte ein wenig Hilfe.

Mein 'Material' :
- R8C1B RSK dazu DACs und noch zwei drei Schalter
Mein Vorhaben :
- R8C1B soll via SSU die beiden DACs ansteuern
- die Schalter will ich ganz normal mit nem PIN ansteuern (ein/aus)
- dazu noch den integrierten AD Wandler nutzen
Mein Problem :
Abgesehen davon, dass µController Neuland für mich sind ist mein Problem 
: SSU, irgendwie klappt das nicht. Habe einen DA der grob zwei 
Anweisungen versteht, je 16 Bit (MSB -> LSB):
1. wake up 1111 xxxx xxxx xx00
2. set/update 0000 12-bit-code
Angehangen meine Main , da wollt ich den DA nur 'aufwecken' und 
irgendein Wert ausgeben lasse. Aber es kommt nix raus aus dem DA :-( Als 
CS für den DA hab ich P1_2 genommen.

:-?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit SSU meinst du Syncron Serial Unit , oder?
Was hast du denn für einen DA?
Was zeigt denn dein Oszi an, wenn du mal an der Schnittstelle mist?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schreibst

> wake up 1111 xxxx xxxx xx00

Warum dann

> void ssu_transmit(void)
>{
>  sstdr = 0B00111111;  // data present in sstdr register
>  wait();
>       .
>       .

Autor: weissvonnix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

1. hab leider kein oszi hier :-( und ja, SSU ist das clocksynchronous 
serial interface with chip select (also SPI), habe einen MAX5712 
http://pdfserv.maxim-ic.com/en/ds/MAX5712.pdf

2.
> ich schrieb :

>> wake up 1111 xxxx xxxx xx00

> Warum dann

>> void ssu_transmit(void)
>>{
>>  sstdr = 0B00111111;  // data present in sstdr register
>>  wait();
>>       .

ich dachte, damit würde ich xxxx xx00 schicken? oder tue ich das damit 
nicht ? also die Bit 0 bis 7 für das wake up. Und ich kann ja sehen, 
dass die Bits dann im SSTDR stehen, werden die dann automatisch 
geschickt? leider sehe ich das Shift register nicht (sstrsr) :-/

Autor: Judge (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe Dein Programm mal dahingehend angepasst, dass es den MAX5712 
korrekt anspricht. Wenn Du "0B00111111" in das Register sstdr 
hineinschreibst, kommt natürlich "11111100" heraus (LSB first).

Auf die Bitzuweisungen solltest Du bei der SSU verzichten, da der 
Compiler hieraus zwangsläufig bit-Befehle ("bset...", "bclr...") 
generiert. Da dies read-modify-write-Instruktionen sind verstösst Du 
damit gegen die Usage Notes der SSU ("After waiting three instructions 
or more after writing to the registers associated with clock synchronous 
serial I/O with chip select or four cycles or more after writing to 
them, read the registers.").
Die 10 "nop" Wartezeit sind auch etwas kurz definiert sofern die CPU mit 
vollem Takt läuft. Es ist besser die entsprechenden Flags abzufragen um 
zu schauen ob die SSU wieder übertragungsbereit ist (TEND bzw. TDRE).

Gruss,
Judge

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.