pic18f45k22 eusart ペリフェラルを介してシリアルを送信しようとしています。クロックが 16Mhz で動作している場合、メッセージは期待どおりに正確に送信されますが、PLL をオンに設定すると (発振器が 64Mhz で動作するように)、フレーミング エラーが発生します。
新しいクロック周波数に合わせて SPBRG レジスタを変更し、ボーレート ジェネレータを 16 ビット モードと 8 ビット モードの両方に変更しようとしましたが、うまくいきませんでした。
現在のコード:
OSCCONbits.IRCF = 0b111; //change Fosc to 16Mhz
OSCTUNEbits.PLLEN = 1; //enable PLL to multiply Fosc by 4
/*Set baud rates and related registers*/
/*For BRG16 = 1 and BRGH = 1, Baud rate = Fosc/(4([SPBRG:SPBRGH]+1)) */
SPBRGH1 = 0; //Set Baud rate control regs to 34 to give baudrate of 115.2k
SPBRG1 = 138;
BAUDCON1bits.BRG16 = 1; //16 bit mode (baudrate generator)
TXSTAbits.BRGH = 1; //Set high speed baud rate
事前に感謝します、Huggzorx