ATmega8: возможна ли передача шестнадцатеричного кода?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Vasilih007
Родился
Сообщения: 3
Зарегистрирован: Сб май 21, 2011 06:07:40

ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Vasilih007 »

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

P.S.: если да. то можно хотя бы команду написать )
Реклама
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Vov123 »

Складывая байты в слова можно достичь любой разрядности
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение pyzhman »

mega может все.
Команды зависят от вашего железа.
Docendo discimus
Vasilih007
Родился
Сообщения: 3
Зарегистрирован: Сб май 21, 2011 06:07:40

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Vasilih007 »

Vov123 писал(а):Складывая байты в слова можно достичь любой разрядности
Это я понимаю, но как их передать (принять)?
pyzh_man писал(а):mega может все.
Команды зависят от вашего железа.
К примеру, команда PORTD=0xff. Передаёт на выводы PD0...7 единицу.
А есть похожая команда, но только на один порт и в hex-коде?

p.s.: использую CodeVisionAVR
Реклама
Эиком - электронные компоненты и радиодетали
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Vov123 »

Ну так и передавайте-по очереди,удобно будет по 8 бит.
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение ChipKiller »

2 Vasilih007 хотите получить нормальный ответ - научитесь правильно задавать вопрос.
Vasilih007 писал(а):Необходимо отправить и принять 16-ричный сигнал.
- 16-ричный и 16-ти разрядный не одно и тоже. Сколько линий используется для передачи/приема? какой протокол и т.д. ..... ,а иначе это "ни о чем" ....
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6319
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Jack_A »

Вот вечная эта путаница...
Предположим, приняли мы сигнал :
Byte.JPG
Бапйт
(2.87 КБ) 358 скачиваний
Неважно, как мы зафиксировали начало и конец, знаем только, что байт шел младшим битом вперед. Собрались 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
Родился
Сообщения: 3
Зарегистрирован: Сб май 21, 2011 06:07:40

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Vasilih007 »

Jack_A, спасибо! вроде немного понял, а полуконкретный ответ получился вполне конкретным )
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6319
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: ATmega8: возможна ли передача шестнадцатеричного кода?

Сообщение Jack_A »

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

Вернуться в «Микроконтроллеры и ПЛИС»