Отговори на тема  [ 43 мнения ]  Отиди на страница 1, 2, 3  Следваща
Предаване и приемане по RS232 в CCS. Как? 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Нед Мар 27, 2005 12:40 am
Мнения: 206
Местоположение: София
Мнение Предаване и приемане по RS232 в CCS. Как?
while(1) {

putc(1);
c=getc();
Delay_ms(1000);
printf(lcd_putc,"\fres= %C", c);

}
Това е отрязък от програмката ми за комуникация. Идеята е да предам числото 1 и след това да го приема. Резулата визуализирам на ЛЦД. Да ама нещо не става. Немога да разбера защо. Не се смейте сега започвам да разучавам CCSa :) , защото това MikroC ми скъса нервите. Резултата от предаването и приемането го наблюдавам с free port monitora и вместо единица, предава и приема 67.


Пон Юни 05, 2006 11:25 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Фев 04, 2005 3:18 pm
Мнения: 309
Местоположение: Sofia
Мнение 
putc(нещо) изпраща по TX
getc() слуша RX (окъсил ли си ги?)
printf изпаща също по TX


Пон Юни 05, 2006 11:33 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
getc() би трябвало да се вика при настъпване на определено събитие - например прекъсване за приет байт по серийния канал. Неможеш да очакваш, че ей така като напишеш нещо си равно на тая функция и трябва да приемеш нещо. Ще приемеш само ако е изпратено и се генерира прекъсване за това и c=getc(); го напишеш вътре в прекъсването.


Пон Юни 05, 2006 11:33 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Фев 04, 2005 3:18 pm
Мнения: 309
Местоположение: Sofia
Мнение 
адаш getc() , чака да постъпи нещо и тогава връща резултат
така ,че не е нужно да е в тяло на прекъсване


Пон Юни 05, 2006 11:37 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Аха - ми какъв му е проблема тогава - в жиците 8) . Тва е тъпо да стои и да чака :? .


Пон Юни 05, 2006 11:44 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Фев 04, 2005 3:18 pm
Мнения: 309
Местоположение: Sofia
Мнение 
ей това не ми звучи никак ама хич:
printf(lcd_putc,"\fres= %C", c);


Пон Юни 05, 2006 11:47 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Нед Мар 27, 2005 12:40 am
Мнения: 206
Местоположение: София
Мнение 
Цитат:
putc(нещо) изпраща по TX
getc() слуша RX (окъсил ли си ги?)
printf изпаща също по TX


Точно така, укъсил съм ги. На кома съм поставил "тапа" с която укъсявам TX с RX (2 и 3) и очаквам каквото предам да ми се върне, но незнам защо не става. Идеята е да изпратя цифрата 1 или 10 например и съответно да я прочета с getc(); и полученото число да го изобразя на ЛЦД. С визуализацията вече се справям, но този сериен канал нещо ми се опъва. Не знам къде сбърках :D .


Пон Юни 05, 2006 11:48 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Нед Мар 27, 2005 12:40 am
Мнения: 206
Местоположение: София
Мнение 
Цитат:
ей това не ми звучи никак ама хич:
printf(lcd_putc,"\fres= %C", c);


Ами и на мен ми се видя странно, но има такива примети и работи. Незнам защо, ако lcd_putc е за визуализиране, а пък printf изпраща по серийният канал какво общо имат двете функций, но така е дадено в примерите и което е най-интересното, че работи. Просто копирам от примерите и виждам какво става в Proteus.


Пон Юни 05, 2006 11:52 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Фев 04, 2005 3:18 pm
Мнения: 309
Местоположение: Sofia
Мнение 
на кома?
да разбирам ли ,че нещо след макс232
или директно rx и tx на пика?


Пон Юни 05, 2006 11:53 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Нед Мар 27, 2005 12:40 am
Мнения: 206
Местоположение: София
Мнение 
Да на кома на ПК.


Прикачени файлове:
rs232.JPG
rs232.JPG [ 250.73 KiB | Прегледано 2523 пъти ]
Пон Юни 05, 2006 11:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Ама ти в протеус ли симулираш - незнам що, ама нещо не ми харесва на мен тая програмка. Пък и никъде невиждам на схемата да си окъсил предаването с приемането.


Вто Юни 06, 2006 12:00 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Нед Мар 27, 2005 12:40 am
Мнения: 206
Местоположение: София
Мнение 
Ами в Proteus няма да го видиш - окъсяването. Правя го хардуерно на самия ком порт на ПСто. Тапата представлява един DB9/F на който 2 и 3то краче са на късо и 1 и 4 също.

Ето я цялата програма:
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use fixed_io(c_outputs=pin_C6) //speeds up port use
#use delay(clock=20000000)
#use rs232(baud=10400, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12

#include <lcd.c>

char c;

void main() {

lcd_init();

while(1) {

putc('*');
Delay_ms(100);
c=getc();
Delay_ms(1000);
printf(lcd_putc,"\fres= %C", c);

}
}

Идеята е да предам този символ * и след това ПИКа да го прочете пак и да го покаже на ЛЦДто. Но не става. Как да стане това.


Вто Юни 06, 2006 12:06 am
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Фев 04, 2005 3:18 pm
Мнения: 309
Местоположение: Sofia
Мнение 
ми прави ми впечатление ,че си обърнал rx и tx при буксата
със симулационни програми не работя ако искаш размени 7 и 8 крак на макса
и пак пробвай


Вто Юни 06, 2006 12:10 am
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Пет Фев 04, 2005 3:18 pm
Мнения: 309
Местоположение: Sofia
Мнение 
а и пробвай вместо тази сложнотия :
printf(lcd_putc,"\fres= %C", c);

lcd_putc("fres=");lcd_putc(c);


Вто Юни 06, 2006 12:15 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пон Юли 04, 2005 11:51 pm
Мнения: 651
Местоположение: София
Мнение 
Пробваи да махнеш тоя max232 или ако искаш да го ползваш даи INVER на тх и rx ....

#use rs232(baud=10400, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12 .. това нещо не ми се нрави сигурен ли си че тая функция ползва хардуерния UART ... щото ако е не :lol:

_________________
От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?


Последна промяна BrainStorm на Вто Юни 06, 2006 12:20 am, променена общо 1 път



Вто Юни 06, 2006 12:19 am
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 43 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

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


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

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