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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 06.12.2016, 11:22   #1
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 46
Сообщений: 1,689
Вес репутации: 1574/67
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию И снова UART PIC16

Добрый день!
Наткнулся на непонятное для меня. Вот такой код:
Код:
    TXREG = cmd;
    while(!TXIF_bit);
    TXREG = 0x0A;
    while(!TXIF_bit);
    TXREG = 0x0D;
но, в терминал прилетает только cmd и 0x0D, 0x0A теряется. Т.е. в общем случае средний байт в этом коде теряется. А я надеялся, что все три должны прилетать. Почему не так?
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 06.12.2016, 11:25   #2
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 35
Сообщений: 1,114
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от petrd Посмотреть сообщение
в терминал прилетает только cmd и 0x0D, 0x0A теряется.
Interrupt flag вроде надо сбросить после записи в TXREG. Второй while проскакивает и сразу переписывает TXREG.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 06.12.2016, 11:35   #3
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 46
Сообщений: 1,689
Вес репутации: 1574/67
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от yeskela Посмотреть сообщение
Interrupt flag вроде надо сбросить после записи в TXREG. Второй while проскакивает и сразу переписывает TXREG.
Нет, этот флаг аппаратный.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 06.12.2016, 11:49   #4
Consultant
Senior Member
 
Аватар для Consultant
 
Регистрация: 08.11.2013
Адрес: San Jose
Возраст: 65
Сообщений: 326
Вес репутации: 796/25
Consultant is a splendid one to beholdConsultant is a splendid one to beholdConsultant is a splendid one to beholdConsultant is a splendid one to beholdConsultant is a splendid one to beholdConsultant is a splendid one to beholdConsultant is a splendid one to behold
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от petrd Посмотреть сообщение
Добрый день!
Наткнулся на непонятное для меня. Вот такой код:
Код:
    TXREG = cmd;
    while(!TXIF_bit);
    TXREG = 0x0A;
    while(!TXIF_bit);
    TXREG = 0x0D;
но, в терминал прилетает только cmd и 0x0D, 0x0A теряется. Т.е. в общем случае средний байт в этом коде теряется. А я надеялся, что все три должны прилетать. Почему не так?
А какой вы терминал используете? Версия?
Consultant вне форума   Ответить с цитированием
Старый 06.12.2016, 12:05   #5
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 46
Сообщений: 1,689
Вес репутации: 1574/67
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от Consultant Посмотреть сообщение
А какой вы терминал используете? Версия?
Уверяю, это не важно. Использую внутренний терминал MikroC, c Putty тоже самое.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 06.12.2016, 12:09   #6
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,504
Вес репутации: 3061/65
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: И снова UART PIC16

petrd
можете :
Код:
   TXREG = cmd;
    while(!TXIF_bit);
    debug_delay(10);
    TXREG = 0x0A;
    while(!TXIF_bit);
    debug_delay(10);
    TXREG = 0x0D;
?

на случай если у Вас флаг выставляется раньше, чем буфер готов?
besogon вне форума   Ответить с цитированием
Старый 06.12.2016, 12:41   #7
Vint
Senior Member
 
Аватар для Vint
 
Регистрация: 08.06.2007
Сообщений: 480
Вес репутации: 838/51
Vint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to behold
По умолчанию Re: И снова UART PIC16

а TX-буфер в 16-х на сколько символов?
закиньте все сразу и пусть передает сам.
Vint вне форума   Ответить с цитированием
Старый 06.12.2016, 12:49   #8
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,504
Вес репутации: 3061/65
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: И снова UART PIC16

Vint
в младших как правило usart состоит из TXREG и TSR.
флаг выставляется когда txreg пустой.
в целом я бы конечно осциллографом посмотрел, что происходит.
besogon вне форума   Ответить с цитированием
Старый 06.12.2016, 12:58   #9
Vint
Senior Member
 
Аватар для Vint
 
Регистрация: 08.06.2007
Сообщений: 480
Вес репутации: 838/51
Vint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to behold
По умолчанию Re: И снова UART PIC16

вы по полингу хотите передавать или по инту ?
проверяйте TRMT, возможно бъете по хвосту пердачи.
Vint вне форума   Ответить с цитированием
Старый 06.12.2016, 13:41   #10
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 46
Сообщений: 1,689
Вес репутации: 1574/67
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от besogon Посмотреть сообщение
petrd
можете :
.............
на случай если у Вас флаг выставляется раньше, чем буфер готов?
Могу, уже пришел сам к тому, что работать начинает уже так:
Код:
   TXREG = cmd;
   while(!TXIF_bit);
   TXREG = 0x0A;
   asm nop
   while(!TXIF_bit);
   TXREG = 0x0D;
