Например TDA7294

Форум РадиоКот • Просмотр темы - PIC16f88 не хочет принимать байт по UART
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср май 14, 2025 00:32:01

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC16f88 не хочет принимать байт по UART
СообщениеДобавлено: Пн янв 13, 2025 18:00:42 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 101
Зарегистрирован: Чт май 06, 2010 13:18:59
Сообщений: 1644
Рейтинг сообщения: 0
Не понимаю, не хочет принимать байт и всё тут. Передача в терминал работает. На приеме висит в цикле ожидая флага RCIF в PIR1. Или в протеусе это в принципе не работает? Но передачу ведь его терминал принимает.
Вот просто тестовый код, потом все будет переписано по уму, это просто проверить саму возможность приема. В архиве моделька с кодом

Код:
 list      p=16f88      ; list directive to define processor
 #include   <p16f88.inc>   ; processor specific variable definitions
 errorlevel   -302, -307   

 __CONFIG _CONFIG1, H'3B0A'
 __CONFIG _CONFIG2, H'0000'

 CBLOCK      0x70   ; all banks vars
    w_temp         ; variable used for context saving
    status_temp       ; variable used for context saving
    pclath_temp
 ENDC

 CBLOCK      0x20    ; bank 0 vars
    char0
    COUNT1
 ENDC

;**********************************************************************
 ORG      0x000         ; reset vector
 bsf         STATUS, RP0      ; Bank 1
 movlw       b'00000111'      ; setting port to digital
 movwf      CMCON
 goto      main         ; go to beginning of program

 ORG      0x004         ; interrupt vector location
 retfie      

;**********************************************************************
main
 clrf   OSCCON
 movlw       b'10000001'
 movwf       OPTION_REG

 clrf   ANSEL         ; digital I/O
 movlw   b'01111110'      ; PORTB  0, 7-output
 movwf   TRISB
 movlw   b'11111111'      ; PORTA  - input
 movwf   TRISA

 bcf      STATUS, RP0      ; Bank 0
 clrf      PORTA
 clrf      PORTB

 bsf         STATUS, RP0      ; Bank 1
   ;---CONFIGURE SPBRG FOR DESIRED BAUD RATE
   movlw D'51'      ;baud rate =  19200bps  ->  x=Fosc/(baud_rate*16)-1
   movwf SPBRG      ;at 16MHZ
;---CONFIGURE TXSTA
   movlw B'00100100'   ;Configures TXSTA as 8 bit transmission, transmit enabled, async mode, high speed baud rate
   movwf TXSTA
     bsf PIE1, RCIE

 bcf      STATUS, RP0      ; Bank 0
      movlw b'10010000'   ;enable serial port receive
      movwf RCSTA

; bsf INTCON,6         ; Peripheral Interrupt Enable
; bsf      INTCON, GIE      ; Global Interrupt Enable

   movlw 0x41
   movwf char0      ;put A (ascii code 0x41) character to char0 register
main_cycle

;send  / TX
    movlw 0x54      ;T
   movwf TXREG      ;place the A character to TXREG
    bsf   STATUS, RP0   ; Bank 1
wthere1
   btfss TXSTA, TRMT   ;check if TRMT is empty
       goto wthere1      ;if not, check again
   bcf STATUS, RP0   ;bank 0, if TRMT is empty then the character has been sent

    movlw 0x65      ;e
   movwf TXREG      ;place the A character to TXREG
    bsf   STATUS, RP0      ; Bank 1
wthere2
   btfss TXSTA, TRMT ;check if TRMT is empty
       goto wthere2      ;if not, check again
   bcf STATUS, RP0   ;bank 0, if TRMT is empty then the character has been sent

    movlw 0x73      ;s
   movwf TXREG      ;place the A character to TXREG
    bsf   STATUS, RP0      ; Bank 1
