Ув. пользователи MCS-51
Много лет применял инициализацию скорости UART. Потерял 2 дня для адаптации к SiLabs C8051F064 (читать Datasheet было лень) Оказалось, инициализация по-умолчанию НЕ соответствует "классике" Intel MCS-51
For classic MCS-51: Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*12); //if(SMOD==1) K=2; else K=1; T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*32); //K=1;
For SiLabs C8051Fxx: Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*N); //N=1,4,12,48(SysCLC) or N=8(ExtCLC) T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*16*N); //N=1,2,12(SysCLC) or N=8(ExtCLC);
Готового FAQ по отличиям инициализации скорости UART для разных MCU-51 не нашел.
Предлагаю поделиться грустным опытом
|