но как-то это неправильно. Флаг TXIF срабатывает позже, чем программа успевает его обработать, в рез-те данные в TXREG накладываются друг на друга, не успевая падать в TSR.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 06.12.2016, 14:19   #11
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 35
Сообщений: 1,114
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от petrd Посмотреть сообщение
Могу, уже пришел сам к тому, что работать начинает уже так:
Код:
   TXREG = cmd;
   while(!TXIF_bit);
   TXREG = 0x0A;
   asm nop
   while(!TXIF_bit);
   TXREG = 0x0D;
но как-то это неправильно. Флаг TXIF срабатывает позже, чем программа успевает его обработать, в рез-те данные в TXREG накладываются друг на друга, не успевая падать в TSR.
Что то вспоминается (или это от другого контроллера),что прерывание поднимается, когда из TXREG копирование в сдвиговый регистр произошло, а реальная передача ещё не окончилась. Но это, вроде, не должно приводить к потере содержимого сдвигового регистра.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 06.12.2016, 14:35   #12
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,504
Вес репутации: 3061/65
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: И снова UART PIC16

petrd
посмотрите осциллографом. отпишитесь, что там видно.
besogon вне форума   Ответить с цитированием
Старый 06.12.2016, 14:38   #13
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: M.O.
Возраст: 58
Сообщений: 2,126
Вес репутации: 2724/86
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

Потери в передаче не будет, зато может быть потеря на приеме, если у приемной стороны нет FIFO, а приемник не успевает снять данные из буфера до начала следующего байта.
Попробуйте сделать зазор между байтами сильно больше, чем 1 ноп.
Марк вне форума   Ответить с цитированием
Старый 06.12.2016, 15:07   #14
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 343
Вес репутации: 889/45
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от petrd Посмотреть сообщение
уже пришел сам к тому, что работать начинает уже так:
Код:
   TXREG = cmd;
   while(!TXIF_bit);
   TXREG = 0x0A;
   asm nop
   while(!TXIF_bit);
   TXREG = 0x0D;
но как-то это неправильно. Флаг TXIF срабатывает позже, чем программа успевает его обработать, в рез-те данные в TXREG накладываются друг на друга, не успевая падать в TSR.
Ваш случай описан в документе AN774 "Asynchronous Communications with the PICmicro®USART" на странице 4
Миниатюры
AN774_p4.png  
tsb58 вне форума   Ответить с цитированием
Старый 06.12.2016, 15:24   #15
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,653
Вес репутации: 5137/157
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Ваш случай описан в документе AN774 "Asynchronous Communications with the PICmicro®USART" на странице 4
да, а собственно сам workaround был передавать в честных прерываниях.
Greg вне форума   Ответить с цитированием
Старый 06.12.2016, 15:27   #16
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 46
Сообщений: 1,689
Вес репутации: 1574/67
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Ваш случай описан в документе AN774 "Asynchronous Communications with the PICmicro®USART" на странице 4
Все так и есть, только считаю это важным и об этом производителю надобно в даташите писать, а не в апноте.
В подтверждение код:
Код:
     TXREG = cmd;
     TXREG = 1;
     TXREG = 2;
     TXREG = 3;
     TXREG = 4;
     TXREG = 5;
     TXREG = 6;
прилетает только cmd и 0х06.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 06.12.2016, 15:40   #17
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 46
Сообщений: 1,689
Вес репутации: 1574/67
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от Greg Посмотреть сообщение
да, а собственно сам workaround был передавать в честных прерываниях.
Вот тут у меня тоже сомнения, если у меня нечасто данные передаваться будут (т.е. TXREG будет часто пустовать, что есть флаг TXIF), то мне что жить надо будет в прерываниях? Или по ходу цикла мигать TXIE? Или как?
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd на форуме   Ответить с цитированием
Старый 06.12.2016, 15:46   #18
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

передал всё что надо и отключил прерывания от передачи. Понадобилось передать - заготовил данные и разрешил прерывания - пусть в прерывании разгребается
ampersant вне форума   Ответить с цитированием
Старый 06.12.2016, 15:58   #19
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,653
Вес репутации: 5137/157
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от ampersant Посмотреть сообщение
передал всё что надо и отключил прерывания от передачи.
причем отключил в этих же самых прерываниях при передаче последнего байта. т.е. этот TXIE будет ещё и глобальным флагом, что передатчик занят.
у пиков правда был напряг с определением, что последний байт действительно весь вышел (на TRMT прерывания не было) для того же 485-го, но там были свои трюки.
Greg вне форума   Ответить с цитированием
Старый 06.12.2016, 17:47   #20
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 53
Сообщений: 125
Вес репутации: 508/15
masterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of light
По умолчанию Re: И снова UART PIC16

