Autor Tema: recibir datos del pc al microcontrolador (pic)  (Leído 1883 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado C4_ESP

  • PIC10
  • *
  • Mensajes: 4
recibir datos del pc al microcontrolador (pic)
« en: 28 de Octubre de 2005, 04:16:00 »
Hola a tod@s:

Es la primera vez que posteo en el foro, así que si hago algo mal como es postear donde no es, o poner cosas que no se puden poner, etc...espero que me perdonen por novato ;D.

Primero lo que quiero hacer es a través de una trama de comunicación (1 bit de start y 8 de datos), enviarlos al pic, de forma que si le llega:

start   control      datos

   1          00      XXXXXX  -> mueva el servo1
   1          01      XXXXXX  -> mueva el motor hacia la derecha (puente en H)
   1          11      XXXXXX  -> mueva el motor hacia la izquierda (puente en H)
   1          11      XXXXXX  -> mueva el servo2

El tema es que cuando envie estas tramas a través del rs233 a la USART del PIC, éste último sepa a donde tiene que enviar esos datos, por ejemplo:

control = 00        -> salida puerto A bit 1 = datos para servo1
control = 01        -> salida puerto A bit 2 = datos para motor derecha

Para ello imagino que tengo que usar el buffer de la USART o guardarlo en memoría...

La verdad es que estoy un poco perdido con esto de la USART, haber si alguna alma candida se digna a contestarme y a darme un ejemplo de como se haría...

Muchas gracias a todos y pedazo de foro que se han currao entre todos
Rebotado

Desconectado xerex

  • PIC16
  • ***
  • Mensajes: 138
    • Mi servidor, mi casa.
RE: recibir datos del pc al microcontrolador (pic)
« Respuesta #1 en: 28 de Octubre de 2005, 15:24:00 »
Bueno vamos a ver el tema de la usart a mi me tiene molido pero he conseguido que funcione correctamente mediante interrupciones, gestionando yo la recuperacion de datos por tanto, yo lo haria de la siguiente manera, tu envias 9 bits, de los cuales podemos eliminar uno que es el ultimo que siempre es uno ok?
bien nos quedan 8 vamos a hacer un filtrado, recogemos el caracter de la usart y filtramos y hacemos la opcion deseada ejemplo:

#include <micro que usas.h>
// demas includes y variables globales, definiciones...

#int_RDA
// aki es donde gestionamos loque te llega por el puerto serie
void interrupcion (void)
{
char comando;
char aux;
comando = getc();
aux = comando;
// en este punto ya tenemos el caracter que ha llegado por la usart
// miramos comando
aux>>6; // desplazamos 6 bits a la derecha por tanto nos quedan los dos primeros
              // bits
comando = comando & 0x3F; //nos quedamos con los 6 primeros bits
if (aux == 0) // comando 00?
       {
        // decodificamos los 6 primeros bits y realizamos accion
        }
else if (aux == 1) // comando 01?
       {
        // decodificamos los 6 primeros bits y realizamos accion
        }
else if (aux == 3) // comando 11?
       {
        // decodificamos los 6 primeros bits y realizamos accion
        }
}
void main (void)
{
//configuramos pines de entrada salida y esas cosas
// habilitamos la interrupcion de la usart y las del micro
enable_interrupts(global);
enable_interrupts(int_RDA);
while (1);
}

Esto es un ejemplo de como lo podrias hacer pero tiene un problema y es que si te llegan mas datos por el puerto serie talvez no puedas atenderlos a todos si no vas lo suficientemente deprisa. Yo opte por gestionar yo la llegada de los datos metiendolos en un buffer y desde el programa principal main ir testando los caracteres llegados..

Bueno no te puedo ayudar de momento mucho mas. Un saludo y suerte.

Es falso eso de que el saber no ocupa lugar....


No se donde poner tanto libro.... :P

Desconectado C4_ESP

  • PIC10
  • *
  • Mensajes: 4
RE: recibir datos del pc al microcontrolador (pic)
« Respuesta #2 en: 29 de Octubre de 2005, 03:45:00 »
Holas:

Bueno lo primero muchas gracias, pues me has dado una idea de como hacerlo, creo que el proceso que me recomiendas se llama enmascaramiento de nivel, es bastante usado en los micros del motorola de la familia del 68000.
De todas formas es un buen comienzo, pues me has dado una idea de como empezar, así que aprobecharé este puente para hacerlo y si me quedo atrancado o logro que funcione lo postearé.

Muchisimas gracias por las molestias.

See you.

Desconectado xerex

  • PIC16
  • ***
  • Mensajes: 138
    • Mi servidor, mi casa.
RE: recibir datos del pc al microcontrolador (pic)
« Respuesta #3 en: 29 de Octubre de 2005, 08:50:00 »
buenas, realmente podemos exportar cualquier codigo en C (y cualquier otro lenguaje)  de un micro a otro, lo unico que diferencia cada micro es como trabaja por debajo. Asi, da igual que programes en C un Pic, un AVR, un HC08, un 68000, un 805X o el micro que sea, las unicas "diferencias" van a ser accesos a puertos y configuraciones de los registros del micro y sus perifericos, que casi van a tener mas que ver con el compilador que con el propio micro. Yo aun tengo un proyecto en mente y es ponerle a un PIC un LCD, que por suerte tengo los codigos en C para la programacion del LCD con un PIC mediante CSS, pero probablemente, exporte yo las funciones necesarias desde programas echos para un ATMEL 89C5X y no tenga dificuldad en que funcione a la primera. Un saludo.
Es falso eso de que el saber no ocupa lugar....


No se donde poner tanto libro.... :P


 

anything