dccharacter » 07 фев 2012, 12:59
Что-то наступил на какие-то странные грабли - собирал скелет под новый проект, настроил USART. Прога сразу после сетапа всего харда шлет в УСАРТ "Хеллоу Ворлд!!!". А в терминал прилетает "еллоу Ворлд!!!". Все последующие отправки идут ок, символы не теряются. В режиме пошаговой отладки первая буква не теряется. Это наводит на мысль, что просто периферия не успевает стартануть. Есть ли какой-то флаг готовности у УАРТА (я совершенно наугад попробовал USART_FLAG_IDLE, но ессно это ни к чему не привело)???
Все флаги после инициализации клоков проверяются, все ОК. После того как прога входит в главный цикл все работает замечательно. Проблема только в первом символе, следующим за инициализацией...
Duhas » 07 фев 2012, 14:24
мб выкакивать туда пустоту? хотя это конечно заплатка.. а не решенеие.. сам не люблю, но мб другого выхода и нет..
dccharacter » 07 фев 2012, 15:25
Duhas писал(а):мб выкакивать туда пустоту? хотя это конечно заплатка.. а не решенеие.. сам не люблю, но мб другого выхода и нет..
Я почему-то не догадался погрешить вчера на мой новый переходник. Сегодня бас-пайратом посмотрю....
Странно, ведь уже раз пять делал и все было ОК с УАРТОМ. Мож вчера опять день невезения был. Ни уарт ни и2ц не заработали
))
Montoya » 07 фев 2012, 17:15
- Код: Выделить всё • Развернуть
// Config Printf to USART1
int fputc(int ch, FILE *f)
{
// Loop until the end of transmission
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
USART_SendData(USART1, (uint8_t) ch);
return ch;
}
Я так делал для настройки printf на прием данных через UART. Когда ожидание готовности стояло после USART_SendData, тоже терялся 1й символ. Проц тот же)
dccharacter » 07 фев 2012, 19:56
Хм... Вот тоже - чо сам не допер? В i2c-шных функциях на ПИКе у меня именно так и есть все... Спасибо!
Добавлено спустя 2 часа 19 минут 43 секунды:
Да, это было оно. Спасибо Montoya!