роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Без описания
trail777 Post Id


Рядовой


Сообщений всего: 1
Дата рег-ции: Сент. 2011  



Задача: дополнить (видоизменить) код на С (в CodeVisionAvr) , чтобы получить работу функций приема/передачи (getchar, putchar) по RS485. Тестирование функций - с помощью терминала по схеме: Комп/RS232/RS485==========RS485/ USART0 MEGA2560.

Исходные данные:
1)Работающий на прерываниях RX Complete, TX Complete (проверенный на железе) автоматич. код программы обмена по RS-232. Комп/RS232==================RS23 2/USART0 MEGA2560.

2)Собранная схема: Комп /RS232/RS485==========RS485/USAR T0 MEGA2560 (считаем что аппаратная часть схемы работает). Переключение прием/передача с помощью вывода PE7.

Задача: дополнить (видоизменить) код, чтобы получить работающие ф-и putchar(), getchar() в CV_AVR с интерфейсом RS485 (для тестирования функций получения/отправки символа с помощью терминала).

При переделке кода возможно потребуются:
- прерывание USART0_UDRE в добавок имеющимся USART0_RXC, USART0_TXC. (в коде уже присутствует функция обработчика в закомментированном виде).
- идентификаторы включения приема/передачи(TX() и RX() (уже описаны в коде)
- внесение паузы между приемом и передачей размером 1mc (2mc). //по совету Ю.Ревича t(сек)=1*10/9600, где 10 число бит в посылке, 9600 скорость обмена//

Столкнулся с трудностями при реализации. Буду признателен, кто поможет решить данную задачу.
Скачать файл: CodeVision_RS232.c
Скачан раз: 201
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



trail777 пишет:
Задача: дополнить (видоизменить) код, чтобы получить работающие ф-и putchar(), getchar() в CV_AVR с интерфейсом RS485 (для тестирования функций получения/отправки символа с помощью терминала).

Приём ( getchar()) ни чем не отличается. А вот что бы передать символ с помощью putchar() надо
1. открыть передатчик,
2. передать данные,
3. дождаться конца передачи (по флагу),
4. закрыть передатчик.
5. сбросить флаг конца передачи.
6. можно осуществлять приём.
Я делаю так:
CODE:

PORTD.2=1; // открыть передатчик в вашем случае TX()
putchar(символ); // передать запрос
while(!UCSRA.6); // ждать конца передачи
PORTD.2=0; // закрыть передатчик в вашем случае RX()
UCSRA = (1<<6); // сбросить флаг конца передачи
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru