реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Мультипроцессорный обмен
Oleg_IT
сообщение Dec 19 2005, 12:24
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(andk @ Dec 19 2005, 15:05) *
>6. По приходу прерывания,… и по обнаружения в передаваемом буфере >байта 0xAA перевожу USART на приём, ни чего больше в USART не >посылая.
Хорошо.
Сделай здесь просто запрещение прерывания от передатчика. Но сам передатчик не выключай.
В этом случае у тебя передача должна пройти.



Извиняюсь, а по какому событию мне тогда переводить USART в исходное состояние? По таймауту?
И потом, я считал, что если передача пошла она закончится, как бы я с регистрами не работал. Что, можно остановить передачу на пол байте?
Go to the top of the page
 
+Quote Post
Laptop
сообщение Dec 19 2005, 23:25
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



Вот кусочек моего исходника по мультипроцессорному обмену на RS485 (для slave). Все прекрасно работает. В данном случае пакеты фиксированной длины, контрольная сумма.
Проект для AVR 2313, кварц скорее всего на 8 МГц, проверь по значению делителя.
В определениях найдешь куда у меня подключалось управление драйвером.
Драйвер AD485, если склероз мне не изменяет.
И подправь исходник слегка, я не стал лишние файлы в архив класть.
Если надо могу и схему от проекта поискать...
Прикрепленные файлы
Прикрепленный файл  z.rar ( 2.47 килобайт ) Кол-во скачиваний: 34
 
Go to the top of the page
 
+Quote Post
andk
сообщение Dec 20 2005, 08:54
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Цитата(Oleg_IT @ Dec 19 2005, 17:24) *
Цитата(andk @ Dec 19 2005, 15:05) *

>6. По приходу прерывания,… и по обнаружения в передаваемом буфере >байта 0xAA перевожу USART на приём, ни чего больше в USART не >посылая.
Хорошо.
Сделай здесь просто запрещение прерывания от передатчика. Но сам передатчик не выключай.
В этом случае у тебя передача должна пройти.



Извиняюсь, а по какому событию мне тогда переводить USART в исходное состояние? По таймауту?
И потом, я считал, что если передача пошла она закончится, как бы я с регистрами не работал. Что, можно остановить передачу на пол байте?

Я имел ввиду только один цикл и только для того что бы разобраться, почему не проходит передача.
Если после моего предложения передача прошла, значит ты просто не дожидаешься окончания передачи и тормозишь уарт на всем скаку.
Передачу конечно ты останавливаешь:
UBRRL = 5; <-- тут не нужно ничего писать, один раз при инициализации достаточно.
UCSRB = 0x94; <-- передатчик выкл и еще 9 тх бит в ноль.
UCSRC = 0xC6; <-- тоже что и в первой строчке

Сообщение отредактировал andk - Dec 20 2005, 09:06
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd September 2025 - 10:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016