Просмотр этой темы:
1 анонимных пользователей
Главный Технолог
Зарегистрирован:
10.01.2011 7:39 Из: Москва
Сообщений:
474
|
Я настроил программный UART в ATTiny13A, всё вроде работает, но данные бьются. Приведу две посылки, которые я принимал от контроллера:
1 посылка (правильная) 11101010 00000000 11101011 2 посылка) 11001010 00000000 11001011 Данные отправлялись одни и те же, первый из трёх байтов задан как 11101010 программно, а третий - это код, принятый с пульта. Причём он постоянен (проверял сравнением посылок) Про обнуление старшего бита я знаю, использую. Параметры UART'а: Baud - 600 Data bits - 8 Parity - none Stop bits - 1
Отправлено: 30.07.2012 7:49
|
|
Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.
|
||
Технический Директор
Зарегистрирован:
09.01.2009 0:19 Из: Tallinn
Сообщений:
2303
|
Это тебе к ЕВИЛУ,он грамотный,дядя
Отправлено: 30.07.2012 8:21
|
|
Главный Технолог
Зарегистрирован:
10.01.2011 7:39 Из: Москва
Сообщений:
474
|
Эм... я же передавал 01101011, т.е. 8-й бит - 0. Почему принялось как 1 - хз
Отправлено: 30.07.2012 8:36
|
|
Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.
|
||
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
порядок бит такой START 0 1 2 3 4 5 6 7 PARITY STOP
Отправлено: 30.07.2012 10:33
|
|
Главный Технолог
Зарегистрирован:
10.01.2011 7:39 Из: Москва
Сообщений:
474
|
Вроде служебные биты сами должны приписываться, я не прав?
Вот исходник на баскоме: $regfile = "attiny13.dat" ' specify the used micro $crystal = 9600000 Config Portb.0 = Output Dim B As Byte , C As Byte Waitms 100 Config Rc5 = Pinb.4 Enable Interrupts 'Open a TRANSMIT channel for output Open "comb.0:600,8,n,1" For Output As #1 Do Getrc5(b , C) If C < 255 Then C = C And &B01111111 Printbin #1 , &HEA Printbin #1 , B Printbin #1 , C End If Loop Close #1
Отправлено: 30.07.2012 11:52
|
|
Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.
|
||
Старший сотрудник
Зарегистрирован:
07.01.2010 15:24 Сообщений:
124
|
Вы используйте программный UART в месте с RC5 и еще удивляетесь что работает с ошибками. Смотрите, если при передаче или приеме данных программного UART произойдет любое прерывание, то есть вероятность того, что задержки будут выполнены с погрешностями и возникнет глюк работы программного UART'а. В вашей программе есть прерывания от RC5.
Нужно использовать аппаратный модуль UART
Отправлено: 30.07.2012 12:35
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
Еще один аргумент в пользу того, что не хер писать на птичьих языках. Абсолютно непрозрачная работа модулей.
Отправлено: 30.07.2012 14:36
|
|
Главный Технолог
Зарегистрирован:
10.01.2011 7:39 Из: Москва
Сообщений:
474
|
Что же тут непрозрачного?
Отключил прерывания на период передачи данных - разницы не заметил. Такое ощущение, что преобразователь USB в COM тупит...
Отправлено: 30.07.2012 15:56
|
|
Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.
|
||
Старший сотрудник
Зарегистрирован:
07.01.2010 15:24 Сообщений:
124
|
Может контроллер непосредственно к USB подключить?
Пример.
Отправлено: 30.07.2012 17:40
|
|
Главный Технолог
Зарегистрирован:
10.01.2011 7:39 Из: Москва
Сообщений:
474
|
4к памяти написано надо... Где же мне такое найти?
Хочу на тини13 сделать подключение к USB, чтобы она передавала данные. Можно наверное с UARTом намудрить - получится переходник USB<->UART, только вот проблема - 1К памяти...
Отправлено: 31.07.2012 3:23
|
|
Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.
|
||