TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: Rikr09 en 24 de Octubre de 2016, 13:55:42

Título: Lectura de estado de Pin ATSAM4L8C
Publicado por: Rikr09 en 24 de Octubre de 2016, 13:55:42
Saludos amigos de todopic,

Soy nuevo con ATMEL STUDIO y con los ARM y tengo un problema ya que no estoy logrando leer el estado de un pin del micro ver el link https://www.dropbox.com/s/grfx96793hc0dhu/Captura.JPG?dl=0 (https://www.dropbox.com/s/grfx96793hc0dhu/Captura.JPG?dl=0)

El timer está funcionando y pues puedo corroborarlo porque con la función TOOGLE el led está cambiando de estado, pero el que se encuentra condicionado por el if, sólo entra una vez y el led no se vuelve a apagar, lo que me hace pensar que no se está leyendo el estado del pin o no sé la verdad.

Espero y me puedan ayudar con esto.

Muchas Gracias
Título: Re:Lectura de estado de Pin ATSAM4L8C
Publicado por: stk500 en 24 de Octubre de 2016, 16:37:14
hubiera sido mejor que pusiera tu codigo directo aqui. ya que salir de la pagina y leer tu codigo es gorroso,

Ademas incompleto y sin detalle que hace tu programa..


Saludos
Título: Re:Lectura de estado de Pin ATSAM4L8C
Publicado por: Rikr09 en 25 de Octubre de 2016, 10:53:22
Atendiendo a tu sugerencia adjunto el código:


El programa es sencillo, la idea es que cada vez que se active el Timer
Código: [Seleccionar]
Timer_EraseBuffU1Rx.CPUTimer_H.Triggered == 1 ingrese y lea el PIN_PC19; si es igual a 1 lo coloca en 0 y viceverza; si se fijan en los define se puede detallar que el LED_GTXRXPIN es el mismo PIN_PC19; del mismo modo, se nota que se se está empleando la función
Código: [Seleccionar]
ioport_toggle_pin_level(LED_RSSIPIN); para cambiar cada vez que se cumple el tiempo del mismo timer, el estado del LED_RSSIPIN; nada más.

Código: [Seleccionar]
/*** LED Output ***/
#define LED_PWRPIN PIN_PC15
#define LED_TXRXPIN PIN_PC16
#define LED_LINKPIN PIN_PC17
#define LED_BUSYPIN PIN_PC18
#define LED_GTXRXPIN PIN_PC19
#define LED_RSSIPIN PIN_PC20

Código: [Seleccionar]
while (1) {

if( Timer_EraseBuffU1Rx.CPUTimer_H.Triggered == 1 ){
Timer_EraseBuffU1Rx.CPUTimer_H.Triggered = 0;
if(ioport_get_pin_level(PIN_PC19) == 0){
ioport_set_pin_level(LED_GTXRXPIN,1);
}else{
ioport_set_pin_level(LED_GTXRXPIN,0);
}
ioport_toggle_pin_level(LED_RSSIPIN);
}

delay_us(1);
}//while(1)


El problema:
El PIN_PC19(LED_GTXRXPIN) SIEMPRE queda activo; mientras que el LED_RSSIPIN si apaga y prende cada 5 segundos tal y como se espera y no se por qué.

Título: Re:Lectura de estado de Pin ATSAM4L8C
Publicado por: stk500 en 26 de Octubre de 2016, 07:02:34
ahora viene mi pregunta tonta,, porque no se como lo programaste, si usaste el Cristal externo o interno, en ti programa no pone la configuracion de los Fuses ,Cristal , de verdad no se como es tu programa completo.

pero aqui

Código: [Seleccionar]
while (1) {

if( Timer_EraseBuffU1Rx.CPUTimer_H.Triggered == 1 ){
Timer_EraseBuffU1Rx.CPUTimer_H.Triggered = 0;
if(ioport_get_pin_level(PIN_PC19) == 0){
ioport_set_pin_level(LED_GTXRXPIN,1); aqui pone el pin como salida
}else{
ioport_set_pin_level(LED_GTXRXPIN,0); y aqui lo pone como entrada
}
ioport_toggle_pin_level(LED_RSSIPIN); y este hace intermitencia
}

delay_us(1);
}//while(1)

para poder ayudarte seria mejor que ponga todos el codigo y explica que es lo hace tu programa,
y si lo hiciste tu es mejor que vaya paso por paso para que asi ver donde esta o estan tus errores,

Saludos