TODOPIC

Otros Microcontroladores / Dispositivos programables => Arduino => Mensaje iniciado por: micro_pepe en 15 de Octubre de 2019, 19:33:59

Título: traducir digitalWrite a XC8
Publicado por: micro_pepe en 15 de Octubre de 2019, 19:33:59
Cual es el equivalente de digitalWrite(IRQ, 0); siendo IRQ un pin definido como entrada: pinMode(IRQ, INPUT); en XC8 ?

He probado a definir el pin como entrada, y activar la pull-up interna en XC8, pero no funciona, estoy traduciendo un código de Arduino, y puede que tenga más errores, pero esa una traba que tengo ahora mismo.

Saludos!!!
Título: Re: traducir digitalWrite a XC8
Publicado por: KILLERJC en 15 de Octubre de 2019, 22:08:45
 Algo asi?

Código: C
  1. #define HIGH 1
  2. #define LOW 0
  3.  
  4.  
  5. void digitalWrite(pin,value){
  6.  
  7.         uint8_t TRISreg = pin;  // Los valores salen del pin
  8.         uint8_t LATreg = pin;
  9.         uint8_t bit_pos = pin;
  10.  
  11.         // Si esta como entrada
  12.         if(TRISreg && ( 1 << bit_post)) {
  13.  
  14.                 if(value) {
  15.                         // Activo Pull-up
  16.                 } else {
  17.                         // Desactivo Pull-up
  18.                 }
  19.  
  20.         } else {
  21.  
  22.         // Como salida
  23.                 if(value){
  24.                         LATreg |= (1 << bit_pos);
  25.                 } else {
  26.                         LATreg &= ~(1 << bit_pos);
  27.                 }
  28. }
Título: Re: traducir digitalWrite a XC8
Publicado por: sander en 16 de Octubre de 2019, 12:51:38
digitalWrite se utiliza para manejar salidas, si el pin esta como entrada , cual es el objetivo de escribirle un valor?
Título: Re: traducir digitalWrite a XC8
Publicado por: micro_pepe en 16 de Octubre de 2019, 16:19:11
digitalWrite se utiliza para manejar salidas, si el pin esta como entrada , cual es el objetivo de escribirle un valor?

Esa era mi duda, pero el programa original tenía esa línea, la he omitido en el PIC y parece funcionar.

Gracias KILLERJC y sander.
Título: Re: traducir digitalWrite a XC8
Publicado por: Geo en 16 de Octubre de 2019, 16:38:14
digitalWrite se utiliza para manejar salidas, si el pin esta como entrada , cual es el objetivo de escribirle un valor?
Según la documentación de Arduino, configura la resistencia pull-up (https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/), tal como el código que puso KILLERJC:
Citar
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin.
Título: Re: traducir digitalWrite a XC8
Publicado por: sander en 16 de Octubre de 2019, 16:46:44

Según la documentación de Arduino, configura la resistencia pull-up (https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/), tal como el código que puso KILLERJC:
Citar
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin.

Lo que uno se entera al leer la documentación  :mrgreen:,
Título: Re: traducir digitalWrite a XC8
Publicado por: KILLERJC en 16 de Octubre de 2019, 16:47:39
Lo que uno se entera al leer la documentación  :mrgreen:,

No entiendo para que esta la documentacion xD, la mayoria le huye :P
Título: Re: traducir digitalWrite a XC8
Publicado por: micro_pepe en 16 de Octubre de 2019, 19:02:10
Lo que uno se entera al leer la documentación  :mrgreen:,

No entiendo para que esta la documentacion xD, la mayoria le huye :P

Lo había leído, pero probé con la pull-up puesta y quitada, y no funcionaba el programa, el error estaba en otra parte.

La dejé quitada, que es lo que hace Arduino, y como entrada.

Saludos!!!