Ajuda com pic 18f2550!!! .. URGENTE!!

Pessoal, tudo bom???
venho aqui como umas das últimas tentativas de fazer esse projeto dar certo. Se trata de um medidor de temperatura remoto via RF em que dois pics, um 16f877a e um 18f2550, se comunicam.
Agora meu "problema":
Estou em um dilema entre os dois compiladores C. Fiz toda a programação para a rede RF, inicialmente, no Mikroc. A rede RF finalmente (depois de alguns meses) funcionou (consegui setar corretamente os configuration bits do 18 para trabalhar com 4 MHz e fiz redundancia na transmissao RF) e os pics estavam conversando alegremente e exibindo a temperatura de um LM35 em um lcd (tudo testado no "mundo real").
Porem preciso fazer uma interface com o PC e vi que o CCS possui uma bilbioteca que possui modo bulk de transmissao. Comecei a estudar o CCS e consegui passar toda a minha programação no Mikroc para o CCS. Nas simulações do proteus tudo ocorre perfeitamente:
-os dois pics conversam e o programa que desenvolvi em C# reconhece os valores perfeitamente.
Fiquei muito feliz que finalmente tinha conseguido fechar todas as pontas do trabalho e fui testar nos protoboards em que estão montados os pics, sensor, modulos RF e ......
Não funcionou!!!
O lcd que mantive no trabalho só para debugar o código fica todo borrado, evidenciando problema com clock.
Acredito que eu não esteja conseguindo setar corretamente os Fuses para o funcionamento do 18, e por isso peço uma ajuda a voces do forum, para eu descobrir se é este mesmo o problema, ou outra coisa ..
OBS.: estou usando cristais de 4mhz nos dois pics e preciso que as CPU deles trabalhem nessa velocidade para que o RF funcione a 300 de Baud.
Código do pic 18: (favor não levar em consideração alguns comentarios e algumas partes do código comentadas, ainda não tive tempo de padronizar).
POR FAVOR ME AJUDEM!! não sei mais o que fazer!!!!
Qualquer outra informação ou arquivo é só pedir que passarei com prazer!!
venho aqui como umas das últimas tentativas de fazer esse projeto dar certo. Se trata de um medidor de temperatura remoto via RF em que dois pics, um 16f877a e um 18f2550, se comunicam.
Agora meu "problema":
Estou em um dilema entre os dois compiladores C. Fiz toda a programação para a rede RF, inicialmente, no Mikroc. A rede RF finalmente (depois de alguns meses) funcionou (consegui setar corretamente os configuration bits do 18 para trabalhar com 4 MHz e fiz redundancia na transmissao RF) e os pics estavam conversando alegremente e exibindo a temperatura de um LM35 em um lcd (tudo testado no "mundo real").
Porem preciso fazer uma interface com o PC e vi que o CCS possui uma bilbioteca que possui modo bulk de transmissao. Comecei a estudar o CCS e consegui passar toda a minha programação no Mikroc para o CCS. Nas simulações do proteus tudo ocorre perfeitamente:
-os dois pics conversam e o programa que desenvolvi em C# reconhece os valores perfeitamente.
Fiquei muito feliz que finalmente tinha conseguido fechar todas as pontas do trabalho e fui testar nos protoboards em que estão montados os pics, sensor, modulos RF e ......
Não funcionou!!!
O lcd que mantive no trabalho só para debugar o código fica todo borrado, evidenciando problema com clock.
Acredito que eu não esteja conseguindo setar corretamente os Fuses para o funcionamento do 18, e por isso peço uma ajuda a voces do forum, para eu descobrir se é este mesmo o problema, ou outra coisa ..
OBS.: estou usando cristais de 4mhz nos dois pics e preciso que as CPU deles trabalhem nessa velocidade para que o RF funcione a 300 de Baud.
Código do pic 18: (favor não levar em consideração alguns comentarios e algumas partes do código comentadas, ainda não tive tempo de padronizar).
- Código: Selecionar todos
#include <18f2550.h>
#fuses PLL1,CPUDIV1,USBDIV,XT,NOBROWNOUT,VREGEN,NOWDT,MCLR,NOPUT,NOLVP,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=300, xmit=PIN_C6, rcv=PIN_C7)//Configura serial
#include <stdlib.h>
#include <string.h>
/////////////////////////////////////////////////////////////////////////////
//
// CCS Library dynamic defines. For dynamic configuration of the CCS Library
// for your application several defines need to be made. See the comments
// at usb.h for more information
//
/////////////////////////////////////////////////////////////////////////////
//#define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID
//#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers
//#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
//#define USB_EP1_TX_SIZE 8 //size to allocate for the tx endpoint 1 buffer
//#define USB_EP1_RX_SIZE 1 //size to allocate for the rx endpoint 1 buffer
/////////////////////////////////////////////////////////////////////////////
//
// Include the CCS USB Libraries. See the comments at the top of these
// files for more information
//
/////////////////////////////////////////////////////////////////////////////
//#include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
//#include <PicUSB.h> //Configuración del USB y los descriptores para este dispositivo
//#include <usb.c> //handles usb setup tokens and get descriptor reports
/////////////////////////////////////////////////////////////////////////////
//
// Include the CCS USB Libraries. See the comments at the top of these
// files for more information
//
/////////////////////////////////////////////////////////////////////////////
#define LCD_ENABLE_PIN PIN_B6 ////
#define LCD_RS_PIN PIN_B5 ////
//#define LCD_RW_PIN PIN_B ////
#define LCD_DATA4 PIN_B0 ////
#define LCD_DATA5 PIN_B1 ////
#define LCD_DATA6 PIN_B2 ////
#define LCD_DATA7 PIN_B3
#define LCD_DATA_PORT getenv("SFR:PORTB")
#include <lcd.c>
//*********************************************************
//*********************************************************
void main(void)
{
char txt[18],saida[10],saida2[10],temp;
unsigned char m,k;
int x=0,j=0,i=0,test=0,u=0,sai=0;
// usb_init(); //inicializamos el USB
// usb_task(); //habilita periferico usb e interrupciones
// usb_wait_for_enumeration(); //esperamos hasta que el PicUSB sea configurado por el host
Lcd_Init(); // Inicialização do LCD
Lcd_putc("Temp.:"); //Escrita da palavra Temperatura na linha 1 e coluna 1
// uart1_init(300); //Inicialização do módulo transmissão/recepção USART com baud rate de 300
//delay_ms(90); //Atraso para estabilização do módulo
// delay_ms(50);
while(1){
//Leitura dos valores recebidos pela comunicação serial
//if (kbhit()) {
//while(m!= 'F' && k!='F' && sai!=1){
// k=getc();
// delay_ms(20);
// m= getc();
// delay_ms(20);
// }
//}
sai=1;
// delay_ms(20);
//////////////////////inicio da recepcao dos dados do pic Slave////////////////
//
//
//
///////////////////////////////////////////////////////////////////////////////
if (kbhit()) { //se está chegando dados
k=getc(); //lê o dado até o caracter
txt[i]=k;
i++;
////////////////////////teste de redundancia///////////////////////////
//
//descricao
//
///////////////////////////////////////////////////////////////////////
if(i==5){//inicio do teste de redundancia
for(j=0;j<5;j++){
temp=txt[j];
for(x=0;x<4;x++){ //verifica se entre as cinco
//char que chegaram pelo menos
if(x!=j){ //duas tem que ser iguais
if(temp==txt[x]){test++;}
if (test==2){
saida[u]=temp;
//quando acha a igualdade salva na var saida
i=0;test=0;
}
//nao encontrando a igualdade repete-se o processo
if(x==4 && test<2){test=0;}
}
}
}
u++;
}
/////////////////////////Fim do teste de redundancia//////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//////////////////////////impressao lcd///////////////////////////////
//
//
//////////////////////////////////////////////////////////////////////
if(u==8){ //Se a palavra inteira foi lida
u=0;
lcd_gotoxy(8,1);
printf(lcd_putc,saida);//Apresenta temperatura no display LCD
//lcd_gotoxy(1,14);
//Lcd_putc(0xDF); //escreve º
//Lcd_putc('C');// e escreve a palavra 'graus'
}
////////////////////////////////Fim da impressão lcd//////////////////
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//lembrar de testar a velocidade no modulo real
//pra saber quais as temporizações corretas para funcionar direito
}//fim de recepção
////////////////////////////////Fim da recepção dos dados//////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//////////////////////Início do envio dos dados para o PC//////////////////////
//
//
//
///////////////////////////////////////////////////////////////////////////////
// if(usb_enumerated()) //si el PicUSB está configurado
// {
// usb_put_packet(1, saida, 8, USB_DTS_TOGGLE);
// }
////////////////////////////////Fim do envio dos dados/////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
}
POR FAVOR ME AJUDEM!! não sei mais o que fazer!!!!
Qualquer outra informação ou arquivo é só pedir que passarei com prazer!!