TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: txu2 en 24 de Marzo de 2006, 15:16:00
-
Estoy programando en C con dsPic, estoy haciendo lo más básico,
TRISB=0
PORTB=0x1
se supone que con eso dentro d mi programa debería hacer k salga un uno por mi pata?? o como va eso? tengo k poner algo mas? no tengo k declarar esas variables no? pork con las libreria k adjunto ya las reconoce?
yo solo kiero encender un led. al compilar no da error pero luego en el debbug no cambia el estado d esa variable y no sale nada, no he probado a grabar el probramita.
-
prueba a usar LATB en lugar de PORTB
-
¿Sabes cuándo hay que usar LATx y cuándo PORTx?, ¿cuál es la diferencia?
-
txu2 suponiendo que deshabilitaste todo módulo que te pueda interferir con la salida que pretendes manejar, has caso a lo que dice nocturno que a su vez es lo que dice microchip.
. Para sacar un dato usa los registros LATx.
. Para leer un dato usa los registros PORTx
Esto es una mejora en los 18, 24 y dsPIC que evitan el uso de los shadow registers.... pero bueno no nos la compliquemos, básicamente con lo que está arriba te manejaras perfectamente.
-
Saludos para sacar encender solo un pin de algun puerto debes hacer asi
Supongamos que deseamos encender un led en el pin RE0
PORTEbits.RE0 = 1; //enciende led
PORTEbits.RE0 = 0; //apaga led
-
Escrito originalmente por dsPIC30f4011
Saludos para sacar encender solo un pin de algun puerto debes hacer asi
Supongamos que deseamos encender un led en el pin RE0
PORTEbits.RE0 = 1; //enciende led
PORTEbits.RE0 = 0; //apaga led
Hasta donde yo sé se hace asi
LATEbits.RE0 = 1; //enciende led
LATEbits.RE0 = 0; //apaga led
El uso de los latchs evita la necesidad de registros shadow ya que al trabajar en alta frecuencia se hace indispensable. El uso de los latchs evita todo esta gestión.
Saludos
-
yo no uso el C para programar dspic, uso el asm.
pero lo ke se es ke asi se hace para prender y apagar leds en C.
/*****************************************/
LATEbits.RE0 = 1; //enciende led
; aqui se debe poner un tiempo de retardo para ke lo puedas visualizar
; encendido ==> espera un tiempo ==> apagado.
; de lo contrario ni te daras cuenta ke se prendio por un momento.
LATEbits.RE0 = 0; //apaga led
/****************************************/
lo ke aparezca por el LATE , aparecera por el port E.
tambien se puede hacer con el PORTE directamente al menos en asm,
ami no me trae problemas en el asm.
-
No se si será el caso, pero en ensamblador hay que configurar los pines del puerto b en que modo van a funcionar, es decir si analógico o digital, en el caso de ser digital y todos los pines esto corresponde 0xFFFF en el registro ADPCFG, no estoy seguro pero creo que en "C" basta con poner ADPCFG = 0xFFFF; (En el caso que quieras poner todo el puertob digital)
-
Según me consta una escritura en el registro LATx tiene el mismo efecto que en PORTx,
el problema aparece en la lectura del PORTx y más concretamente en instrucciones de lectura,modificación,escritura
como BSET,etcc .
La lectura de PORTx lee directamente las entradas
La lectura del LATx lee el registro cerrojo, y no el valor instantáneo del valor de entrada.