|
Буфер на UART. |
|
|
|
 |
Ответов
|
Sep 27 2016, 12:32
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(Obam @ Sep 27 2016, 17:28)  Вы 16550 в персональном компьютере использовали? Вот и здесь так же. !!! ??? !!! ??? на обычном прерывании мог бы сделать так. Код If (ScibRegs.SCIRXST.bit.RXRDY) //char is received { while (ScibRegs.SCIFFRX.bit.RXFFST > 0) //there are chars in FIFO { rx_data[i++]=ScibRegs.SCIRXBUF.all; } } но тогда польза от буфера никакая.
Сообщение отредактировал Jenya7 - Sep 27 2016, 13:25
|
|
|
|
|
Sep 27 2016, 15:52
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(_pv @ Sep 27 2016, 20:22)  польза от буфера такая, что если данных много идёт, можно не на каждый байт дергаться, а в шеснадцать раз реже. и забирать из уарта по несколько байт сразу. ну и чтобы пару байт не висели долго пока буфер не заполнится, можно периодически SciaRegs.SCIFFRX.bit.RXFFST поллить, когда делать больше нечего.
но если надо на каждый отдельный байт уметь быстро среагировать, тогда да, поставте просто прерывание по заполнению буфера на 1 байт и дергайтесь по каждому байту. от буфера пользы тогда действительно никакой. О! Вот я и говорю - проверять RXRDY=1 полингом или RXFFST>0. мне не нужно немедленно реагировать у юарта приоритет низкий, может и подождать. буфер дает уверенность в завтрашнем дне. я правильно понимаю? Цитата(Сергей Борщ @ Sep 27 2016, 20:48)  А UART тем более телепатией не обладает. Настраивайте таймаут в UART на некоторый допустимый межбайтовый интервал и ждете либо прерывания по этому таймауту, либо прерывания по заполнению (половины) буфера. По любому из этих прерываний разгребаете все, что пришло и делаете вывод - ждать следующей порции данных или уже принят весь пакет. Примерно так. а что такое половина буфера? а если придет 4 чара?
|
|
|
|
Сообщений в этой теме
Jenya7 Буфер на UART. Sep 27 2016, 11:52    Сергей Борщ QUOTE (Jenya7 @ Sep 27 2016, 18:52) а что... Sep 27 2016, 16:11     Jenya7 Цитата(Сергей Борщ @ Sep 27 2016, 21:11) ... Sep 27 2016, 16:41      aaarrr Цитата(Jenya7 @ Sep 27 2016, 19:41) юзер ... Sep 27 2016, 16:48       Jenya7 Цитата(aaarrr @ Sep 27 2016, 21:48) Прочи... Sep 27 2016, 17:59        _pv Цитата(Jenya7 @ Sep 27 2016, 23:59) а как... Sep 27 2016, 18:14         Jenya7 Цитата(_pv @ Sep 27 2016, 23:14) таймаут ... Sep 27 2016, 18:51          Сергей Борщ QUOTE (Jenya7 @ Sep 27 2016, 21:51) прихо... Sep 27 2016, 19:07          mantech Цитата(Jenya7 @ Sep 27 2016, 21:51) так п... Sep 27 2016, 20:47           Jenya7 Цитата(mantech @ Sep 28 2016, 01:47) Дак ... Sep 28 2016, 07:06            scifi Цитата(Jenya7 @ Sep 28 2016, 10:06) хотел... Sep 28 2016, 07:47             mantech Цитата(scifi @ Sep 28 2016, 10:47) Можно ... Sep 28 2016, 15:19 mantech Цитата(Jenya7 @ Sep 27 2016, 14:52) Как в... Sep 27 2016, 15:01 Jenya7 Цитата(mantech @ Sep 27 2016, 20:01) Наст... Sep 27 2016, 15:11  Сергей Борщ QUOTE (Jenya7 @ Sep 27 2016, 18:11) я не ... Sep 27 2016, 15:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|