Например TDA7294

Форум РадиоКот :: Просмотр темы - ATmega8: возможна ли передача шестнадцатеричного кода?
Форум РадиоКот
https://radiokot.ru/forum/

ATmega8: возможна ли передача шестнадцатеричного кода?
https://radiokot.ru/forum/viewtopic.php?f=20&t=48531
Страница 1 из 1

Автор:  Vasilih007 [ Сб май 21, 2011 06:21:32 ]
Заголовок сообщения:  ATmega8: возможна ли передача шестнадцатеричного кода?

Здравствуйте. Во время написания кода возникла проблема:
Необходимо отправить и принять 16-ричный сигнал.
С атмеги выходит сигнал, приходит на сервопривод (для его управления требуется такой код), обратно приходят данные к атмеге.
Вопрос:
Может ли atmega (вообще любая) отправлять такие сигналы с одного вывода? и принимать на другом?

P.S.: если да. то можно хотя бы команду написать )

Автор:  Vov123 [ Сб май 21, 2011 06:50:14 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Складывая байты в слова можно достичь любой разрядности

Автор:  pyzhman [ Сб май 21, 2011 07:03:45 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

mega может все.
Команды зависят от вашего железа.

Автор:  Vasilih007 [ Сб май 21, 2011 09:05:33 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Vov123 писал(а):
Складывая байты в слова можно достичь любой разрядности


Это я понимаю, но как их передать (принять)?

pyzh_man писал(а):
mega может все.
Команды зависят от вашего железа.


К примеру, команда PORTD=0xff. Передаёт на выводы PD0...7 единицу.
А есть похожая команда, но только на один порт и в hex-коде?

p.s.: использую CodeVisionAVR

Автор:  Vov123 [ Сб май 21, 2011 09:09:02 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Ну так и передавайте-по очереди,удобно будет по 8 бит.

Автор:  ChipKiller [ Сб май 21, 2011 11:15:38 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

2 Vasilih007 хотите получить нормальный ответ - научитесь правильно задавать вопрос.
Vasilih007 писал(а):
Необходимо отправить и принять 16-ричный сигнал.
- 16-ричный и 16-ти разрядный не одно и тоже. Сколько линий используется для передачи/приема? какой протокол и т.д. ..... ,а иначе это "ни о чем" ....

Автор:  Jack_A [ Сб май 21, 2011 12:12:29 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Вот вечная эта путаница...
Предположим, приняли мы сигнал :
Вложение:
Комментарий к файлу: Бапйт
Byte.JPG [2.87 KiB]
Скачиваний: 354


Неважно, как мы зафиксировали начало и конец, знаем только, что байт шел младшим битом вперед. Собрались 10 мудрецов и заспорили насчет принятого байта :
- Это десятичное число 114
- Нет, это 16-ричное число 72
- Нет, это 2 пикселя - один светлосерый, другой темносерый
и т.д.

Кто прав ? Правы все, и не прав никто - принята просто комбинация бит, а как ее интерпретировать - это уже как условились на приемном и передающем конце линии. И не бывает ни десятичного, ни 16-ричного, ни 8-ричного байта - бывает только представление
для человека на бумаге байта, существующего в виде комбинации высокого и низкого уровня.
Возвращаясь к исходному вопросу : что нужно? Передать байт? Так надо просто задвинуть его в регистр передатчика и запустить передачу. Такой метод передачи байта реализован в версии RTU протокола MODBUS. В том же протоколе есть и другой метод - ASCII, когда байт разбивается на 2 тетрады ( ниббла ), каждый из которых кодируется одним из 16 возможных СИМВОЛОВ - элементов 16-ричного представления этого ниббла - 0...9,A...F . В этом случае передаваемая последовательность состоит из символов ограниченного набора, что позволяет ввести для синхронизации не входящий в этот
набор символы, например, стартовый ':'. Можно дополнительно вести контроль правильности прохождения пакета - наличие в последовательности отличного от 0...9,A...F символа свидетельствует об ошибке приема, что не избавляет от необходимости более "сильных" контрольных мер, например, контрольной суммы.
Я прошу прощения у профи за эту банальщину, но так уж часто встречаются вопросы типа : а как передать 16-ричный байт? А как бы он случаем не оказался 8-ричным ? - что пора это уже в FAQ вмонтировать.

Поэтому автору нужно определиться : если он собирается стыковаться с уже готовым устройством, то нужно соблюдать протокол этого устройства, сообразуясь с мануалкой. Если и то, и это еще в проекте - надо, исходя из требований максимального быстродействия и минимальной вероятности пропуска ошибки выбрать нужный код.
На абстрактно поставленный вопрос - полуконкректно составленный ответ.

Но судя по тому, что автор не знает о существовании волшебного слова UART ( или SPI ), ему это пока не по силам. Ну, напишете за него код, а сервопривод - штука серьезная, оторвет кому бошку - кто в ответе ? Совет банальный, но единственно возможный - для серьезных задач пригласите профи.

Автор:  Vasilih007 [ Сб май 21, 2011 14:11:12 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Jack_A, спасибо! вроде немного понял, а полуконкретный ответ получился вполне конкретным )

Автор:  Jack_A [ Сб май 21, 2011 21:52:55 ]
Заголовок сообщения:  Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Vasilih007 писал(а):
Jack_A, спасибо! вроде немного понял, а полуконкретный ответ получился вполне конкретным )

Да пожалуйста - я уж думал, что был немного резковат, человек обидится. Нет - и слава богу. Если задача еще актуальна, нужно сформулировать ее поконкретней и читать даташиты, особо налегая на UART (USART). Если с инглиш напряг, поможет книжка Евстифеева.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/