Отговори на тема  [ 41 мнения ]  Отиди на страница Предишна  1, 2, 3
RS232 на PIC12F675 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 27, 2006 6:23 pm
Мнения: 162
Местоположение: Севлиево
Мнение 
Здравейте :)
за да не пускам нова тема да питам тък в тази.
Искам да ползвам този пик като ретранслатор по инфраред канал.
Схемно реализирах схемата и си работи добре. Обаче възниква един проблем на който не успях да намеря решение.
става въпрос за четенето на RX буфера.
simvol=getc(); \\прочитам
putc (simvol); \\ изпращам
Проблема е , че програмата си стои на getc(); докъто не дойде нещо в буфера.
Какво може да се направи за да минава от там само ако има нещо за четене ?
примерно
if(kbhit())
{
simvol=getc();
}
else simlol=' ' \\интервал


Вто Юли 17, 2007 12:06 pm
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Няма ли флаг за приет символ прави проверка по него


Вто Юли 17, 2007 1:57 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение 
[quote="mash"][/quote]

Ей това казва хелпа н CCS за KBHIT функцията :)
Код:
Syntax:
value = kbhit()

value = kbhit (stream)



Parameters:
stream is the stream id assigned to an available RS232 port.  If the stream parameter is not included, the function uses the primary stream used by getc().



Returns:
0 (or FALSE) if getc() will need to wait for a character to come in, 1 (or TRUE) if a character is ready for getc()



Function:
If the RS232 is under software control this function returns TRUE if the start bit of a character is being sent on the RS232 RCV pin.  If the RS232 is hardware this function returns TRUE if a character has been received and is waiting in the hardware buffer for getc() to read.  This function may be used to poll for data without stopping and waiting for the data to appear.  Note that in the case of software RS232 this function should be called at least 10 times the bit rate to ensure incoming data is not lost.



Availability:
All devices.



Requires:
#use rs232



Examples:
char timed_getc() {
   long timeout;

   timeout_error=FALSE;
   timeout=0;

   while(!kbhit()&&(++timeout<50000)) // 1/2
                                    // second

          delay_us(10);
   if(kbhit())
          return(getc());
   else {
          timeout_error=TRUE;
          return(0);
   }

}





Вто Юли 17, 2007 3:32 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 27, 2006 6:23 pm
Мнения: 162
Местоположение: Севлиево
Мнение 
Абе то много хубаво ама нещо не мога да разбера как това може да ми свърши работа в моя случай ....


Вто Юли 17, 2007 5:52 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Колегата ти отговори....

Код:
while(!kbhit());
somevar = getc();


Ще приемеш само ако има нещо за приемане...нали това искаш ?


Вто Юли 17, 2007 8:38 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 27, 2006 6:23 pm
Мнения: 162
Местоположение: Севлиево
Мнение 
Predator_MF написа:
Колегата ти отговори....

Код:
while(!kbhit());
somevar = getc();


Ще приемеш само ако има нещо за приемане...нали това искаш ?

while(!kbhit());
str1=getc();
while(!kbhit());
str2=getc();
while(!kbhit());
str3=getc();
Има, но не приема нищо...
след четенето в str1 str2 str3... strn няма нищо :( А съм сигурен , че подавам 9 символа на RX.


Сря Юли 18, 2007 12:01 am
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
УЖАС ти не четеш ли какво пише бе

If the RS232 is under software control this function returns TRUE if the start bit of a character is being sent on the RS232 RCV pin.

Note that in the case of software RS232 this function should be called at least 10 times the bit rate to ensure incoming data is not lost.


Сря Юли 18, 2007 8:42 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение 
[quote="mash"][/quote]

Така е като не се ползва хардуерен UART за да ползваш прекъсването му ..... има една малко тъпа реализация ама не знам дали ще проработи свястно..... задай за RX пин да ти е GP2 (5 krak ) на пикчето и виж неможеш ли да ползваш външното прекъсване като го настроиш съответно на кой фронт да ти реагира ..... може да намалиш скороста докато получиш свестен резултат . :) а и може малко да си преработиш протокола ... но пробата му е майката ..... а и да питам на симулатор ли пробваш или реално ????


Сря Юли 18, 2007 9:19 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 27, 2006 6:23 pm
Мнения: 162
Местоположение: Севлиево
Мнение 
VSU
:) Явно не чета ....
Значи няма да стане.
Ще го направя с пик, който има хардуерен модул за комуникация.
Ейй , че ми се искаше да стане с този .....


Сря Юли 18, 2007 12:49 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение 
mash написа:
VSU
:) Явно не чета ....
Значи няма да стане.
Ще го направя с пик, който има хардуерен модул за комуникация.
Ейй , че ми се искаше да стане с този .....


ще стане и с този ама май малко те мързи :)) дано е от жегите :)


Сря Юли 18, 2007 1:15 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 10, 2006 2:40 pm
Мнения: 2258
Мнение 
www.olimex.com/dev/pic-p8.html виж отдолу има сорс и hex за малък PIC bit-bang RS232


Сря Юли 18, 2007 4:40 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 41 мнения ]  Отиди на страница Предишна  1, 2, 3

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни