desktop

Problema con el ide arduino en linux

Scooter

Cascarrabias crónico
He instalado el ide arduino beta 1.5 en linux mint17.
Tengo la carpeta de trabajo movida a /home/(usuario)/dropbox/arduino ya que voy usando dos ordenadores alternadamente.

En mi sketch hay dos include

#Include <avr/interrupt.h>
#Include <avr/io.h>

Y ahí está el problema, cuando asigno variables que están definidas en estos archivos me da el error :
(Variable) was not defined in this scope
Si cambio el nombre del archivo .h a otro inexistente no da error de que no encuentra el archivo, da el mismo error de que xxx variable no está definida. Es como si no encontrase estos archivos .h ni los carga ni los busca.

En windows va perfectamente, me huele a que simplemente no encuentra los archivos pero no se como solucionarlo.
Si en windows cambio el nombre de un archivo.h por uno inexistente no compila, da el error xxxx.h: No such file or directory cosa lógica ya que lo primero es que no encuentra el archivo.

No se si el ide 1.0 irá, pero me interesaba el 1.5 porque tengo un DUE que a veces uso.
 
Última edición:
¿Puede que sea porque has escrito "include" con mayúscula? Debería fallarte en Windows también, aunque igual en Windows te carga esas bibliotecas por otro sitio y por eso no te da problemas.

Saludos.
 
Mmmm no he hecho corta y pega, al escribir en el teléfono pone mayúsculas . De todos modos ahora miro el original, me suena que está bien.
Lo raro es que no de error por no encontrar el archivo, de hecho pongo lo que se me ocurre como iw2o.h y no da error por eso, lo da porque tal registro no está definido.

Edito, efectivamente está escrito include, no Include
 
Última edición:
¿Cuál es el registro que intentas modificar? Pon un ejemplo mínimo y lo pruebo (me instalé Mint 17 recientemente y todavía no he probado el IDE de Arduino a fondo).



Prueba a comentar esas líneas, parece que sin añadirlas se puede acceder perfectamente a registros, macros y demás de esas bibliotecas (supongo que el IDE las añade automáticamente antes de compilar).
 
Última edición:
Es que necesito usar el timer2 y sus interrupciones (me parece increíble que eso no lo soporte nativamente arduino y haya que saltar al c del avr)
Como en realidad no carga ni hace ni caso de esos dos archivos; ya he comentado que puedo poner maripili.h que le da lo mismo, pues no puedo hacer nada de nada. Para configurar el timer2 hago:
Código:
  TCCR2B = 0x00;        //Disbale Timer2 while we set it up
  TCNT2  = mapa[mapaS*5+4];    //r_inyec;     //Valor de la recarga del timer 2
  TIFR2  = 0x00;        //Timer2 INT Flag Reg: Clear Timer Overflow Flag
  TIMSK2 = 0x01;        //Timer2 INT Reg: Timer2 Overflow Interrupt Enable
  TCCR2A = 0x00;        //Timer2 Control Reg A: Wave Gen Mode normal
  TCCR2B = 0x07;        //Timer2 Control Reg B: Timer Prescaler set to 1024
Y NADA de eso funciona porque todo eso no está definido. Supongo que podría definirlos de nuevo a mano, todo eso pero es una M bien grande y después no se si funcionarán las interrupciones.

Como la instalación de la beta 1.5 es un tanto fuera de concurso sin usar la tienda de aplicaciones, voy a instalar la 1.0 "oficialmente" a ver si por ahí funciona, lo malo es que me quedo sin soporte para el leonardo y el due que son dos placas que uso. Me huele a que va por ahí el problema, instalé la 1 y siguiendo las instrucciones "de por ahí", la pisé con la 1.5 y huele a que no tiene la ruta para encontrar los directorios o algo así.

Lo pongo como adjunto, mira a ver si a ti te compila, el otro zip son los drivers del controlador de displays de leds TM1638, hay que copiar la carpeta a Arduino/libraries.
Está compilado para un arduino nano con 328

Nota. No te asustes del código, funciona lo que pasa es que soy bastante anárquico.


Edito, pues he vuelto a instalar el programa "oficial" desde la tienda de aplicaciones, la 0.9a creo que es y lo mismo, no pilla los .h de los includes , pero ahora el problema me lo da con la librería del TM1638 :eek: pero hace lo mismo, cambio el nombre por el de uno inexistente y no da error...
 

Adjuntos

  • ECU2_012.zip
    6.6 KB · Visitas: 1
  • TM1638.zip
    18.2 KB · Visitas: 1
