Autor Tema: Lectura de estado de Pin ATSAM4L8C  (Leído 2657 veces)

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

Desconectado Rikr09

  • PIC16
  • ***
  • Mensajes: 112
Lectura de estado de Pin ATSAM4L8C
« 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

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

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re:Lectura de estado de Pin ATSAM4L8C
« Respuesta #1 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

Desconectado Rikr09

  • PIC16
  • ***
  • Mensajes: 112
Re:Lectura de estado de Pin ATSAM4L8C
« Respuesta #2 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é.


Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re:Lectura de estado de Pin ATSAM4L8C
« Respuesta #3 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




 

anything