caricare sketch con un altro arduino

si tonid ho ancora di problemi nel bootdrive

Ok. Fammi per favore un riassunto della situazione e vediamo,con un quadro completo, se posso aiutarti ....mi serve sapere anche con che versione dell'ide generi i file hex che metti poi nella SD card,i collegamenti fra arduino e chip in stand alone (rx/tx/reset).
Io a suo tempo ero riuscito,come hai letto,a far funzionare il tutto,se è il caso monto tutto e ti do una mano.
Ciao

allora per quanto riguarda il boot drive avevo provato a collegare il duemilanove come programmatore e un uno come target senza risultai , poi avevo provato con il mega ma ancora niente, successivamente provai a collegare il il duemilanove ad un atmega 328 in standalone naturalmente cambiando i valori nel programma per adattarli a quelli dell arduino duemilanove ma ancora niente da fare, per i collegamenti ho seguito esattamente quelli dell'immagine l'unica cosa per cui si differenziava era che al posto di usare un modulo sd ho usato un adattatore di micro sd collegato hai pin spi al quale cambio le microsd ( che funziona in quanto testato con lo sketch d esempio dumpfile) l'arduino uno adesso non lo possiedo più perchè me l'aveva prestato un mio amico che poi ha rotto quindi i material in mio possesso sono : un arduino duemilanove, un arduino mega e due atmega 328 e un atmega 328 bloccato a causa del test con il bootloader 2boot.

Allora nelle mie prove avevo usato un'arduino 1 ed un Atmega328p in stand alone con il quarzo da 16 MHz ed il led e resistenza sul pin digitale 13 che è il 19 del chip.
Per quanto riguarda la scheda SD ho uno shield che utilizza gli stessi pin dello skecht del boot drive (cs sul pin 10).
Per prima cosa devi caricare il bootloader sul chip vergine tramite la tecnica ISP sfruttando l'arduino 1 come programmatore ISP con il relativo sketch persente negli esempi dell'ide caricato.
Ora ti devi preparare il blink.hex da caricare sulla SD.
Per fare questo devi usare la versione dell'ide 1.0 perchè nel mio caso con diverse prove fatte con l'ide 1.0.1 il file hex generato in fase di compilazione e trasferito poi su SD card non viene caricato sul micro in stand alone. Dopo aver controllato ho notato che ci sono delle differenze tra i due file hex generati(ide 1.0 ed ide 1.0.1),nel primo caso(ide1.0)la cartella ha 2,85KB mentre nel secondo caso 3KB.
La cartelle comparirà con il nome Blink.cpp e conterrà il file HEX ed andrà chiamata allo stesso modo che usi nello sketch.
Ad esempio se chiami la cartella Blink nello sketch dovrai scrivere Blink.hex.
Ora monta la SD card all'arduino,carica lo sketch bootdrive ed eseguita questa operazione stacca tensione e collegati il pin tx arduino all'rx stand alone(pin 2) ,il pin rx arduino al pin tx dello stand alone(pin 3)ed infine il reset che lo prenderai dal pin 6 di arduino e lo porti allo stand alone pin 1 con una R da 10K in pull-up ed infine dai tensione.
Per trasferire il file della sd non devi aprire il serial monitor altrimenti non funge,ti da degli errori,devi solo premere il tasto reset dell'arduino ed attendere circa 5/6 secondi e dovresti vedere due serie di lampeggi sul pin digitale 13 dello stand alone e subito dopo cominciare con il blink che avevi scritto nella sd.
Fammi sapere

grazie tonid adesso funziona , ma caricando il mio sketch creato utilizzando la libreria tv out non riesco a caricarlo da SD , mentre le demo di quella libreria si e funzionano .... ??

grazie tonid adesso funziona , ma caricando il mio sketch creato utilizzando la libreria tv out non riesco a caricarlo da SD , mentre le demo di quella libreria si e funzionano .... ??

Beh,almeno inizia a funzionare qualcosa.
Ma il file hex lo tiri fuori sempre dall'ide 1.0 ?
E' tanto grande come KB ?

si dall ide 1.0 ed è 63 k ma anche riducendolo a 37 non va ... non saprei proprio

o meglio lo sketch lo carica ma per qualche strano motivo mi da problemi , il led sul pin tredici inizia a lampeggiare velocemente e sulla televisione niente .... ho fatto diverse prove :
modificando lievemente lo sketch della demo funziona tutto bene ( ad esempio modificando le parole che dovrebbe visualizzare su tv)
cancellando tutto in modo che il software visualizzi una frase sullo schermo niente stesso problema di prima... qualcuno conosce il perchè? sarà un problema di libreria o altro ?

