Go Down

Topic: Pico85 SMD - La prima board Arduino compatibile di Gioblu Robotics (Read 19837 times) previous topic - next topic

Michele Menniti


Esatto. In pratica si compila questo file che altro non dice al micro che di saltare all'indirizzo $0000 che è quello di inizio della Flash e di inizio del programma dell'utente  :P
Cmq questa soluzione non mi piace. Ci vorrebbe Brainbooster che "spippolasse" un po' su ArduOpen e mettesse l'opzione per flashare i fuse senza toccare il resto. Ma Brain ultimamente si è dato alla macchia.

+1  :(
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

alegiaco

#286
Oct 12, 2011, 10:58 am Last Edit: Oct 12, 2011, 11:10 am by alegiaco Reason: 1
Grazie al vostro aiuto sono riuscito a far comunicare Pico85 e Arduino via seriale e poichè le istruzioni sono sparpagliate all'interno del thread, riassumo in un unico post come realizzare la comunicazione seriale con il Pico85 su windows. Si presuppone di aver già installato ArduOpen e di essere in grado di caricare sketch sul Pico85.

Impostare il clock del Pico85 a 16 Mhz
1. andare su \hardware\tools\avr\bin nell'IDE di ArduOpen o Arduino
2. lanciare il comando, sostituendo alla COM3 la vostra COM: avrdude -p ATtiny85 -c stk500v1 -b 19200 -P COM3 -U lfuse:w:0xf1:m
3. verificare che tutto sia andato bene
4. andare su /sketchbook/hardware/attiny45_85 (la cartella che avete creato quando avete installato ArduOpen)
5. aprire il file boards.txt. In questo file cambiare tutte le voci attinyx5avrisp.build.f_cpu=1000000L in attinyx5avrisp.build.f_cpu=16000000L       (in alternativa si può creare una nuova scheda duplicando le righe e modificando i valori come detto)

Modificare la libreria NewSoftSerial:
1. andare in /libraries/NewSoftSerial su ArduOpen (ultima versione)
2. Aprire il file NewSoftSerial.cpp con un editor di testo.
3. Cercare la funzione void NewSoftSerial::enable_timer0(bool enable)
4. Modificare il codice da così:

Code: [Select]

{
 if (enable)
#if defined(__AVR_ATmega8__)
   sbi(TIMSK, TOIE0);
#else
 sbi(TIMSK0, TOIE0);
#endif
 else
#if defined(__AVR_ATmega8__)
   cbi(TIMSK, TOIE0);
#else
 cbi(TIMSK0, TOIE0);
#endif
}


a così:

Code: [Select]
{
#if defined(__AVR_ATmega8__) || defined(__AVR_ATtinyX5__)
 sbi(TIMSK, TOIE0);
#else
 sbi(TIMSK0, TOIE0);
#endif
#if defined(__AVR_ATmega8__) || defined(__AVR_ATtinyX5__)
 cbi(TIMSK, TOIE0);
#else
 cbi(TIMSK0, TOIE0);
#endif
}


E ora un programma di prova.
Cosa serve:- Pico85- Arduino 2009 / Uno
Collegamenti:
- Alimentare Pico85 con 5v e gnd presi da Arduino
- Collegare la USB all'Arduino
- Pin 0 Pico 85 ---> Pin 12 Arduino
- Pin 1 Pico 85 ---> Pin 11 Arduino
- Pin 2 Pico 85 ---> Pin 13 Arduino

Il codice del Pico85 fa lampeggiare un paio di volte il led posto sul pin 13 dell'Arduino e poi lo lascia costantemente acceso.Poi invia sulla seriale i caratteri 0123456789 in continuazione.
Codice da caricare su Pico85:

Code: [Select]
#include <NewSoftSerial.h>

NewSoftSerial mySerial(0, 1);
int i=0;
int k=0;

void setup()  
{
 mySerial.begin(38400);
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(2, HIGH);

}

void loop()  
{
for (k=0; k<10; k++)
{    
     mySerial.print(k);
     delay(5);
 }
}



Il codice dell'Arduino fa una prova di stampa sul monitor seriale per verificare che tutto stia funzionando.Poi legge i valori sui pin 11 e 12 inviati dal Pico85 e li stampa sul monitor seriale in questo modo:
01234
56789
01234
56789
01234
56789     all'infinito

Codice da caricare su Arduino:

Code: [Select]
#include  <NewSoftSerial.h>

int i = 0;
int k=0;

NewSoftSerial mySerial(11, 12);

void setup()  
{
 Serial.begin(38400);
 mySerial.begin(38400);
 pinMode(13, INPUT);
 Serial.println("Inizio setup");
 
  for (k=0; k<10; k++)
{    
     Serial.print(k);
     delay(5);
}
Serial.println();
Serial.println("fine setup");
}

void loop()  
{
 if (mySerial.available()) {
     Serial.print((char)mySerial.read());
     i++;
 }
 if (i > 4) {
   Serial.println();
   i = 0;
 }
}

Michele Menniti

Ottimo!!!! grazie della condivisione. Potresti racchiudere tra
Code: [Select]
tutti i frammenti di codice?
Grazie ancora.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Scusate ma per dovere di cronaca e giustamente per dare a Cesare quel che è di Cesare, mi pare giusto dire che queste cose sono tutte farina del mio sacco e che le ho scritte nella mia guida alla programmazione degli Attiny85 che ho pubblicato mesi fa sul sito di Gioblu.

La modifica alla lib NewSoftSerial l'ho fatta per primo io perché altrimenti tale lib non si compilava sui Tiny. Anzi, ti dirò di più: tale lib funziona solo in TX e non in RX usa un interrupt e blocca la gestione temporale del millis. Puoi usare solo la SoftwareSerial in ricezione, bloccando però l'esecuzione del codice.


alegiaco

Certo è tutta roba che viene quasi completamente da te. Sono stato molto chiaro nel dire nella prima fase che ho solo riassunto in un solo post quello che è sparso nei vari post. Buono a sapersi che funziona solo in trasmissione.

Michele Menniti


Scusate ma per dovere di cronaca e giustamente per dare a Cesare quel che è di Cesare, mi pare giusto dire che queste cose sono tutte farina del mio sacco e che le ho scritte nella mia guida alla programmazione degli Attiny85 che ho pubblicato mesi fa sul sito di Gioblu.

La modifica alla lib NewSoftSerial l'ho fatta per primo io perché altrimenti tale lib non si compilava sui Tiny. Anzi, ti dirò di più: tale lib funziona solo in TX e non in RX usa un interrupt e blocca la gestione temporale del millis. Puoi usare solo la SoftwareSerial in ricezione, bloccando però l'esecuzione del codice.


Leo, ma nessuno ti a scesarizzato! :smiley-eek-blue: Lui ha scritto CHIARAMENTE di aver raccolto le informazioni sparse nel thread, quindi certamente anche o solo le tue, non si è preso alcun merito; io l'ho ringraziato per aver messo un post riepilogativo, se poi è la copia sputata del tuo tutorial onestamente non c'ho fatto caso, ma mi sembrava giusto incentivare questo tipo di azioni; se qualcuno facesse così in ognuno dei mega-topic che ci sono sul Forum, sarebbe una bella cosa, non ti pare? Ovvio che i meriti sono intrinsechi nella lettura degli interventi, il tuo nome ormai è quasi sinonimo di attiny XD
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Scusa Alegiaco se me la sono presa: il mio lavoro è sì pubblico ma uno gradisce anche che gli venga dato il giusto credito. D'altronde, si vive anche di gloria e onore.  :smiley-sweat:

@Mike:
non ce l'avevo con te, solo che tu avevi scritto mentre io stavo postando e non volevo leggere l'intervento prima di mandare il mio post.


astrobeed


Scusate ma per dovere di cronaca e giustamente per dare a Cesare quel che è di Cesare


Non mi fate arrabbiare Leo, c'è la luna piena e rischiate di dover fare i conti col famigerato pinguino mannaro  :smiley-mr-green:

Michele Menniti


@Mike:
non ce l'avevo con te, solo che tu avevi scritto mentre io stavo postando e non volevo leggere l'intervento prima di mandare il mio post.

:smiley-sweat: :smiley-sweat: la prossima volta leggi prima, per piacere, mi hai fatto prendere un colpo! maremma attinyana :smiley-sweat: :smiley-sweat:

@ astrobeed: ma ce lo vedi un pinguino che ti corre dietro per sbranarti? ma come ti vengono ste cose? :smiley-mr-green:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Non scherzate coi pinguini: il pinguino imperatore passa il metro di altezza e può arrivare a pesare anche 40 Kg... quindi ocio... che se ti da dietro uno di quelli io dico che scappi anche te  XD XD

Michele Menniti


Non scherzate coi pinguini: il pinguino imperatore passa il metro di altezza e può arrivare a pesare anche 40 Kg... quindi ocio... che se ti da dietro uno di quelli io dico che scappi anche te  XD XD

No, no, 40kg di carne grassa gratuita, in più mi vendo la corona :D, e chi si muove, vieni belloccio vieni ]:D
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Se è per mangiarlo... allora ti resta solo il becco... perché se viene a casa mia difficilmente ne esce vivo.  ]:D

astrobeed


Michele Menniti

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72


Go Up