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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 06.12.2016, 11:22   #1
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 45
Сообщений: 1,627
Вес репутации: 1411/63
petrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud of
Отправить сообщение для 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
Адрес: Новочеркасск
Возраст: 34
Сообщений: 1,046
Вес репутации: 3282/68
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
Адрес: Воронеж
Возраст: 45
Сообщений: 1,627
Вес репутации: 1411/63
petrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud of
Отправить сообщение для 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
Banned
 
Регистрация: 08.11.2013
Адрес: San Jose
Возраст: 65
Сообщений: 326
Вес репутации: 796/0
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
Адрес: Воронеж
Возраст: 45
Сообщений: 1,627
Вес репутации: 1411/63
petrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud of
Отправить сообщение для 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,098
Вес репутации: 2433/51
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
 
Регистрация: 08.06.2007
Сообщений: 436
Вес репутации: 723/47
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,098
Вес репутации: 2433/51
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
 
Регистрация: 08.06.2007
Сообщений: 436
Вес репутации: 723/47
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
Адрес: Воронеж
Возраст: 45
Сообщений: 1,627
Вес репутации: 1411/63
petrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud of
Отправить сообщение для 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
Адрес: Новочеркасск
Возраст: 34
Сообщений: 1,046
Вес репутации: 3282/68
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,098
Вес репутации: 2433/51
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
Адрес: Фрязино, М.О.
Возраст: 57
Сообщений: 1,621
Вес репутации: 1800/69
Марк 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
Отправить сообщение для Марк с помощью ICQ
По умолчанию Re: И снова UART PIC16

Потери в передаче не будет, зато может быть потеря на приеме, если у приемной стороны нет FIFO, а приемник не успевает снять данные из буфера до начала следующего байта.
Попробуйте сделать зазор между байтами сильно больше, чем 1 ноп.
Марк вне форума   Ответить с цитированием
Старый 06.12.2016, 15:07   #14
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 320
Вес репутации: 813/41
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,465
Вес репутации: 4590/146
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
Адрес: Воронеж
Возраст: 45
Сообщений: 1,627
Вес репутации: 1411/63
petrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud of
Отправить сообщение для 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
Адрес: Воронеж
Возраст: 45
Сообщений: 1,627
Вес репутации: 1411/63
petrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud ofpetrd has much to be proud of
Отправить сообщение для 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,092
Вес репутации: 3878/91
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,465
Вес репутации: 4590/146
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
Junior Member
 
Регистрация: 28.07.2015
Адрес: Moldova
Возраст: 52
Сообщений: 21
Вес репутации: 261/8
masterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the rough
По умолчанию 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
Адрес: Харьков
Сообщений: 320
Вес репутации: 813/41
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,465
Вес репутации: 4590/146
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
Junior Member
 
Регистрация: 28.07.2015
Адрес: Moldova
Возраст: 52
Сообщений: 21
Вес репутации: 261/8
masterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the rough
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Может так и безопаснее, но не для всех случаев подойдет, так как не экономично по времени. Если нужно передать пакет данных - программа все время будет крутиться в этой подпрограмме, ожидая окончания передачи предыдущего байта. При этом все остальные задачи будут сильно тормозиться (если только они не обрабатываются в прерывании).
Так здесь как раз нет потери времени, и к моменту очередного вызова все уже ушло, просто окончательный контроль готовности.
При такой проверке ТОЧНО ничего не будет потеряно.
Да, и никто не отменяет прерывания если они необходимы.
masterok999 вне форума   Ответить с цитированием
Старый 06.12.2016, 18:29   #24
masterok999
Junior Member
 
Регистрация: 28.07.2015
Адрес: Moldova
Возраст: 52
Сообщений: 21
Вес репутации: 261/8
masterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the rough
По умолчанию Re: И снова UART PIC16

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Может так и безопаснее, но не для всех случаев подойдет, так как не экономично по времени. Если нужно передать пакет данных - программа все время будет крутиться в этой подпрограмме, ожидая окончания передачи предыдущего байта. При этом все остальные задачи будут сильно тормозиться (если только они не обрабатываются в прерывании).
Вы уже определитесь, если нужна передача с пропусками и потерями...
"но не для всех случаев " я еще не встречал случая, когда нужно передавать огрызки данных... Нах вообще такая передача?
masterok999 вне форума   Ответить с цитированием
Старый 06.12.2016, 18:49   #25
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 320
Вес репутации: 813/41
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, время: 13:43.


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