nuove scoperte

#include <TVout.h>
#include <fontALL.h>
#include "schematic.h"
#include "TVOlogo.h"

TVout TV;

int zOff = 150;
int xOff = 0;
int yOff = 0;
int cSize = 50;
int view_plane = 64;
float angle = PI/60;


void setup() {
  TV.begin(PAL,120,96);
  TV.select_font(font6x8);
  
  
  //rectangles and lines
  TV.clear_screen();
  TV.draw_rect(20,20,80,56,WHITE);
  TV.delay(500);
  TV.draw_rect(10,10,100,76,WHITE,INVERT);
  TV.delay(500);
  TV.draw_line(60,20,60,76,INVERT);
  TV.draw_line(20,48,100,48,INVERT);
  TV.delay(500);
  TV.draw_line(10,10,110,86,INVERT);
  TV.draw_line(10,86,110,10,INVERT);
  TV.delay(2000);
  
  //random cube forever.
  TV.clear_screen();
  TV.print(16,40,"Random Cube");
  TV.print(28,48,"Rotation");
  TV.delay(2000);
  
  
}

void loop() {
  
}

cosi va .

#include <TVout.h>
#include <fontALL.h>
#include "schematic.h"
#include "TVOlogo.h"

TVout TV;

int zOff = 150;
int xOff = 0;
int yOff = 0;
int cSize = 50;
int view_plane = 64;
float angle = PI/60;


void setup() {
  TV.begin(PAL,120,96);
  TV.select_font(font6x8);
  
  
  
  
  
 
  
  //rectangles and lines
  TV.clear_screen();
  TV.draw_rect(20,20,80,56,WHITE);
  TV.delay(500);
  TV.draw_rect(10,10,100,76,WHITE,INVERT);
  TV.delay(500);
  TV.draw_line(60,20,60,76,INVERT);
  TV.draw_line(20,48,100,48,INVERT);
  TV.delay(500);
  TV.draw_line(10,10,110,86,INVERT);
  TV.draw_line(10,86,110,10,INVERT);
  TV.delay(2000);
  
  //random cube forever.
  TV.clear_screen();
  TV.print(16,40,"Random Cube");
  TV.print(28,48,"Rotation");
  TV.delay(2000);
  
  
}

void loop() {
  TV.println(16,40,"ciao");
}

cosi non va più

ho aggiunto solo una riga nel loop :sweat_smile:

Ma a RAM come sei messo? Hai controllato se non viene saturata?
Uno degli esempi della TVout, così com'è, ti funziona oppure no?

la ram penso che sia sufficiente, visto che se il mio programma lo carico sull' atmega328p con l'arduino e poi lo stacco dallo zoccolo e lo metto in un circuito separato funziona benissimo .... l'esempio che c'è nella libreria cosi com'è funziona, è per questo che non capisco il perchè

Prova a mettere un blink del led 13 nel loop.
Così capiamo se è un problema di memoria esaurita dalla TVout oppure se si tratta di un altro problema.

no non funziona ugualmente

Io controllerei la Ram libera, allora.

ma se fosse un problema di ram non credi che pure la demoPal sarebbe troppo grossa?

non credo sia la ram siccome la demoPal completa va mentre questo sketch da due righe no..

#include <TVout.h>
#include <fontALL.h>
#include "schematic.h"
#include "TVOlogo.h"

TVout TV;

void setup() {
TV.begin(PAL,120,96);
TV.println("I am the TVout\nlibrary running on a freeduino\n");
TV.delay(2500);
}
void loop() {
}

Che cos'è questo codice?

#include "schematic.h"
#include "TVOlogo.h"

Nella TVout che ho io, non ce l'ho.
Cos'è che viene incluso?

uno serve per visulizzare il logo della libreria

#include <avr/pgmspace.h>
#ifndef TVOLOGO_H
#define TVOLOGO_H

extern const unsigned char TVOlogo[];
#endif

l'altro non lo so però è questo

#include <avr/pgmspace.h>
#ifndef SHEMATIC_H
#define SHEMATIC_H

extern const unsigned char schematic[];
#endif

ho risolto era un problema di librerie a quanto pare erano danneggiate quelle della tv out le ho reinstallate e adesso va :slight_smile: .... ho un altra domanda adesso ... ma è possibile fare questa cosa con due micro in standalone ?? io ci ho provato ma sembra non andare , magari avete qualche accorgimento da consigliarmi ...

nessuno sa niente ? :slight_smile: scusate l'impazzienza ma il tempo che ho a disposizione inizia a scarseggiare :slight_smile: