|
Непонятка с USART в Tiny2313, В протеусе работает, в контроллере нет |
|
|
|
Feb 27 2008, 12:23
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 11-01-08
Пользователь №: 33 988

|
Цитата(defunct @ Feb 27 2008, 15:03)  Неправильно понял. Не 31, а 0x31.
if (rxbuff == 0x31) И так тоже уже пробовал, результат такой же, в протеусе все живет.... а вот на макетке нет...
|
|
|
|
|
Feb 27 2008, 12:27
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
vskЕсли даже в протеусе работает ,то на компе должно по любому пахать. 1 Проверте еще раз правильное ли тактирование. 2 Осцилл + прозвонка схемы ,на своем веку я одних только глюкавых МАХ наколлекционировал пол дюжины.Или один канал не работал или минус не выдавал .Естественно не помешает проверить питание,шнуры,пайку ,дорожки и т.д. Все это решается за 15 минут
|
|
|
|
|
Feb 27 2008, 12:30
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(vsk @ Feb 27 2008, 14:23)  И так тоже уже пробовал, результат такой же, в протеусе все живет.... а вот на макетке нет... sendString("Welcome to Remote Reset\0"); В реальном железе эта строка выводится правильно или криво? если она выводится криво, то приведите, что именно вы получаете в терминале (для наглядности в hex). Цитата Если даже в протеусе работает ,то на компе должно по любому пахать. Протеус это не показатель. но должен согласиться с Вами, что если в симуляторе что-то работает, а в железе нет, может означать проблему тактирования. надо проверить тактируется ли чип реально 4Mhz (а не от 4Mhz / 8), и соответвует ли делитеть для UART'a.
|
|
|
|
|
Feb 27 2008, 12:37
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 11-01-08
Пользователь №: 33 988

|
Цитата(bodja74 @ Feb 27 2008, 15:27)  vskЕсли даже в протеусе работает ,то на компе должно по любому пахать. 1 Проверте еще раз правильное ли тактирование. 2 Осцилл + прозвонка схемы ,на своем веку я одних только глюкавых МАХ наколлекционировал пол дюжины.Или один канал не работал или минус не выдавал .Естественно не помешает проверить питание,шнуры,пайку ,дорожки и т.д. Все это решается за 15 минут  Max232 работает, я ему заворачивал сигнал, контроллер тоже пашет, на своей частоте должно быть, в комп хоть мусор но вижу(вернее текст, но с потерями букв, если убрать полностью прерывание, и сразу в цикле писать в порт, то ни символа не теряется). Если поставить в прерывании подергать ножкой, то тоже работает, значит что то получает.
|
|
|
|
|
Feb 27 2008, 15:28
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 11-01-08
Пользователь №: 33 988

|
Цитата(defunct @ Feb 27 2008, 15:30)  sendString("Welcome to Remote Reset\0"); В реальном железе эта строка выводится правильно или криво? если она выводится криво, то приведите, что именно вы получаете в терминале (для наглядности в hex). Протеус это не показатель. но должен согласиться с Вами, что если в симуляторе что-то работает, а в железе нет, может означать проблему тактирования. надо проверить тактируется ли чип реально 4Mhz (а не от 4Mhz / 8), и соответвует ли делитеть для UART'a. В терминале получаем строку Welcoe to emote Rese - приблизительно этого вида. А делитель uart вроде корректно расчитывается по формуле.
|
|
|
|
|
Mar 25 2008, 06:36
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 11-01-08
Пользователь №: 33 988

|
Цитата(defunct @ Feb 27 2008, 18:33)  1. Попробуйте проверять вместо UDRE, !TXC флаг. 2. Раз символов меньше чем ожидалось можно предположить, что скорость UART'a получилась выше ожидаемых 9600 - попробуйте понизить частоту МК или увеличить значение UBRR. В результате замены еще меньше символов принимаю. Все варианты вроде перепробовал, но на tiny2313 не катят, хотя на atmega всегда работает и работало. Еще такой маленький вопрос, если кварц стоит керамический, может быть большой уход частоты, что работает не корректно?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|