Menú
Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Problema con CCS (Interrupción RDA)
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="Psyke, post: 1042608, member: 266754"] Me parece bastante fácil ese método D@rk. Ahora quiero explicarte algo. Quiero hacer una especie de protocolo (nunca vi como se hace uno, pero me parece que así debería funcionar). La idea es que el emisor envie un 5 enteros, en un arreglo de enteros localizado en el. Los tres primeros enteros contienen un valor fijo. //int8 DATOS[5] 0=SINCRO, 1=INICIO, 2=DIREC, 3=DATOS, 4=CHECKSUM El primer dato y segundo dato es para indicar que se comenzará el envío. El tercer dato es el de dirección, que si existieran mas PICs recibiendo, cada uno se identificaría por un código diferente. El 4 dato contiene la info, es decir, si recibo (por ejemplo) un "0x56", que el receptor encienda tal cosa, si recibo otra cosa, que haga otra cosa. Y el 5 dato, el checksum, que me permite verificar que se haya recibido bien el arreglo, este lo obtengo haciendo la suma entre el entero de DIRECCION y el de DATOS. En cualquier instancia, cuando se reciba un valor que no corresponde con los que deberían llegar, se descarta la cadena entera. Y para no recibir datos de gusto, en el receptor coloco [code] ... void RDA_isr() { gets(DATOS); if ([B][COLOR=Red]DATOS[0] == 0xAA [/COLOR][/B]&& i<5) ... [/code]para que esté esperando datos hasta recibir un OxAA y ahí continuar la recepción de más datos. Escribo esto para comentarte, que hasta este momento no quiero cambiar las estructuras que utilizo, porque creo que debería funcionar con un getch, o al menos así lo hizo. Como comentaba anteriormente, solo aparece el problema cuando pongo el if(i<5) dentro de la interrupción. Parezco medio tonto solicitando ayuda y rechazando tu solicitud, pero te agradezco de todas formas, y en caso de que no quede otra solución, haré lo que tú me dices. Lo que no me convence es que debe recibir todo el buffer de una, y si se llega a colar algun dato de alguna interferencia ahi, pierdo toda la cadena de gusto. [COLOR=silver]---------- Actualizado después de 1 hora ----------[/COLOR][COLOR=red][B][/B][/COLOR] [B][U]Asunto solucionado.[/U][/B] La interrupción no entraba en la estructura if(i<5).... El poco inteligente no inicializó i! Ahora aprendí qué tan importante es hacerlo. Gracias D@rk por tu apoyo. Como te comenté, ahora procederé a intentar utilizar la estructura que propones para continuar el proyecto [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Problema con CCS (Interrupción RDA)
Arriba