DMangia
Programmazione seriale di un attiny85 con arduino 2009
Tutorials -
Lunedì 27 Febbraio 2012 21:17
Scritto da DMangia

Premessa

L’attiny85 è un chip dalle caratteristiche eccezionali: è piccolo come un timer 555, quasi potente come un atmega 8 e costa poco più di 1.50 euro (si trova a basso prezzo su ebay o su http://it.mouser.com/

Prima di descrivere la programmazione della seriale dell’attiny, bisogna però impostarlo a 8 Mhz, perché accetti la libreria NewSoftSerial.

 

Modifica a 8 Mhz dei fuses di attiny85.

Ci sono vari tutorial sul web su come impostare un attiny85 perché lavori a 8 Mhz. Io li ho trovati un po’ prolissi o ingarbugliati, per cui mi sono preso questi appunti per rendere la cosa più semplice possibile. Ho usato come guida principale, quella prodotta da Leonardo Miliani, scaricabile in pdf sul sito

http://www.leonardomiliani.com/?p=435

Leonardo ha fatto un lavoro eccellente, per cui le spiegazioni più approfondite le potete vedere sulla sua guida. Io mi accontento solo di mostrare come far funzionare le cose su ambiente windows. Inanzitutto, si usa arduino come programmatore ISP. Si carica sulla scheda arduino lo sketch arduinoISP, si scollega poi Arduino al pc, e si collega il micro esterno come in figura, con i seguenti collegamenti:

 

 

Si ricolleghi quindi al pc arduino. Attenzione: se si ha una scheda arduino 2009, bisogna prima inserire una resistenza da 120 ohm sul pin reset e alimentarlo a 5V(senza quest’accortezza il trasferimento sull’attiny non funzionerà affatto). Ci si porta poi sulla directory principale di arduino-22 e si va nella directory “arduino-22 /hardware/tools/avr/bin” dove si trova l’eseguibile “avrdude.exe”.

A questo punto, per comodità, ho copiato qui il file avrdude.conf che in realtà sta un livello più sopra, nella cartella “etc” . Si apre la shell dos e si scrive:

avrdude -P COM4 -C avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 –b 19200

 

Nota: la mia scheda arduino è collegata sulla USB definita COM4, nel caso questo valore va cambiato a seconda di quello che appare sull’IDE nella sezione di menu tools->serial port. Il risultato se positivo sarà:

 

A questo punto il gioco è fatto, l’attiny è a 8 Mhz!!!! Applausi, grazie, grazie!! :-DD

Grande leonardo!!

 

 

Arduino come programmatore seriale per attiny85

Ok, qui le cose sono più complicate. Ci ho sbattuto la testa un po’ ma poi sono riuscito a far comunicare i due giovanotti con la stessa lingua.

Per facilitare la programmazione dell’attiny, ho usato un pacchetto distribuito dal sito: http://hlt.media.mit.edu/?p=1229

 

che si chiama “attiny45_85”. Una volta scaricato, si scompatta come sta nella directory “hardware” dell’IDE. Poi ho caricato sull’arduino lo sketch arduinoISP, che si trova tra gli esempi. Quindi ho staccato arduino dal pc, e ho messo i cavetti sull’attiny85 come in figura.

 

In questo modo, li facciamo comunicare secondo lo standard SPI.

A questo punto, mi sono creato un semplice sketch per l’attiny. (Ricordandosi di includere la libreria SoftwareSerial)

//pin sull’attiny85
#define RX_PIN 0
#define TX_PIN 1
NewSoftSerial mySerial(RX_PIN, TX_PIN);
void setup() {
  mySerial.begin(9600);
}
void loop() {
  delay(1000);
  mySerial.println(123);
  delay(1000);
  mySerial.println(321);
}

Prima di compilarlo, mi sono caricato prima di tutto la libreria NewSoftSerial inclusa nel pacchetto della guida di Miliani, ponendola nella cartella “libraries” dell’IDE. Poi ho selezionato dal menu dell’IDE “tools/boards/ Attiny85 (w/Arduino as ISP)” e ho fatto l’upload dello sketch. La cosa è riuscita benissimo, dandomi solo il solito errore contente la parola PAGEL.

Allora, pieno di fiducia nel futuro, ho staccato l’attiny dalla scheda arduino e ho caricato su arduino uno sketch per far leggere i dati seriali inviati dal piccolo chip:

//lettura dati dalla seriale con attiny
String msg;
char c;
void setup() {
  Serial.begin(9600);
}
void loop(){
  while(Serial.available()>0){
    c=Serial.read();
    msg += c;
  }
  Serial.println(msg);
  msg="";
} 

 

Poi ho collegato l’attiny incrociando i fili rx arduino/tx attiny come in figura(filo verde), senza però aggiungere i pulsanti e le resistenze disegnate:

 


 

Il risultato è questo sul serial monitor di arduino:

123

321

123

321

123

321

Ok, i due comunicano in modo eccellente!!! Spero di essere stato chiaro. Alla prossima!!

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi