Hola muchach@s,
Estoy queriendo hacer una interfaz entre un pic y un arduino mega. Para empezar queria comunicarlos via el módulo USART de dichos micros, es decir mandar informacion desde el pic hacia el
arduino, solo con un cable, sin hardware raro (pin 17 del PIC (TX) ---> cable ---> pin 19 del arduino (RX1)).
Desde el pic mando constantemente una 'a' y apago y prendo un led para verificar que al menos el pic esta andando. Del lado del arduino, si recibe la 'a' se pone en alto el pin 30 (se prende un
led) y se pone en bajo el pin 46 (se apaga otro led). Sino recibe eso, el caso por defecto (default), se pone en bajo el pin 30 (se apaga el led) y se pone en alto el pin 46 (se prende el otro led).
Uso un switch porque cuando ande esto, pienso poner mas casos y no solo la 'a'. No puedo ver lo que sale del pic, pero usando el monitor serial del IDE de arduino veo que recibe cualquier
cosa menos una 'a' jajaja. ¿puede alguno iluminarme y decirme en que le estoy errando?
Desde ya, muchas gracias!!!!
PROGRAMA DEL PIC:
================
-MPLAB 8.92
-Compilador: HI-TECH 9.83
-uc: PIC16F876A
-Este micro es el emisor
PROGRAMA DEL ARDUINO
======================
-Arduino IDE 1.0.5
-Arduino Mega
-Este micro es el receptor
Desde ya, muchísimas gracias!!!!!
Ídolos!!!
Estoy queriendo hacer una interfaz entre un pic y un arduino mega. Para empezar queria comunicarlos via el módulo USART de dichos micros, es decir mandar informacion desde el pic hacia el
arduino, solo con un cable, sin hardware raro (pin 17 del PIC (TX) ---> cable ---> pin 19 del arduino (RX1)).
Desde el pic mando constantemente una 'a' y apago y prendo un led para verificar que al menos el pic esta andando. Del lado del arduino, si recibe la 'a' se pone en alto el pin 30 (se prende un
led) y se pone en bajo el pin 46 (se apaga otro led). Sino recibe eso, el caso por defecto (default), se pone en bajo el pin 30 (se apaga el led) y se pone en alto el pin 46 (se prende el otro led).
Uso un switch porque cuando ande esto, pienso poner mas casos y no solo la 'a'. No puedo ver lo que sale del pic, pero usando el monitor serial del IDE de arduino veo que recibe cualquier
cosa menos una 'a' jajaja. ¿puede alguno iluminarme y decirme en que le estoy errando?
Desde ya, muchas gracias!!!!
PROGRAMA DEL PIC:
================
-MPLAB 8.92
-Compilador: HI-TECH 9.83
-uc: PIC16F876A
-Este micro es el emisor
Código:
#include <htc.h>
#define _XTAL_FREQ 20000000
void Inicializar()
{
TRISC3 = 0;
TRISC6 = 1;
TRISC7 = 1;
SSPEN = 0;
TXSTA = 0b00100110;
RCSTA = 0b10000000;
SPBRG = 119; // 29=38400 baudios; 19=57600; 59=19200; 119=9600
SPEN = 1;
TXEN = 1;
}
void main()
{
Inicializar();
while(1)
{
while(!TRMT);
TXREG = 'a';
__delay_ms(100);
RC3=~RC3;
} //fin del while
} //fin del main
PROGRAMA DEL ARDUINO
======================
-Arduino IDE 1.0.5
-Arduino Mega
-Este micro es el receptor
Código:
char opcion = 0;
void setup() {
Serial.begin(9600); // establezco BR de 9600 para el puerto serie0
Serial1.begin(9600); // establezco BR de 9600 para el puerto serie1
pinMode(30, OUTPUT); // establece el pin digital número 30 como salida
pinMode(46, OUTPUT); // establece el pin digital número 46 como salida
}
void loop() {
if(Serial1.available()>0)
{
opcion = (char)Serial1.read();
Serial.print(opcion);
}
switch(opcion)
{
case 'a':
digitalWrite(30, HIGH);
digitalWrite(46, LOW);
delay(100);
break;
default:
motor1.run(RELEASE);
motor4.run(RELEASE);
digitalWrite(30, LOW);
digitalWrite(46, HIGH);
break;
}
}
Desde ya, muchísimas gracias!!!!!
Ídolos!!!