Я работаю с устройствами PIC18 и в настоящее время использую компиляторы MCC18 и PICC18.Несколько недель назад я заметил, что периферийные заголовки для PICC18 неправильно отображают макрос Busy2USART () на бит TRMT вместо бита TRMT2.Это вызвало у меня сильные головные боли на короткое время, прежде чем я обнаружил проблему.Пример, простая передача:
putc2USART(*p_value++);
while Busy2USART();
putc2USART(*p_value);
Когда макрос Busy2USART () был неправильно отображен на бит TRMT, я никогда не ожидал байтов, чтобы покинуть регистр сдвига, потому что я отслеживал неправильный бит.Прежде чем я понял неточный заголовочный файл, единственный способ успешно передать байт через 485 - это подождать 1 мс между байтами.Моя скорость в бодах была 91912, и задержки между байтами убили мою пропускную способность.Я также предлагаю реализовать средства обнаружения столкновений и контрольные суммы.Контрольные суммы дешевы, даже на PIC18.Если вы можете прослушивать свои собственные передачи, сделайте это, это позволит вам быть в курсе коллизий, которые могут возникнуть в результате дублирования адресов в одной и той же петле и неправильных временных интервалов.