Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 14.02.2017, 15:58   #1
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
Post 18f13k50 теперь USART

Не могу победить проблему дальше с 18f13k50. Суть – есть датчик угла поворота. Оцифровывается16f628 и передается по usart на 18f13k50. (8 бит RCREG и 1 бит RCSTA,RX9D). На PORTB,4,6 16f628 подключен энкодер, который работает по прерыванию низкого уровня. Пока не кручу энкодер с usart все нормально. Если кручу энкодер (работает корректно) эпизодически сбивается usart. Не часто, но есть. Причем, чем быстрее крутить энкодер, тем больше сбоев. Usart обрабатываю в цикле программы не по прерыванию. Хотя пробовал и в прерывании – тоже самое. Чаще всего проскакивает число 511, т.е. единицы по все 9 битам.Может кто-нить сталкивался? Спасибо.
vlad_f_p вне форума   Ответить с цитированием
Старый 14.02.2017, 16:53   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

vlad_f_p
Usart обрабатываю в цикле программы не по прерыванию. - и usart, и энкодер лучше обрабатывать по прерываниям.

у Вас есть заголовок 13k50 контроллеру? без заголовка Вас постигнет горе, как дойдет дело до USB.

приведите код обработчика.
besogon вне форума   Ответить с цитированием
Старый 14.02.2017, 18:00   #3
Илья
Senior Member
 
Регистрация: 26.02.2007
Адрес: SPb
Сообщений: 1,123
Вес репутации: 1581/65
Илья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant future
По умолчанию Re: 18f13k50 теперь USART

Эта, а UART правильные данные передает? Может не на той стороне проблему ищите?
Илья вне форума   Ответить с цитированием
Старый 14.02.2017, 18:08   #4
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
По умолчанию Re: 18f13k50 теперь USART

Эта, а UART правильные данные передает? -

Параллельно приемнику 18f13k50 стоит приемник usart на 16f628. Так же на нем стоит энкодер. Все практически копия. Так вот там никаких сбоев.
vlad_f_p вне форума   Ответить с цитированием
Старый 14.02.2017, 18:46   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

vlad_f_p
подключен энкодер, который работает по прерыванию низкого уровня - 1
Usart обрабатываю в цикле программы не по прерыванию. - 2
Так же на нем стоит энкодер. Все практически копия. Так вот там никаких сбоев. - 3

допустим адский человек крутит энкодер так, что у Вас не выходит исполнение из прерывания. в итоге у Вас переполняется uart, тк. до дого, чтобы вынуть данные дело не доходит.

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

все равно придется в прерывании вынимать данные и класть в буфер. обработку буфера можно сделать вне прерывания.
besogon вне форума   Ответить с цитированием
Старый 14.02.2017, 18:47   #6
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

плюс, снова же, Вы отладчиком смотрели, где и сколько у Вас находится исполнение?
besogon вне форума   Ответить с цитированием
Старый 14.02.2017, 21:56   #7
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
По умолчанию Re: 18f13k50 теперь USART

Свел все до минимума. Ничего не поменялось.
Выглядит примерно так:
Код:
    ORG        0x0018
         MOVLB        0X02 
         movff     STATUS,Stat_Temp  
         movff     WREG,W_Temp
         movff       BSR,TEMP_BSR
;***************************************
         BTFSS       INTCON,RABIF
         BRA       OUT 
         btfsc      PORTB,4 
         BRA       OUT  
         BRA       OUT  
;********************
OUT
           BCF        INTCON,RABIF
        movff    Stat_Temp,STATUS 
        movff    W_Temp,WREG
        movff    TEMP_BSR,BSR
        retfie    
;************************
main 
       btfss    RCSTA,OERR     ; переполнение 
       BRA      point0
       bcf      RCSTA,4        ; выключаем приемник
       nop
       bsf      RCSTA,4        ; включаем приемник 
       bsf      PORTC,7        ; LED
point0
       btfss     PIR1,RCIF      ;флаг usart
       bra       main
       movff      RCREG,TMP_L        ;Принимаем новую
       bcf          PIR1,RCIF
       btfss    RCSTA,RX9D     ;считываем 9-й бит
       bcf      TMP_H,0
       btfsc    RCSTA,RX9D    ;считываем 9-й бит
       bsf      TMP_H,0
       movff     TMP_H,f1
      call     BIN2DEC
       call     img_lcd
       bra      main

Последний раз редактировалось IceS; 15.02.2017 в 16:12. Причина: пользуйтесь тегами [CODE] [/CODE]
vlad_f_p вне форума   Ответить с цитированием
Старый 14.02.2017, 22:49   #8
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

vlad_f_p
а флаг-то снимается?
плохо помню, снимает ли mistmatch condition btfsc. я всегда movf использовал.
bcf PIR1,RCIF - снимается аппаратно.
при recceive overrun все еще можно считывать то, что пришло.
9 бит считывается вроде до 8бит из fifo.

