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. :-?
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?
Du schreibst > wake up 1111 xxxx xxxx xx00 Warum dann > void ssu_transmit(void) >{ > sstdr = 0B00111111; // data present in sstdr register > wait(); > . > .
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) :-/
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.