Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Pic16F628A и USART

Чт ноя 21, 2019 11:46:29

Задача : управление с компьютера, программой на Lazaruse, 16-ю реле.
Контроллер на PIC 16F628A , имеющий аппаратный USART. По передачей с Lazarusa и приемом контроллером вопросов нет. Отправляю по 2 байта - 16 реле. Подумал , нет обратной связи , вдруг кабель оборвут . Решил после приема контроллером 2-х байт отправлять их обратно на комп и там сравнивать. Pic 628 принимает без проблем , а при передаче возникла непонятная проблема .
Как только я записываю данные в TXREG у меня программа уходит на перезагруз,
начинает работать со старта, если заремить команды movwf TXREG, этого не происходит. Может кто сталкивался ?
WDT ни при чем , я его запрещал , то же самое.

Код программы на передачу :
bcf Intcon,Gie ; Глобальный запрет прерываний
bcf RCSTA,CREN ; Запрещение приема
bsf PortB,Receiv ; Включение 75176 на передачу данных
bsf Status,RP0 ; Переход в 1-й банк.
bsf TXSTA,TXEN ; Разрешение передачи
bcf Status,RP0 ; Переход в 0-й банк.
movf OutLow,W ;
movwf TXREG ;
movf OutHigh,W ;
movwf TXREG ;
bsf Status,RP0 ; Переход в 1-й банк.
clrwdt ;
btfss TXSTA,TRMT ; Байты отправлены ?
goto $-2 ; нет
bcf TXSTA,TXEN ; Запрет передачи
bcf Status,RP0 ; Переход в 0-й банк.
bcf PortB,Receiv ; Включение 75176 на прием данных
bsf RCSTA,CREN ; Разрешение приема

Re: Pic16F628A и USART

Чт ноя 21, 2019 13:25:49

Код:
movf OutLow,W ;
movwf TXREG ;
movf OutHigh,W ;
movwf TXREG ;

А подождать освобождения буфера?

Re: Pic16F628A и USART

Пт ноя 22, 2019 06:53:39

Судя по диаграмме на даташит буфер TSR освободится только после отправки двух байтов , что TSR пуст проверяется
clrwdt ;
btfss TXSTA,TRMT ; Байты отправлены ?
goto $-2 ; нет
Но дело не в этом , до этого я отправлял байты по одному и дожидался освобождения TSR после каждого байта , было то же самое.
Сейчас еще проверю байт конфигурации , может какой нибудь BOR влияет . Я использую блок питания от компьютера и с этой стороны подвоха не ожидал

Добавлено after 3 minutes 50 seconds:
Из Даташит:
Можно сначала загрузить данные в TXREG, а затем установить бит TXEN. Как правило, после
разрешения передачи регистр TSR пуст, таким образом, данные записываемые в TXREG сразу передаются в TSR, а
TXREG остается пустым. Это позволяет реализовать слитную передачу данных (см. рисунок 12-6).
Ответить