| Форум РадиоКот 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: возможна ли передача шестнадцатеричного кода? |
Вот вечная эта путаница... Предположим, приняли мы сигнал : Вложение: Неважно, как мы зафиксировали начало и конец, знаем только, что байт шел младшим битом вперед. Собрались 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/ |
|