вообще вопросы есть по оформлению и документированию кода.
besogon вне форума   Ответить с цитированием
Старый 14.02.2017, 23:25   #9
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
По умолчанию Re: 18f13k50 теперь USART

Флаг снимается аппаратно при считывании RCREG. Необходимости чистить флаг в программе нет. Порядок считывания 9-го бита ни на что не влияет.
Переполнения в программе не происходит. контролирую светодиодом. Если в цикл ввести задержку, то есть переполнение. Не работает если проверять переполнение после проверки флага и после считывания RCREG. Хотя какая разница, не понимаю.
vlad_f_p вне форума   Ответить с цитированием
Старый 15.02.2017, 08:55   #10
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

vlad_f_p
Флаг снимается аппаратно - я про change notice в прерывании. чтение порта перед снятием флага.

Порядок считывания 9-го бита ни на что не влияет. - 9 бит обновляется при чтении 8нижних.
иначе говоря, если у Вас 2 байта в fifo, то прочитав сперва нижние, вы потеряете верхний.

btfss RCSTA,RX9D ;считываем 9-й бит
bcf TMP_H,0
btfsc RCSTA,RX9D ;считываем 9-й бит
bsf TMP_H,0
- 9 бит специально расположен в 0 позиции. mowfw, iorlw, movf позволит обойтись.
besogon вне форума   Ответить с цитированием
Старый 15.02.2017, 10:14   #11
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
По умолчанию Re: 18f13k50 теперь USART

Спасибо. Вечером попробую. Хотя я даже делал так что считывал один 9-й
бит и не считывал совсем RCREG и наоборот считывал RCREG и не считывал
9-й бит. Все равно вижу сбои и там и там.
vlad_f_p вне форума   Ответить с цитированием
Старый 15.02.2017, 10:20   #12
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
По умолчанию Re: 18f13k50 теперь USART

В дальнейшей обработке тоже нет проблем. Если после считывания регистров приемника во временный регистр тут же в него переписать какие-то постоянные сбоев нет. Все чисто.
vlad_f_p вне форума   Ответить с цитированием
Старый 15.02.2017, 10:59   #13
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

vlad_f_p
если у Вас цель запустить uart, то отлаживайте его без прерываний, потом, как все будет хорошо - добавляйте прерывания и смотрите.

Хотя я даже делал так что считывал один 9-й
бит и не считывал совсем RCREG и наоборот считывал RCREG и не считывал 9-й бит. Все равно вижу сбои и там и там.
- правильно сперва считывать 9 бит, потом остальные 8.
besogon вне форума   Ответить с цитированием
Старый 15.02.2017, 11:15   #14
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,363
Вес репутации: 2819/60
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: 18f13k50 теперь USART

у Тимофеева есть книга, в которой указан один из вариантов, как можно оформлять код на mpasm.

понятно, что после прочтения останутся вопросы, однако как пособие по оформлению более чем достаточно.

без правильного оформления все одно ничего не выйдет.
Миниатюры
MPASM_formatting.pdf  
besogon вне форума   Ответить с цитированием
Старый 15.02.2017, 16:50   #15
vlad_f_p
Junior Member
 
Регистрация: 20.01.2017
Сообщений: 12
Вес репутации: 100/3
vlad_f_p will become famous soon enoughvlad_f_p will become famous soon enough
По умолчанию Re: 18f13k50 теперь USART

Спасибо за книгу. Это при переносе сюда строки так отформатировались безобразно.
ГЛАВНОЕ решил проблему. У меня энкодер включен прямо на ноги PORTB.
Порт подтянут на +5 через 10кОм и стоят конденсаторы 0.1мкф на землю для исключения дребезга. Когда кручу энкодер накоротко разряжаю эти конденсаторы, бросок тока вышибает мозги контроллера. Не часто но бывает. У 16f это не происходит просто потому что он менее скоростной.
Посадил на выводы энкодера по 1кОм и все стало в порядке. Все оказывается очень просто.
Спасибо всем откликнувшимся.
vlad_f_p вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пропадает байт 0x55 при передачи USART ATAMAN Продукция MICROCHIP 15 13.02.2015 19:29
Два USART. Нужен совет по выбору PIC Vovka Продукция MICROCHIP 34 07.04.2011 15:37
MAX232 и USART, отсутствует сигнал на выходе. EviL_LaugH Общетехнические вопросы 15 31.01.2011 00:40
Помогите отладить программу Timer USART ADC ppram5 Продукция MICROCHIP 16 17.02.2009 00:34
PIC16F877A и USART RomanGB Продукция MICROCHIP 2 09.11.2008 17:02


Часовой пояс GMT +3, время: 15:39.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot