Автор Тема: Прием данных по RS-232  (Прочитано 27944 раз)

Taska

  • Hero Member
  • *****
  • Сообщений: 1801
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #70 : Июнь 06, 2012, 10:56:59 »
Николай был прав выставь конфигурацию правильно и еще прием лучше вести по прерыванию от RX, тогда ничего не пропустишь.
Вот пример ФК4.5, протеус 7.10SP0, частота кварца 10МГц

 

gm

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #71 : Июнь 06, 2012, 19:22:29 »
Макс на твоём  примере сегодня побаловался хорошо, единственное пытаюсь переназначить порт RS т.к. вход Rx это ещё шим в теории вроде понятно, а на практике порт переназначить не получается....

Taska

  • Hero Member
  • *****
  • Сообщений: 1801
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #72 : Июнь 06, 2012, 20:22:10 »
Ну чудак! это ж как два пальца, вот пример RX-C0, TX-C1.
 

gm

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #73 : Июнь 06, 2012, 21:16:21 »
В этом то и проблема что не чудак, что-то похожее весь день кручу меняю строковую переменную с 127 на 126 в flowcode всё как надо , при симуляции proteuse имею постоянный  заженый светодиод, думаю надо к практике переходить собирать в железе смотреть...

Taska

  • Hero Member
  • *****
  • Сообщений: 1801
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #74 : Июнь 06, 2012, 22:38:39 »
Естественно если применить софтовый USART, то ничего не получим , так как прерывание работает только от аппаратного USART.
Или химичить с прерываанием по INT типа 877 выставляет 0 на шине и начинает передачу, 1825 ловит прерывание по спадающему фронту и начинает прием.

gm

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #75 : Июнь 07, 2012, 08:10:24 »
Теперь выход из тупика найден :grin:

Zlodey

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #76 : Июль 12, 2012, 14:38:35 »
Всем привет!! У меня следующая проблема:
МК мега8515, подключаю к SIM-карте по UART-у. SIM-карта после сброса передаёт 22 байта данных на скорости 9600 бит в сек., у меня получается уловить только первый байт, или изредка первый и второй.
Я подумал, что первый байт принимается чётко благодаря параметру Timeout, а второй байт нужно уже ловить по прерыванию от UART_RX... Тут у меня пошли проблемы...
Разрешаю прерывание по Uart_RX, как только ухожу в прерывание, оно "зацикливается" и ничего не помогает...
Блок "Разрешить прерывание" стоИт перед основным циклом программы, более нигде в программе не повторяется.
Также я попробовал в обработчик прерывания всунуть счётчик (при каждом прерывании он делает +1), и вывожу этот счётчик на дисплей. Как только начинает передаваться первый байт, счётчик лихорадочно бежит вверх, и не останавливается, ->> прерывание молотит без остановки...
Что я делаю не так ?

Zlodey

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #77 : Июль 12, 2012, 14:46:25 »
вот примерный проект (только без индикации), переменная count бешенно прибавляется....

Zlodey

  • Jr. Member
  • **
  • Сообщений: 67
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #78 : Июль 12, 2012, 19:17:26 »
Спасибо пользователю "Taska"
Помог разобраться с уартом!!
После сработки прерывания запрещаю его, потом принимаю байт, потом разрешаю прерывание и считываю холостой байт

Taska

  • Hero Member
  • *****
  • Сообщений: 1801
    • Просмотр профиля
Re:Прием данных по RS-232
« Ответ #79 : Июль 12, 2012, 19:25:26 »
Да уж!  :sad:  видать не разобрался. Я тебе разве так рассказывал????