Huhu
Ich habe bei meinem aktuellen Projekt das folgende Problem:
Beim USCI_A0 (als UART) und ADC12 werden die TXIGF bzw. ADC12IFG nicht
gesetzt wenn ich die flags polle. Die flags werden jedoch problemlos
gesetzt, wenn ich stattdessen mit wait() eine runde Däumchen drehen
lasse und nachher mit dem Debugger die Register ansehe...
1 | int fputc(int _c, register FILE *_fp)
|
2 | {
|
3 | // while(!(UCA0IFG&UCTXIFG)); // <- funzt nicht!
|
4 | wait(1000); // <- funzt!
|
5 | UCA0TXBUF = (unsigned char) _c;
|
6 | return((unsigned char)_c);
|
7 | }
|
1 | int get_ADC()
|
2 | {
|
3 | // [set up ADC12...]
|
4 | ADC12CTL0 |= ADC12ENC | ADC12SC;
|
5 | // while( !(ADC12IFG & ADC12IFG0) ); // <- funzt nicht!
|
6 | wait(2500); // <- funzt!
|
7 | // [etc...]
|
8 | }
|
Beide Funktionen funktionieren so - wenn auch nicht sonderlich schnell,
da die wait-Werte übervorsichtig gross gewählt wurden.
Beim I2C gibts dieses Problem auch, aber dort scheint noch einiges
anderes im Argen zu liegen (u.A. wird UCBUSY nicht gelöscht). Was
ebenfalls komisch ist, da ich den Code von einem F2132 portiert habe
(Register und Pins angepasst), wo er problemlos funktioniert hat...
Danke schon im Voraus für eure Tipps!
--Sandro