доброго времени суток.
итак имеется МК соединенный с ПК по uart. необходимо вывести на МК 3 байта, первый байт разобрать на биты, если первый бит 1 вотрой бит 0 третий бит 1 то следующие 2 байта являются значениями которые необходимо вывести на 2 шима.
непонятно как взаимодействовать с пк из приложения, ведь пересылаются символы. а надо еще и разбить на биты.
помогите с куском кода.
PS пишу на С
_________________ в спорах рождается ИСТИНА [AND] flud.
программа виснет при попытке отправить что-либо на мк грешу на переходник usb - com причем если мк отцепить все отлично, если замкнуть rx tx эхо идет без ошибок. в чем может быть дело?
_________________ в спорах рождается ИСТИНА [AND] flud.
нет скорости одни и те-же даже в симуляторе vmlab работает. а как всетаки передать с компа число 1101 1111 или BF
чтобы мк его принял как единое целое а не b и f.
Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26 Сообщений: 11492 Откуда: град Нижний
Рейтинг сообщения:0
Может и форматы не совпадать..
Обычно для ПК это:
1бит - стартовый,
8бит - данные,
1бит - чётность,
1бит - стоповый...
Проверь, как на МК запрограммировано..
У тя в программе например указано - нет чётности..
Сам те по твоему МК подсказать не смогу - сам работаю только с МК51 семейством...
нашел проблему номер 1 - не встали фьюзы при первой прошивке, а больше я их и не смотрел вобщем так и тактовался мк от своего 1 мГц генератора, исправил теперь тактутся от кварца 16 мГц но проблема с usart не решилась. теперь думаю что не исправен переходник usb-com. вот так вот. скоро за мах232 поеду.
_________________ в спорах рождается ИСТИНА [AND] flud.
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Чтобы проверить ком порт нужно замкнуть пины 2 и 3 на разьёме. Таким образом ПК будет принимать то, что отправит. И если в терминале(именно это вам и нужно попробуйте PuTTY - хороший терминал. В личке помогу настроить) Вы увидите то, что отправите. Например набрали "G" а в терминале будет "GG". Чтобы отправить байт 160(0xA0 или 0b10100000) нужно по таблице ASCII символов найти символ с таким кодом. Ещё хочу добавить что обычно для проверки правильности связи МК и ПК по UART'у обычно на Си пишут такой код
Код:
putchar(getchar());
Таким образом если скорости выставлены правильно и связь налажена верно то на терминале вы топять таки должны получить то что и отправляли.[/b]
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26 Сообщений: 11492 Откуда: град Нижний
Рейтинг сообщения:0
а) попробуй "зациклить" передачу одного байта с МК и посмотри длительность посылки..
б) потом "зациклить" передачу одного байта с компа и тоже посмотри длительность посылки..
Думаю всё-же у тя - несовпадение скоростей..
Люди помогите всё не допрёт, до меня вот реализован UART и шим; делаю так OCR1B = 300; так работает; ну или
if(UDR=='1') OCR1B = 300; тоже работает но только я делаю типо такого OCR1B = UDR; ну к примеру. пробовал всякие преоброзования и всё такое... ШИМ таким оброзом не работает, что упустил, ну и сам вопррос то как получть число с UDR и отправить OCR1B ;
Может лучше сделать работу с двойным буфером. И отправлять количество требуемых байт в комп(запрос), когда нужно заполнить один из буферов. В буфер складывать по прерыванию юсарта. Из буфера читать в шим по прерыванию таймера. С данными работать в виде структуры. Битовые поля.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения