tengo un problema con esta función, no se si es porque tengo algo mal en mi equipo, el código compila bien pero tengo errores en el linker.
Si pudierais comprobar si os pasa¿? . No tengo mucho problema porque puedo hacerme la función yo mismo, pero es para salir de dudas.
void CheckPow() { int decimals=2; double resultado=pow(10, ((double)decimals)); //Elk linker no lo pasa double resultado2=pow(10, ((double)2));//Compila & Linka bien }
Por favor!!! usa los tags para insertar imágenes..
Pon todo el código para poder evaluar que ocurre.
Sino tenemos que ponernos a escribir algo complementario para evaluar tu problema
Estas compilando con Atmel Studio 6.X o 7?
El IDE que utilizo es eclipse con el plugin AVR, de este modo si programo JAva , php , c no tengo que cambiar de entorno, y es gratuito
Para simular lo hago sobre proteus.
Te paso una versión minimalista del código que reproduce el problema, al menos en mi caso.
El problema esta en la funcion CheckPow, como comento arriba el codigo compila pero el liker da error.
#include <Arduino.h>
#include <avr/interrupt.h>
#include <avr/io.h>
extern "C" void __cxa_pure_virtual() {}
void setup() {
Serial.begin(9600);
}
void loop() //----( LOOP: RUNS CONSTANTLY )----
{
int val =analogRead(A0);
Serial.println(val);
delay(100);
}
void CheckPow(double decimals)
{
double resultado=pow(10, decimals)); //Elk linker no lo pasa
double resultado2=pow(10, ((double)2));//Compila & Linka bien
}
int main() {
//Necesario para la inicializacion de arduino
init();
//Setup
setup();
//Loop
while (true)
loop();
}
Pero eso es una mescolanza de cosas.
Arduino IDE no necesita setup(), loop() y main().
Solo setup y loop.
Yo te simplifico tu simplificación.
Esto compila OK
void setup() {
Serial.begin(9600);
}
void loop() { //----( LOOP: RUNS CONSTANTLY )----
int val = analogRead(A0);
Serial.println(val);
CheckPow(3);
delay(100);
}
void CheckPow(double decimals)
{
double resultado= pow(10, decimals); //Elk linker no lo pasa
double resultado2=pow(10, ((double)2));//Compila & Linka bien
}
Este es el resultado del compilador usando IDE 1.6.0
El sketch usa 2,760 bytes (1.1%) del espacio de almacenamiento. El máximo es 253,952 bytes.
Las variables globales usan 184 bytes (2.2%) de la memoria dinámica, dejando 8,008 bytes para variables locales. EL máximo es 8,192 bytes.
[Stino - Compilación terminada "borrar_8" en 38.2s.]
Como verás, saqué los includes, extern, y por sobre todas las cosas, no puedes usar main() y llamar de nuevo a setup y a loop.
Aclaro que esto en el entorno IDE.
Si programas como entorno C que tal vez es tu caso el enfoque tuyo tiene mas coherencia, porque ya setup y loop no tienen la relevancia del IDE.