Show Posts
Pages: 1 ... 342 343 [344] 345 346 ... 699
5146  International / Generale / Re: Posticipo segnale d'ingresso al variare della frequenza dello stesso on: May 24, 2012, 08:22:11 am
esatto, anche se non è consigliatissimo da fare, devi ricordarti di farlo ad ogni overflow. se non erro puoi invece impostare il valore di overflow: questa tecnica è più pulita. Mettiamo il caso in cui perdi un interrupt dal timer perchè facevi altro, dato che non risetti il valore di partenza, che ripartirà da 0, non solo avrai perso un interrupt ma anche il prossimo verrà generato in modo erroneo
5147  International / Generale / Re: Aiuto per compilazione STK500boot.c on: May 24, 2012, 07:24:10 am

Beh è semplice: normalmente è collegata la 485,quando devo programmare il modulo STACCO la 485 per qualche istante e attacco l'USB. Faccio il mio upgrade e attacco tutto!

perfetto, allora non devi commentare quel codice, ma semplicemente mettere un time-out
5148  International / Generale / Re: Aiuto per compilazione STK500boot.c on: May 24, 2012, 04:32:42 am
prima di tutto bisogna scollegare la rete modbus dai pin 0 e 1, se ti arrivano dati mentre stai uppando lo sketch ovvio che avrdude non ce la fa.

Quindi l'unica modifica che devi fare al boot-loader, è di scollegarsi dalla rete prima di fare qualsiasi altra cosa, e che verrà riattivata nel stup del tuo programma. Tutto il resto rimane invariato!!
5149  International / Generale / Re: Aiuto per compilazione STK500boot.c on: May 24, 2012, 03:37:30 am
Giusto per vostra informazione, il modo più semplice per ricompilare il bootloader è buttare via il makefile abbinato e usare AvrStudio creando un progetto dedicato, cosa che si fa in meno di cinque minuti  smiley


se non ho capito male il problema è che lui ha un mac o comunque un ambiente non windows, e non credo che avrstudio ci sia per questi ambienti
5150  International / Generale / Re: Aiuto per compilazione STK500boot.c on: May 24, 2012, 02:51:10 am
Buongiorno a tutti amici,

Appena arrivato ho subito "bruciato" il bootloader di Leo, che è stato caricato senza problemi.
Una volta caricato LED13 completamente spento.Provo a caricare lo sketch ma ci sono molti errori di timeout, ed è impossibile terminare.

Riprovo col bootloader, tutto bene. Nel riprovare a caricare lo sketch ottengo sempre questo errore:

Code:
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Expected signature for ATMEGA2560 is 1E 98 01
         Double check chip, or use -F to override this check.

Ho provato anche a impostare come BOARD (tanto per vedere) il 1280 ma anche qui da errori.

Niente cavallo per adesso smiley-wink

scusami, ma se nel boot-loader hai disabilitato la lettura della seriale nel boot-loader, allora mi pare normale che tu abbia questo errore. Devi lasciare il codice di lettura e semmai mette dei time-out, o se già presenti abbassarli facendo attenzione a non creare casini con i tempi della seriale.  Che poi come fai a programmarli se sui pin 0 e 1 oltre al PC hai collegato il bus che continua a sparare dati? avresti una collisione. A meno che quando resetti per un pò di tempo il bus non venga abilitato (almeno fino al setup), rilasciando così il pin 0 e 1 ad utilizzo unico dell'USB, ma così in automatico risolveresti il problema anche usando un boot-loader normale.

Ad occhio, per non cambiare il circuito, l'unica è mettere nel boot-loader il codice per disattivare il chip che trasla il bus, poi il boot riprende normelmente, ascolta per sketch in entrata, fa il suo lavoro se serve, poi parte lo skecth come al solito e riattiva il bus.
5151  International / Generale / Re: Posticipo segnale d'ingresso al variare della frequenza dello stesso on: May 24, 2012, 02:44:43 am
mamma mia, mi usate i registri per impostare l'interrupt (quando attachInterrupt anadava più che bene) è poi mi usate la digitalRead(lentissima) quando potreste usare le macro.

