Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Comunicacion por el puerto serie al 16f877 (skybot)

9 Respuestas
2 Usuarios
0 Reactions
4,152 Visitas
goofyahead
Respuestas: 35
Topic starter
(@goofyahead)
Eminent Member
Registrado: hace 19 años

Hola, ya consegui el cable, hacer que funcione de nuevo el skybot y tal.
Ahora he cargado los programas como el de sci-eco ya preparado para el skybot, para comunicarse con el por el hyperterminal.
Bien, pues consigo que muestre cosas por hyperterminal, pero no que lea los caracteres que le mando, por ejemplo el estado de un sensor, lo muestra, mensajes, cadenas, lo que sea, pero el micro no recibe los caracteres...

el codigo es:

void main(void)
{
unsigned char c;

//-- Configurar el puerto B
//-- Todos los pines de entrada, salvo RB1 de salida, que es
//-- donde esta el led
TRISB=0xFD;

//-- Configurar las comunicaciones serie
sci_conf();

//-- Bucle infinito
for (;;) {

sci_cad("entra en el forn");
//-- Esperar a que llegue dato del PC
c=sci_read();

//-- Cambiar el led de estado
PORTB^=0x02;
sci_cad("Devuelve el caracter leidon");
//-- ...y enviar de vuelta el caracter por el puerto serie
sci_write(c);
}

}

Entra en el bucle porque muestra ese mensaje que e puesto ahi para eso pero no consigo que lea el caracter o pasa algo cuando lo lee, el caso es que el hyperterminal se cuelga, no devuleve nada, ni pasa de ahi.

Si alguien sabe como puede ayudarme... gracias.

de paso otra pregunta estoy usando para compilar el programmer notepad con el sddc y todo el rollo, para que sirve el makefile?? que parece vital, y como hago mi propio makefile, porque solo puedo modificar codigo ya preparado con un makefile que me bajo del tutorial del skybot, pero al hacer un proyecto de 0 aunque ponga en la misma carpeta los .h me dice que make.exe no tiene nada que hacer y que falta el makefile, muchas gracias por todo por adelantado, me voy a clase...

Un saludo! GoofyaheaD

Responder
8 respuestas
gonzao
Respuestas: 218
(@gonzao)
Estimable Member
Registrado: hace 20 años

Cómo sabes que te escribe bien pero "peta" al recibir?, dime lo que ocurre.
Te manda el mensaje de que entró al for y después...?
Probé el programa de eco y funciona bien.
Prueba algo como lo siguiente: Es una mezcal del eco, sci_cad y sci_menu
#include "pic16f877.h"

//-- Se usa la libreria de comunicaciones serie
#include "sci.h"

/*********************************/
/* Programa principal */
/*********************************/
void main(void)
{
unsigned char c;
sci_conf();

//-- Bucle infinito
while(1)
{

//-- Esperar a que llegue opcion del usuario
c=sci_read();

//-- Segun la tecla pulsada...
switch(c) {
case '0':
case '1':
case '2':
case '3':
case '4':
sci_cad("Escribiste un numero del 0 al 4nr");
break;
default:
sci_cad("Pulsaste otra teclanr");
}
}
}

nr para que no sólo salte de linea sino que haga el retorno de carro

Un saludo

Responder
goofyahead
Respuestas: 35
Topic starter
(@goofyahead)
Eminent Member
Registrado: hace 19 años

Bien, veamos:

Yo lo que hago es cargar el programa de eco o cualquiera de los que vienen compilados incluso en .hex para probar lo del eco.

Luego abro el hyperterminal de windows y me conecto al pic por el cable serie, entonces ahi no consigo nada, por ejemplo el codigo que me has pasado, no consigo que me devuelva ningun mensaje cuando pulso una tecla, vamos que no hace nada, y ademas se cuelga el programa hyperterminal de windows.

En el caso de que compile o use un programa en el que solo el pic transmita informacion al pc, todo va bien, por ejemplo que muestre el estado de los sensores, pero en cuanto el programa incluye algo como insertar caractere se estropea todo...

Espero ahora si haber sido mas aclaratorio en mi problema. y muxisimas gracias por todo Gonzao, que la gente que no tenemos ni idea de esto podamos progresar en la robotica es por gente como tu!
🙂

Sigo atascado por tanto en esto, ya que no puedo hacer programas complejos porque no paso de ahi,jeje.

Muchas gracias,
GoofyaheaD

Responder
gonzao
Respuestas: 218
(@gonzao)
Estimable Member
Registrado: hace 20 años

Hola:
muxisimas gracias por todo Gonzao, que la gente que no tenemos ni idea de esto podamos progresar en la robotica es por gente como tu! gracias, jeje, ya será para menos 😳

Bueno, vamos a probar unas cosillas antes de darle más vueltas al código, porque en relidad los ejemplos de iearobotics son 100% operativos.

Lo primero que haría es repasar la configuración del hiperterminal. Recuerda: COM1 (o el correspondiente), 9600 bits por segundo, 8 bits de datos, paridad ninguno, 1 bit de parada y sin control de flujo (éste puede ser el error).

Si todo sigue igual, la pregunta es si has instalado el software que indican en la web del skybot o si por el contrario (cosa lógica y que yo hice la primera vez) has buscado las mismas aplicaciones y programas pero en la última versión, incluso puede que sea una beta y no siempre van como deben. Si es así vuelve a versiones anteriores porque a mi me pasó que utilicé versiones más modernas en su dia(sdcc 2.60 beta en lugar de la 2.50) y no funcionaba como debía.

Si no, ya iremos viendo que ocurre

Un saludo
gONzAO

Responder
goofyahead
Respuestas: 35
Topic starter
(@goofyahead)
Eminent Member
Registrado: hace 19 años

DIOS MIO ME VOY A ARRANCAR LA CABEZA, COMO ES POSIBLE!!
OOHH GRACIAAAASSSSSS ES LO DE CONTROL DE FLUJO!!!!
DIOOOOOOOOOOOOSSS PEROOO QUE ESTUPIDEEEEEEZZ!!
AHORA FUNCIONA TOOOODOOO!!!

Lo unico que yo pondria en la documentacion del skybot que se cambie eso y un pantallazo porque por defecto viene asi y creo que alguien mas sera tan pardo como yo (si cabe) jeje.

Bueno a seguir con lo mio!! GRACIAS!!!
Y hasta el proximo estancamiento mental!! Un saludo!
GoofyaheaD!

Responder
Página 2 / 2
Compartir: