|
tiny2313 UART работает с перерывами. |
|
|
|
Oct 6 2008, 11:30
|
Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719

|
Сделали такую конструкцию: соединили atmega128 и attiny2313 уартами через 485 драйвер. Скорость 9600, на тини кварц - 4.000 МГц. В качестве отладки написал такую программу: с меги постоянно валятся байты на скорости 9600 (осциллографом проверено). На тини создан проект (в codevision avr), в настройках включен усарт с прерыванием. В обработчике усарта вписал только одну строчку: PORTB.6=!PINB.6 По идее на этой ноге должен получиться меандр с частотой приёма символов. На самом деле получается 10 изменений уровня, затем пауза примерно 25 мс. В чём может быть проблема?
|
|
|
|
|
 |
Ответов
|
Oct 6 2008, 12:33
|
Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719

|
Цитата(gormih @ Oct 6 2008, 16:27)  Протокол обмена какой? Что там передается - непрерывный поток? В смысле, протокол? Байт данных передаётся командой putchar, соответственно по прерыванию этот байт принимается тини. Или я чего-то ещё не сделал? Цитата(Alexis25 @ Oct 6 2008, 15:30)  Сделали такую конструкцию: соединили atmega128 и attiny2313 уартами через 485 драйвер. Скорость 9600, на тини кварц - 4.000 МГц. В качестве отладки написал такую программу: с меги постоянно валятся байты на скорости 9600 (осциллографом проверено). На тини создан проект (в codevision avr), в настройках включен усарт с прерыванием. В обработчике усарта вписал только одну строчку: PORTB.6=!PINB.6 По идее на этой ноге должен получиться меандр с частотой приёма символов. На самом деле получается 10 изменений уровня, затем пауза примерно 25 мс. В чём может быть проблема? Поправка: меандр должен быть с частотой приёма БАЙТОВ.
|
|
|
|
|
Oct 6 2008, 13:17
|
Участник

Группа: Новичок
Сообщений: 16
Регистрация: 4-10-08
Пользователь №: 40 693

|
Цитата(Alexis25 @ Oct 6 2008, 16:33)  Поправка: меандр должен быть с частотой приёма БАЙТОВ. Поменьше ! в 2 раза и еще меньше за счет стартов стопов. Подробное описание подключения и программирования UART - http://www.radiokot.ru/forum/viewtopic.php?t=11048Вот так: PORTB.6 ^= 1; или так: PORTB.6 ++; Почетче будет пахать, так как не будет зависеть от того что конкретно на ноге есть. Цитата(Alexis25 @ Oct 6 2008, 15:30)  На тини создан проект (в codevision avr) Вот и приложите его архивчиком. А 2 МК (и больше и разных ядер) вы можете в PROTEUS отлаживать виртуально.
|
|
|
|
|
Oct 6 2008, 13:18
|
Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719

|
Цитата(hainiken @ Oct 6 2008, 17:14)  Поменьше ! в 2 раза и еще меньше за счет стартов стопов. Подробное описание подключения и программирования UART - http://www.radiokot.ru/forum/viewtopic.php?t=11048Ну не суть, меандр-то должен быть равномерным. А наблюдаются периодические паузы.
Сообщение отредактировал Alexis25 - Oct 6 2008, 13:21
Прикрепленные файлы
2f.zip ( 31.83 килобайт )
Кол-во скачиваний: 45
|
|
|
|
|
Oct 6 2008, 13:24
|
Участник

Группа: Новичок
Сообщений: 16
Регистрация: 4-10-08
Пользователь №: 40 693

|
Цитата(Alexis25 @ Oct 6 2008, 17:18)  Ну не суть Ну просто вы отдельный пост поправке посвятили - хотя символ это и есть байт при 8N1 - т.е. обычно. Цитата(Alexis25 @ Oct 6 2008, 17:18)  меандр-то должен быть равномерным. А наблюдаются периодические паузы. Исходник нужно зырить. UDR не нужно считывать чтоб он освобождался ? ===== Попробуйте драйвер 485 убрать и соединить напрямую UART через резиторы 1 кОм если МК рядом.
|
|
|
|
|
Oct 6 2008, 13:47
|
Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719

|
Цитата(hainiken @ Oct 6 2008, 17:24)  Ну просто вы отдельный пост поправке посвятили - хотя символ это и есть байт при 8N1 - т.е. обычно. Исходник нужно зырить. UDR не нужно считывать чтоб он освобождался ?
===== Попробуйте драйвер 485 убрать и соединить напрямую UART через резиторы 1 кОм если МК рядом. Странно, без драйвера работает. По крайней мере сейчас. Спасибо, буду копать дальше.
|
|
|
|
|
Oct 13 2008, 22:14
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Alexis25 @ Oct 6 2008, 16:47)  Странно, без драйвера работает. По крайней мере сейчас. Спасибо, буду копать дальше. Цитата Нет, он пауз не создаёт. Появляются именно после интерфейса. Подозреваю, что это 50 Гц. Значит нужно искать в самом 485 передатчике. В передатчике сигнал "разрешение передачи" всегда активен? или активируется непосредственно перед передачей очередного байта? Если активируется, то учтена ли задержка переключения режима работы ?
|
|
|
|
Сообщений в этой теме
Alexis25 tiny2313 UART работает с перерывами. Oct 6 2008, 11:30      smac Цитата(Alexis25 @ Oct 6 2008, 17:47) Стра... Oct 6 2008, 15:17 SysRq Читаем:
Цитата(Alexis25 @ Oct 6 2008, 15... Oct 6 2008, 15:33 Alexis25 Цитата(SysRq @ Oct 6 2008, 19:33) Читаем:... Oct 7 2008, 06:37  SysRq Цитата(Alexis25 @ Oct 7 2008, 10:37) Это ... Oct 8 2008, 18:00   Alexis25 Цитата(SysRq @ Oct 8 2008, 22:00) ТЫЦ, с ... Oct 9 2008, 06:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|