-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Реализация обмена информацией по USART #10
Comments
Программная реализацияСм. #14. Рекомендуемый протокол приема-передачиПриемВ силу редкости приема информации и наличия вероятности пропустить командное слово рекомендуется применить следующий протокол для передачи данных с компьютера на процессор.
Здесь Слова При получении процессором двух одинаковых командных слов он ждет получения всех аргументов и двух слов завершения команды. В случае успеха команда выполняется. В случае неудачи все прочитанные данные игнорируются. Следующий полученный байт интерпретируется как команда. Процесс повторяется. Поскольку на практике не требуется наличие более чем двух-восьми команд, разумно отвести младшие один-три бита командного слова под тип команды, а первые семь-пять бит под маркер команды (префикс). Тогда вероятность интерпретировать случайное слово как команду падает. Пусть команда имеет префикс из шести бит (например, Завершающее слово может как повторять командное слово, так и быть произвольной функцией он него. Например, все или некоторые биты префикса или целого слова могут быть инвертированы. К реализации предлагается использовать инверсию целого слова. Возможена реализация более сложных схем передачи информации, в т.ч. с изменением настроек Поскольку размер пакета примерно равен 8 (четыре управляющих слова и четыре аргумента), целесообразно выбрать формат входного буфера равным примерно 16. ПередачаДля передачи данных (отсчетов АЦП и подтверждения исполнения команд) рекомендуется использовать тот же формат, что и для приема, однако отправлять данные не каждый программный цикл, а каждые В общем случае размер выходного буфера должен быть порядка 32, поскольку кроме данных с АЦП будут передаваться еще и подтверждения исполнения команд. Команды и данныеЦелесообразно предусмотреть следующие команды:
Ответными данными можно отправлять:
|
Для реализации указанного требуется также и проверка переполнения выходного буфера. Вердикт: к реализации. |
Реализована проверка статуса записи в выходной буфер. Можно закрывать до поры до времени. |
Данные
Программно-управляемый обмен информацией необходим в целях:
ATmega8A
не имеет встроенных механизмов отладки)Следует помнить, что
USART
-- низкоуровневый небуферизированный протокол, основанный на прерываниях. Поэтому необходима реализация входного и выходного буферов. Предлагается использовать циклические буферы.Задача
USART
Baud Rate - 9600; Frame Format - S+8+1+St
The text was updated successfully, but these errors were encountered: