UART + ATtiny2313
- Тарас
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Ср июн 04, 2008 01:20:54
- Откуда: Украина, Винница
- Контактная информация:
UART + ATtiny2313
Доброго времени суток.
Вот возникла интересная ситуация: сделал переходинид ЮСБ-УАРТ и решил к нему вцепить тини2313. написал простую прогу
при которой когда нажимаешь на клавиатуре 1 (тоесть аски код 49) контролер отправляет версию оборудования,
при нажатии 2 а затем 1 засвечивается первый светодиод
при нажатии 3 отсылается код кнопки(нажата или нет 1/0)
в протеусе(7,5) работает восхитительно)) все обменивается все супер
на железе, нет( когда посылаешь на порт данные контроллер мертв, думал дело в переходнике, корочил ноги РХ и ДХ посылаю на порт данные - они возвращаются... а вот почему контролер не отвечает, никак не пойму(( когда написал прогу которая в УАРТ (c контроллера) передает данные, то комп принимает их отлично.
Помогите советом, в чем может быть загвоздка ?
(Фюзы никакие на контроллере я не шил - тактируется от внешнего кварца 4МГЦ + 2 кондера на 22пФ)
Файли прошивки исходник и протеус выложил.
Вот возникла интересная ситуация: сделал переходинид ЮСБ-УАРТ и решил к нему вцепить тини2313. написал простую прогу
при которой когда нажимаешь на клавиатуре 1 (тоесть аски код 49) контролер отправляет версию оборудования,
при нажатии 2 а затем 1 засвечивается первый светодиод
при нажатии 3 отсылается код кнопки(нажата или нет 1/0)
в протеусе(7,5) работает восхитительно)) все обменивается все супер
на железе, нет( когда посылаешь на порт данные контроллер мертв, думал дело в переходнике, корочил ноги РХ и ДХ посылаю на порт данные - они возвращаются... а вот почему контролер не отвечает, никак не пойму(( когда написал прогу которая в УАРТ (c контроллера) передает данные, то комп принимает их отлично.
Помогите советом, в чем может быть загвоздка ?
(Фюзы никакие на контроллере я не шил - тактируется от внешнего кварца 4МГЦ + 2 кондера на 22пФ)
Файли прошивки исходник и протеус выложил.
- Вложения
-
- hardware.rar
- (77.92 КБ) 144 скачивания
Мяу-у-у-у-у
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: UART + ATtiny2313
1=0x31=49
2=0x32=50
3=0x33=51
http://ascii.org.ru/
может со системами исчисления перепутали что?
Добавлено
Посмотрел код, попробуйте в условии вместо <...=="1"...> написать <...==0x31...>
2=0x32=50
3=0x33=51
http://ascii.org.ru/
может со системами исчисления перепутали что?
Добавлено
Посмотрел код, попробуйте в условии вместо <...=="1"...> написать <...==0x31...>
Последний раз редактировалось ibiza11 Вт мар 16, 2010 08:43:04, всего редактировалось 1 раз.
Ставим плюсы: )
- Тарас
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Ср июн 04, 2008 01:20:54
- Откуда: Украина, Винница
- Контактная информация:
Re: UART + ATtiny2313
Проверял, не перепутал.... Парадокс, в протеусе отлично а на железе, ну-никак.
Мяу-у-у-у-у
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: UART + ATtiny2313
посмтрел код на асм :
макрос __POINTW1FN : записывает число равное (2*(_0х0)+0) в регистры r30 и r31/ (как я понял это число равно нулю)
по сему, думаю что компилятор неправильно понимает надпись =="1"
исправьте, если я неправ.подпрограмма SUBOPT_0x1: сравнивает число в регистрах r30-31 с числом в регистре r17.
число в регистре r17 и есть наше число из UARTa:попробуйте сделать, как я рекомендовал в предыдущем посте.
Код: Выделить всё
;0000 0039 if (num=="1")
__POINTW1FN _0x0,0
RCALL SUBOPT_0x1
BRNE _0x8по сему, думаю что компилятор неправильно понимает надпись =="1"
исправьте, если я неправ.
Код: Выделить всё
LDI R30,LOW(2*@0+@1)
LDI R31,HIGH(2*@0+@1)Код: Выделить всё
MOV R26,R17
LDI R27,0
CP R30,R26
CPC R31,R27
RETКод: Выделить всё
; num -> R17
; cmd -> R16
; knopka -> R15.0Ставим плюсы: )
- Тарас
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Ср июн 04, 2008 01:20:54
- Откуда: Украина, Винница
- Контактная информация:
Re: UART + ATtiny2313
пробовал, не пашет(
в протеусе работает на желези никак... мне кажется может дела з фюзами, может какие-то нужно прошить ?
в протеусе работает на желези никак... мне кажется может дела з фюзами, может какие-то нужно прошить ?
Мяу-у-у-у-у
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: UART + ATtiny2313
Тарас писал(а):мне кажется может дела з фюзами, может какие-то нужно прошить ?
Разумеется! С завода тини2313 идёт с внутренним RC на 1 мгц.
- Тарас
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Ср июн 04, 2008 01:20:54
- Откуда: Украина, Винница
- Контактная информация:
Re: UART + ATtiny2313
Хотя я подумал (может я и не прав, выправите меня если я заблуждаюсь)...
вот смотрите, я никаких фюзов не шил, потом перепрошил все в состояния 1 (непрошиты).
он тактируеться от внешнего кварца... если были б проблемы с частотой то на терминал не правильно выводились символы, а так воводятся правильно, но вот поидеи с приемом чтото нето.
вот смотрите, я никаких фюзов не шил, потом перепрошил все в состояния 1 (непрошиты).
он тактируеться от внешнего кварца... если были б проблемы с частотой то на терминал не правильно выводились символы, а так воводятся правильно, но вот поидеи с приемом чтото нето.
Мяу-у-у-у-у
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: UART + ATtiny2313
Ну вот, а говорите не шили. Или вы считаете, что отключение фьюзов не относится к прошивке? Помню, тоже была проблема с тини2313 и UART: выставлял условие на приём конкретного байта, отправлял его, а получал совсем другой. Оказалось, что терминал, после отправки каждой строки, либо отдельного байта, отправлял код конца строки и, естественно, условие в МК не срабатывало. Отключение этой "фитчи" решило проблему.
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: UART + ATtiny2313
Земляк, ведь неизвестно чем ты принимаешь...
Если под линуксом, то для приема бинарной инфы нужно вывести комп-порт из канонического ввода.
Если под виндой, то обратить внимание на rCommTimeouts.ReadTotalTimeoutConstant, может, не вписываешься...
При передачи текстовой инфы завершай строку /r/n.
Если под линуксом, то для приема бинарной инфы нужно вывести комп-порт из канонического ввода.
Если под виндой, то обратить внимание на rCommTimeouts.ReadTotalTimeoutConstant, может, не вписываешься...
При передачи текстовой инфы завершай строку /r/n.
Re: UART + ATtiny2313
Думаю причина именно в переходнике.
Я когда-то пытался сделать переходник на USB-UART на PL2303HX (точно не помню), то была аналогичная ситуация, и когда тх и рх закорачивал тоже прием был, а МК ничего не мог получить с компа, но передавал на пк он нормально. Я забил на это дело и сделал переходник на компорт на двух транзисторах.
Другой человек делал подобный переходник на максе, тоже у него что-то куда-то не шло, но после того как или RTS или DTS притянул к земле или к + уже непомню, то все заработало. Попробуйте эти выводы переходника попритягивать к чему-нибудь, или один из них или оба сразу.
Я когда-то пытался сделать переходник на USB-UART на PL2303HX (точно не помню), то была аналогичная ситуация, и когда тх и рх закорачивал тоже прием был, а МК ничего не мог получить с компа, но передавал на пк он нормально. Я забил на это дело и сделал переходник на компорт на двух транзисторах.
Другой человек делал подобный переходник на максе, тоже у него что-то куда-то не шло, но после того как или RTS или DTS притянул к земле или к + уже непомню, то все заработало. Попробуйте эти выводы переходника попритягивать к чему-нибудь, или один из них или оба сразу.