Última edición:
Las últimas versiones son 1.0.5 (estable) y 1.5.7 (beta). Prueba a bajártelas de aquí http://arduino.cc/en/Main/Software

Para controlar los temporizadores, hay bibliotecas de terceros que se pueden utilizar. Yo solo he llegado a usar la de TimerOne, y me fue bastante bien, la verdad.
http://playground.arduino.cc/code/timer1
http://playground.arduino.cc/Main/MsTimer2

Tu código me compila sin problemas. Es más, incluso borrando los inclues <avr/...> me compila sin problemas. El IDE los añade automáticamente (supongo que le pasa los parámetros al compilador). Prueba a hacerlo así.

Lo cierto es que el IDE deja mucho que desear. Es estupendo para usuarios noveles, pero a los más avanzados nos limita mucho. Y todavía no han incluído la funcionalidad de hacerlo portable T_T.

Tiene toda la pinta de que tienes algún problema con el compilador. Prueba a ejecutar en una terminal lo siguiente:
Código:
sudo updatedb
locate avr/interrupt.h
Debería decirte dónde está ese fichero. A mí por ejemplo me sale esto:
Código:
/opt/arduino-1.5.7/hardware/arduino/sam/cores/arduino/avr/interrupt.h
/opt/arduino-1.5.7/hardware/tools/avr/avr/include/avr/interrupt.h

Igual tú no los tienes, o lo tienes en más de una ubicación y hay algún tipo de conflicto. Yo lo que hago es descargarme el IDE de la página oficial, y lo copio a la carpeta /opt, y me hago un acceso directo en el menú principal, nunca me ha dado problemas.



Añado: en mis repositorios (Linux Mint 17) aparece la versión 1.0.5 de Arduino. Voy a probarla, porque el IDE me está dando ciertos problemas que en Ubuntu no me daba. Cosas de Java (por ejemplo, que al maximizar la ventana los menús no funcionan porque detecta los clics en otra zona de la ventana).
 
Última edición:
Probaré cuando tenga un rato, gracias.

Muy buena la librería del timer2, pero necesito bastante mas resolución de 1ms, ahora uso saltos de 64µs y se nota el efecto de uno a otro.
 
Última edición:
Pues no hay manera, me ha atacado el ide de arcuino.
He hecho lo que comentas de instalarlo en /opt y le da igual
Habían mas versiones de los archivos por ahí que he borrado y nada.
Por cierto ahora tengo en la papelera una carpeta avr que no se deja eliminar, creo que antes estaba en /usr/share

Es como si hubiese un archivo de configuración por ahí que le dice que busque en donde no es...
 
Intenta poner en las opciones del ide que te saque los mensajes de depuración, es decir, los mensajes de compilación y subida que aparecerán en color naranja y pegalos aquí.
Así podremos ver donde busca avr-gcc los includes y seguramente lo que haya que hacer es cambiar alguna variable de entorno para que busque las librerias en la carpeta donde estén actualemente.
 
Muerto el perro se acabó la rabia...

He reinstalado linux mint, he descomprimido el .tar.gz en "mis documentos" y ya funciona.
Como instalé el ide 1, sobre el el 1,5 y yo que se que mas habría alguna referencia rara al archivo.
 
Bueno, no suele ser la mejor solución, pero si al final te has decantado por ahí, bien está.

Es lo malo que tiene instalar cosas de diferentes fuentes, aunque a veces no queda más remedio.

Me tropecé ayer con un IDE llamado ArduIDE, que está hecho en Qt en vez de Java, no lo he probado todavía, pero pinta bien (tiene muchas opciones que el oficial no).

Saludos.
 
Seguramente era una tontería, pero si no la encuentras...


Edito: Ya se que para esto está el "me gusta" pero gracias por tu ayuda.
 
Última edición:
Pues se ha vuelto a repetir el problema en cuanto entró dropbox por enmedio y ya no hubo forma de arreglarlo.
La sensación que me da que pasa es que windows codifica io.h en ascii y linux usa unicode de forma que encuentra el archivo, lo abre pero dentro no ve nada y por eso no da error (cree que está vacío) pero las constantes no se definen. Eso o algo similar. Lo raro es que una vez fastidiado no hay forma humana de arreglarlo ni volviendo a descomprimir el .zip ni nada.
De momento voy a dejar dropbox al margen del tema arduino, no tengo ganas de reinstalar mas.
 
Atrás
Arriba