Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ср ноя 28, 2012 16:22:50
Здравствуйте.
Возникла такая проблема: есть микроконтроллер PIC33, который связан с GSM-модемом с по RS232 с использованием CTS/RTS. Всё работает нормально, но время от времени одно из устройств (бывает как модем, так и PIC) выводит на линию квитирования запрещающий сигнал, и соответственно, другое устройство прекращает передачу. Система зависает в таком состояний и лечится только перезапуском.
Сама по себе передача небольшая - периодически по нескольку байт (как в одну сторону, так и в другую). UART и CTS/RTS на микроконтроллере управляются аппаратно. Скорость 9600.
У меня возникло предположение, что в модуле UART на МК (а может быть и на модеме) иногда возникают ошибки принятия (сбивки скорости, или ещё чего-нибудь), и приёмный буфер заполняется не полностью и зависает в таком подвешенном состоянии, и поэтому устройство запрещает дальнейший приём, высылая соовтетствующий сигнал на линию квитирования.
Может быть кто-нибудь уже сталкивался с подобным?
Ср ноя 28, 2012 20:54:33
А ошибки приема/передачи обрабатываешь ?
Из-за помех в приемном буфере вполне может оказаться ерунда,
обычно перед началом обмена посылают 0xFF, чтоб это ушло по frame error
Из вариантов :
можно подтянуть линии USART резисторами на землю;
можно отключить аппаратное управление CTS/RTS и дергать их из программы
Ср ноя 28, 2012 21:48:21
Есть такой косяк у модемов. Всмысле сталкивался не с именно ошибками квитирования, а с зависанием долго работающих модемов. Причем этой болезнью страдают многие изделия из поднебесной и не только.
Я сигналы квитирования не использовал т.к. пакеты данных были редкие и не большого размера. Просто коротнул RTS-CTS и оно само работает.
Ср ноя 28, 2012 23:32:27
Этот случАй всех злее (С) вот мультик не помню....
Хотелось бы увидеть программную обработку пропуска стопового бита и переполнения 2 байтового буфера...
Согласитесь, ничего сверх чего-то не прошу.
Просто как бы обмен падает не просто так, а по причине (с) капитан очевидность
Вт дек 04, 2012 08:10:09
Интересный момент - модем прижимает CTS по время вызова (обмен данными по CSD), при этом если на другом конце модем выключить (разорвать вызов) первый модем через какое-то время приходит в себя и отпускает CTS.
Вт дек 04, 2012 15:50:49
Если проблема еще осталась, то как вариант перейти на XON-XOFF. Заодно по активности канала можно узнать когда модем повис и дернуть ключиком питание.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.