Gast
#114805
Mit dem MSP430 soll über SPI z.B. in einem MAX 1407 (mit integriertem Uhrenbaustein) die Uhr gestellt werden. Dazu habe ich folgendes Programmteil (in C) verwendet: void Sekunden_stellen(void) { char sek_schr = 0xA0, sek=00; // in sek die aktuelle Sekunde eintragen Beispiel: 00 P2OUT &=~BIT5; //mit CS=L --> Freigabe TXBUF0 = 0x9C; //RTC/AL Steuerregister beschreiben Pause(); TXBUF0 = 0x80; // 1000 0000 Pause(); TXBUF0 = sek_schr; Pause(); TXBUF0 = sek; Pause(); TXBUF0 = 0x9C; // RTC/AL Steuerregister schreiben (zurücksetzen) Pause(); TXBUF0 = 0x00; } Obwohl das Stellen funktioniert, stören mich die Pauseschleifen, deren Länge ich durch Probieren ermittelt habe. Wie könnte man das Programm so schreiben, dass immer nur solange gewartet wird, bis der Sendevorgang abgeschlossen ist? Ich hatte es mir so gedacht: TXBUF0 = 0x9C; //RTC/AL Steuerregister schreiben 10 01110 0 while (IFG1&UTXIFG0); TXBUF0 = 0x80; // 1000 0000 while (IFG1&UTXIFG0); . . Geht leider nicht, (einige Sendepakete werden weggelassen) da ich vermutlich mit while (IFG1&UTXIFG0) auf dem Holzweg bin Wie könnte man das Programm ändern, damit immer solange gewartet wird, bis ein einzelner Sendevorgang abgeschlossen ist? MfG Wolfgang