wthere3
   btfss TXSTA, TRMT ;check if TRMT is empty
       goto wthere3      ;if not, check again
   bcf STATUS, RP0   ;bank 0, if TRMT is empty then the character has been sent

    movlw 0x74      ;t
   movwf TXREG      ;place the A character to TXREG
    bsf   STATUS, RP0      ; Bank 1
wthere4
   btfss TXSTA, TRMT ;check if TRMT is empty
       goto wthere4      ;if not, check again
   bcf STATUS, RP0   ;bank 0, if TRMT is empty then the character has been sent

ccc1

;receive
 bcf  RCSTA, CREN      ;CREN bit
 bsf  RCSTA, CREN      ;CREN bit

wait_symbol  btfss PIR1, RCIF      ;bit 5
 movlw b'00000001'   ;инвертируем RB0
 xorwf PORTB, F
     goto wait_symbol
      movf RCREG, W
      movwf  COUNT1
;   bcf   PIR1, RCIF   ;сбросится сам при чтении RCREG

 movlw b'10000000'   ;инвертируем RB7
 xorwf PORTB, F

   incf char0, F
   movf char0, W
   movwf TXREG      ;place W to TXREG

 bsf         STATUS, RP0      ; Bank 1
wthere5   btfss TXSTA, TRMT ;check if TRMT is empty
       goto wthere5      ;if not, check again
   bcf STATUS, RP0   ;bank 0, if TRMT is empty then the character has been sent

 goto ccc1
; goto   main_cycle

 END


Вложения:
prot8.zip [15.58 KiB]
Скачиваний: 22
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16f88 не хочет принимать байт по UART
СообщениеДобавлено: Пн янв 13, 2025 18:43:31 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 3
Рейтинг сообщений: 21
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Сообщений: 157
Откуда: не с Уфы
Рейтинг сообщения: 2
вот это :
Код:
wait_symbol  btfss PIR1, RCIF      ;bit 5
 movlw b'00000001'   ;инвертируем RB0
 xorwf PORTB, F
     goto wait_symbol

так и задумывалось?
и ещё - зачем включаете прерывания (gie)?

зы: вопрос по gie снимается ... сейчас только заметил, что те строки закомментированы


Последний раз редактировалось Родэрик Пн янв 13, 2025 18:54:03, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16f88 не хочет принимать байт по UART
СообщениеДобавлено: Пн янв 13, 2025 18:53:35 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 101
Зарегистрирован: Чт май 06, 2010 13:18:59
Сообщений: 1644
Рейтинг сообщения: 0
Родэрик писал(а):
так и задумывалось?

изначально конечно нет, просто чтоб видеть в каком месте затык, ну т.е. пока ждем приема - дергается нога для теста. Но без этого тоже не работало.

Родэрик писал(а):
и ещё - зачем включаете прерывания (gie)?

так эта строка закомментирована, пробовал на всякий случай включать переферийные прерывания PEIE без глобального gie - не помогло. строку gie просто скопировал вместе с peie с другого проекта.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16f88 не хочет принимать байт по UART
СообщениеДобавлено: Пн янв 13, 2025 18:56:10 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 3
Рейтинг сообщений: 21
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Сообщений: 157
Откуда: не с Уфы
Рейтинг сообщения: 2
я про то, что "goto wait_symbol" всегда будет работать ...


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC16f88 не хочет принимать байт по UART
СообщениеДобавлено: Пн янв 13, 2025 19:08:15 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 101
Зарегистрирован: Чт май 06, 2010 13:18:59
Сообщений: 1644
Рейтинг сообщения: 0
я про то, что "goto wait_symbol" всегда будет работать ...


А, точно. Пропустил. Но на самом деле я это вставил совсем недавно, без этого в таком виде
wait_symbol btfss PIR1, RCIF ;bit 5
goto wait_symbol
тоже не работало.

Upd.
Щас убрал, перекомпилил - заработало!

Родэрик, большое спасибо.

Завтра начну писать настоящий код. Конечно таких останавливающих программу ждущих циклов не будет. Мне тут главное было отладить прием-передачу.


Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y