Quote
multiple definition of `__vector_1'
ti sei dimenticato di togliere gli include a llibrerie esterne? a quanto pare una di esse sta già usando quella ISR... magari i problemi che avevi erano proprio due librerie che cozzavano.
5152  International / Generale / Re: aiuto memoria on: May 24, 2012, 02:40:06 am
nel reference trovi vari sistemi. Il più realistico è quello che alloca un byte alla volta, e quindi ottieni la ram disponibile. Però da destra verso sinistra della ram hai l'uso di variabili, da destra verso sinistra hai l'uso dello stack. Quindi in realtà qualsiasi richiamo a funzione sballa il valore letto, anche se di poco.
poi c'è il sistema di fare indirizzo attuale dello stack - indirizzo attuale del primo spazio per variabili libere, e un altro paio di trucchetti.

certo che se postassi il codice potremmo magari individuare qualche spreco più o meno evidente.
5153  International / Generale / Re: Possibile che SDfat vada ed SD.h no ??? on: May 24, 2012, 02:12:12 am
ma... secondo me il problema potrebbe essere provocato dal fatto che non apri e chiudi il file ad ogni terna di valori che scrivi, ma tieni il file aperto. così magari si riempie un buffer, che senza chiudere non forzi a scrivere, senza contare che staccare l'SD così potrebbe provocare una "rottura" del File System
5154  Using Arduino / Programming Questions / Re: Found a 64bit double implementation library, but I cannot compile it on: May 23, 2012, 06:01:45 pm
@pete: you are right

@Nick: tomorrow i'll implement the tylor expansion of atan, so i will test the "fast" code. also with a nice app i've found that limiting the sine input form -PI to +PI i can safely use a precision of 10.
5155  International / Generale / Re: Aiuto per compilazione STK500boot.c on: May 23, 2012, 05:12:10 pm
la toolchain inclusa in arduino 1.0.1 è uguale per tutti i sistemi ed è la versione avr-gcc (GCC) 4.3.2 (quindi suppergiù del 2008, direi che con il periodo ci siamo...)

certo non la testo a quest'ora smiley
5156  Using Arduino / Programming Questions / Re: Found a 64bit double implementation library, but I cannot compile it on: May 23, 2012, 04:50:42 pm
thanks very much for pointing the float bug out :-)

Quote
You can probably cut down the precision of bigPI - that uses RAM and you are hardly going to need all those digits.

doesn't BigNumber::setScale (20); throw out unnecessary char for me? also static string reside in flash, at least in the newer ide.

don't trust this acos implementation, just the first thing i've found to make some test.

Quote
execution time (microseconds, precision of 5): 142256 vs 116(using float)
because GPS normally troughput is 1Hz, this library IS FAST enough  smiley-mr-green sadly it is too big and slow (but for slowness just divide and conquer...) to be on my quad software.

Basically this test is just to understand if arduino can plot a GPS path between 2 point... seems like he can, but sadly it won't do much more  smiley-mr-green

ps. now i'll try the faster implmentation c=mod(atan2(sin(lon1-lon2)*cos(lat2), cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon1-lon2)), 2*M_PI);
5157  International / Generale / Re: Aiuto per compilazione STK500boot.c on: May 23, 2012, 04:32:23 pm
ma provando ad usare la tool-chain contenuta nell'ide 1.0.1?

Quote
recuperare gli strumenti dell'"epoca" per compilare?

tocca a me fare il calimero smiley

leo, il problema con la flag lo ho avuto anche io, stesso identico. tolta la flag, mi da una smadonnata di errori, non vedo come tu abbia risolto

ps. ho usato il file .c scaricato da uno dei primi post, anche lui affetto da puntovirgolettismo?
5158  International / Generale / Re: Problemi con programmino semplice on: May 23, 2012, 04:11:04 pm
l'errore è dato dal fatto che ad ogni open DEVE corrispondere una CLOSE. aggiusta il tuo codice di conseguenza.

Quote
mi dice che dataFile non è dichiarato per quello scopo.

si chiama visibilità delle variabili. una variabile nasce e muore all'interno del suo blocco, ovvero delle {}, e non può essere vista da cose al di fuori del suo blocco (salvo particolari casi) anche se "viva", però può essere vista dai "sottoblocchi". cerca visibilità delle variabili su wikipedia o google per magiori info.
5159  International / Generale / Re: Realizzare un prototipo. E super Tecnici on: May 23, 2012, 03:09:08 pm
Quote
Anche la mega ha la stessa velocità di esecuzione della uno ma ha molta più ram e flash, mentre per la leonardo non so se la flash e ram sono paragonabili alla uno.
la leonardo ha minor flash per via dell'usb, e più ram (sulla carta, nella realtà da vedere per lo stesso motivo della flash)
5160  Using Arduino / Programming Questions / Re: Found a 64bit double implementation library, but I cannot compile it on: May 23, 2012, 03:03:22 pm
tried my code:

Code:
void run(){
  BigNumber lon1 = BigNumber("12.563545");
  lon1 /= RADS;
  BigNumber lon2 = BigNumber("12.561801");
  lon2 /= RADS;
  BigNumber lat1 = BigNumber("42.857818");
  lat1 /= RADS;
  BigNumber lat2 = BigNumber("42.858689");
  lat2 /= RADS;
  BigNumber a,c;
 
  time = micros();

  BigNumber sinLat1 = sine(lat1);
//  Serial.print("a ");
  BigNumber sinLat2 = sine(lat2);
//  Serial.print("b ");
  BigNumber cosLat1 = cosine(lat1); 
//  Serial.print("c ");

  BigNumber part1a = sinLat1*sinLat2;
//  Serial.print("c1 ");
  BigNumber part1b = cosLat1*cosine(lat2);
//  Serial.print("c2 ");
  BigNumber part1c = cosine(lon1-lon2);
//  Serial.print("c3 ");
  BigNumber part1d = part1a+part1b*part1c;
//  Serial.print("c4 ");
  a = acos(part1d);
 
 
//  Serial.print("d ");
  BigNumber partD1 = sinLat2 - sinLat1;
//  Serial.print("dA:");
  printBignum( a );
//  Serial.print(" ");
  BigNumber partD2 = cosine(a);
//  Serial.print("dB ");
  BigNumber part1 = partD1 * partD2;
//  Serial.print("d1 ");
  BigNumber part2 = (cosLat1 * sine(a));
//  Serial.print("d2 ");
  BigNumber part3 = part1/part2;
//  Serial.print("d3 ");
  c = acos( part3 );
//  Serial.print("e ");
  if ( sine(lon2-lon1)>=0 )
    c=2*M_PI-c;
   
  time = micros()-time;
  cAstro = c;
  dAstro = a;
  Serial.println ("test2:");
//  Serial.print ("distance:");
//  Serial.println ((c*RADS));
  Serial.print ("distance radians:");
  //Serial.println ((c));
  printBignum( c );
  Serial.print("time:");
  Serial.println (time);
}

acosine implementation (very bad precision):
Code:
BigNumber acosine(float x) {
  BigNumber negate = BigNumber(x < 0);
  if (x < 0){
     x*=-1;
  }
  BigNumber ret = -0.0187293;
  ret *= x;
  ret += 0.0742610;
  ret *= x;
  ret -= 0.2121144;
  ret *= x;
  ret += 1.5707288;
  BigNumber bigSqrt = x-1;
  ret *= bigSqrt.sqrt();
  ret -= 2 * negate * ret;
  return negate * bigPI + ret;
}

execution time (microseconds, precision of 5): 142256 vs 116(using float)
precison of 10: 474288
ram overflow with precision 20
Pages: 1 ... 342 343 [344] 345 346 ... 699