Перед тем как зарядить регистр TXREG на передачу, всегда нужно проверять свободен ли он.
Вот так у меня работают десятки тысяч приборов, и НИКОГДА не возникает проблем с пропусками данных.
Вызываем "TX_RS232" с байтом в "W". Это для 18 пика, в котором 2 уарта.

Код:
TX_RS232
    BTFSS    TXSTA1,TRMT,A
    BRA      TX_RS232
    NOP
    MOVWF    TXREG1,A
    NOP
    RETURN
masterok999 вне форума   Ответить с цитированием
Старый 06.12.2016, 18:04   #21
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 343
Вес репутации: 889/45
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от masterok999 Посмотреть сообщение
Код:
TX_RS232
    BTFSS    TXSTA1,TRMT,A
    BRA      TX_RS232
    NOP
    MOVWF    TXREG1,A
    NOP
    RETURN
Может так и безопаснее, но не для всех случаев подойдет, так как не экономично по времени. Если нужно передать пакет данных - программа все время будет крутиться в этой подпрограмме, ожидая окончания передачи предыдущего байта. При этом все остальные задачи будут сильно тормозиться (если только они не обрабатываются в прерывании).
tsb58 вне форума   Ответить с цитированием
Старый 06.12.2016, 18:13   #22
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,653
Вес репутации: 5137/157
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от masterok999 Посмотреть сообщение
всегда нужно проверять свободен ли он.
вот это и делают (автоматически) т.н. прерывания.
т.е. готовишь данные и взводишь TXIE. когда передатчик станет свободен (способен принять данные), взведется TXIF и байт уйдет через прерывания. никто не против, что работает в "десятках тысяч" и т.д., но зачем усложнять простое.
Greg вне форума   Ответить с цитированием
Старый 06.12.2016, 18:26   #23
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 53
Сообщений: 125
Вес репутации: 508/15
masterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of light
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Может так и безопаснее, но не для всех случаев подойдет, так как не экономично по времени. Если нужно передать пакет данных - программа все время будет крутиться в этой подпрограмме, ожидая окончания передачи предыдущего байта. При этом все остальные задачи будут сильно тормозиться (если только они не обрабатываются в прерывании).
Так здесь как раз нет потери времени, и к моменту очередного вызова все уже ушло, просто окончательный контроль готовности.
При такой проверке ТОЧНО ничего не будет потеряно.
Да, и никто не отменяет прерывания если они необходимы.
masterok999 вне форума   Ответить с цитированием
Старый 06.12.2016, 18:29   #24
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 53
Сообщений: 125
Вес репутации: 508/15
masterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of lightmasterok999 is a glorious beacon of light
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Может так и безопаснее, но не для всех случаев подойдет, так как не экономично по времени. Если нужно передать пакет данных - программа все время будет крутиться в этой подпрограмме, ожидая окончания передачи предыдущего байта. При этом все остальные задачи будут сильно тормозиться (если только они не обрабатываются в прерывании).
Вы уже определитесь, если нужна передача с пропусками и потерями...
"но не для всех случаев " я еще не встречал случая, когда нужно передавать огрызки данных... Нах вообще такая передача?
masterok999 вне форума   Ответить с цитированием
Старый 06.12.2016, 18:49   #25
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 343
Вес репутации: 889/45
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от masterok999 Посмотреть сообщение
Вы уже определитесь, если нужна передача с пропусками и потерями...
"но не для всех случаев " я еще не встречал случая, когда нужно передавать огрызки данных... Нах вообще такая передача?
Фу-у-у Зачем так нервничать?
Конечно, никому не нужны "огрызки данных", но передачу без потерь можно организовать и методами, отличными от Вашего.
Если контроллер должен выполнять много разных задач, среди которых передача данных по UART - только одна из них, то не позволительно крутиться по 1 мс (при скорости 9600 б/с) в одной задаче, ожидая окончания передачи предыдущего байта и игнорируя остальные задачи.
А насчет того, что
Цитата:
к моменту очередного вызова все уже ушло
так для этого нужно вызывать эту подпрограмму с периодичностью не меньшей длительности передачи байта. А для этого придется эту периодичность чем то обеспечивать, т.е. задействовать дополнительные ресурсы (таймеры, счетчики и т.п.)...
tsb58 вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с UART AlexVK Вопросы начинающих 3 28.01.2012 13:35
Проблема с прерыванием от UART на ds pic 30f2011 Zlodei Продукция MICROCHIP 2 14.08.2011 01:33
Проблема с UART Alex_Al Продукция MICROCHIP 6 23.02.2011 15:40
Проблема с UART и dsPic33 kotlyara Продукция MICROCHIP 6 05.01.2009 16:18
Программный UART и прерывание Vovka Продукция MICROCHIP 14 04.01.2009 22:51


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


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