Go Down

Topic: [RISOLTO] ATtiny 85 avrdude: stk500_getsync(): not in sync: resp=0x15 (Read 2 times) previous topic - next topic

sciorty

Ragazzi un altro problemino  :smiley-roll:
Carico arduino ISP sull'ATmega, quindi il seguente codice sul tiny:
Code: [Select]
#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 4);

void setup()
{
  mySerial.begin(9600);
  delay(2000);
}

void loop() {
    mySerial.println('c');
    delay(1000);
}


che va a buon fine e, successivamente, il seguente sull'ATmega:
Code: [Select]
char c;

void setup() {
  Serial.begin(9600);
}

void loop() {
  while (Serial.available() > 0) {
      c = Serial.read();
      Serial.print(c);   
  }
}


Ma non vedo niente sul serial monitor, il pin 3 e 4 (che dovrebbero essere RX e TX) sono collegati rispettivamente a TX ed RX dell'ATmega.. in ogni caso non funziona neanche al contrario..


leo72

A quanti MHz lavorano i tuoi Tiny, non mi ricordo più? La SoftwareSerial regge 8 MHz, non 1 MHz.
E poi controlla la versione del core Tiny, se non hai la 0100-0015 riscaricatelo perché tutte le precedenti avevano un bug per cui la seriale software non funzionava.
Infine, cambia anche pin.

sciorty

Ho provato sia ad 1 che ad 8 Mhz, la versione penso sia quella che dici tu http://code.google.com/p/arduino-tiny/downloads/list
Ormai ho posato tutto, dici che potrebbe essere un problema di pin? Nella maggior parte dei tutorial usano quelli comunque..

leo72

Ad 1 MHz non va, stanne pur certo.
Per i pin, prova 0 e 1, io li ho usati sempre con successo.

sciorty

Neanche cambiando i pin.. escluderei problemi dell'ATmega visto che in ogni caso il led RX sull'arduino non si accende.

Ho provato con la libreria NewSoftSerial seguendo questa guida e quindi andando a sostituire la funzione enable_timer0 nel file .cpp con le righe da loro dette ma l'errore restituitomi nella compilazione è questo:

Quote
In file included from tiny_test_trasmissione_newserial.cpp:2:
C:\Documents and Settings\Dario\Desktop\Dario\Arduino\arduino-0023\libraries\NewSoftSerial/NewSoftSerial.h:71: error: conflicting return type specified for 'virtual void NewSoftSerial::write(uint8_t)'
C:\Documents and Settings\Dario\Desktop\Dario\Arduino\arduino-0023\hardware\tiny\cores\tiny/Print.h:73: error:   overriding 'virtual size_t Print::write(uint8_t)'

sciorty

E grazie, i fuse erano ancora impostati ad 1Mhz! L'errore non me lo dava ma provando con un blink effettivamente va più lento mettendolo ad 8Mhz!
Ho provato a scrivere il bootloader con arduino ma l'errore è questo:
Code: [Select]
avrdude: invalid byte value (null) specified for immediate mode
avrdude: write to file 'null' failed


di cui in rete ho trovato poco o comunque riferimenti alla riga di comando di avrdude che sinceramente non ho capito cosa sia.
Ho provato in ogni caso ad aggiungere questa riga nel file arduino\hardware\tools\avr\etc\avrdude.conf :
Code: [Select]
read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";


avendo questo:
Code: [Select]
#   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
     memory "signature"
         size            = 3;
         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
       ;
     memory "lock"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
                           "x x x x  x x x x  1 1 i i  i i i i";
         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;


Ma niente, effettivamente questo andava fatto per l'errore
avr_read(): error reading address 0x0000
read operation not supported for memory "lock"
avrdude: failed to read all of lock memory, rc=-2 

che a me neanche era spuntato..

Michele Menniti

Se vuoi cambiare i fuse ad un tiny devi ricorrere ad AVRDUDE, non ho mai provato con l'1.0.1 ma con la 0022 la scrittura del bootloader (peraltro fittizio, in quanto vuoto) non cambiava i valori dei fuse.
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

sciorty

Ma allora perchè dicono di scrivere il bootloader?


Se vuoi cambiare i fuse ad un tiny devi ricorrere ad AVRDUDE


Come ? :\

Ho una confuzione in testa..! Ricapitolando con la NewSoftSerial @ 1 Mhz mi da quell'errore che sarà probabilmente di sintassi e con la SoftSerial sia @1 che 8 Mhz la compilazione va a buon fine ma essendo i fuse impostati a 1 la seriale non va e i delay sono a 8x


Michele Menniti

chi lo dice? la tecnica di scrittura del bootloader per cambiare i fuse funziona solo con gli ATmega.
Posso prepararti la stringa per eseguire il comando da AVRDUDE ma mi serve sapere:
modello di Arduino
versione IDE
micro da programmare (sappiamo che è il tiny85)
Altra cosa: alla fine NON hai detto se per programmare il tiny hai usato il condensatore o no e se nel frattempo hai aggiornato il bootloader della tua Arduino alla versione Optiboot 4.4.
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

sciorty

#24
Oct 28, 2012, 03:58 pm Last Edit: Oct 28, 2012, 04:03 pm by sciorty Reason: 1
Non l'ho aggiornato, per il condensatore era sottinteso che lo usassi perchè senza non funzionava  :)

Ho visto in giro queste stringhe ma effettivamente non ho capito dove vanno messe. In un terminale che sarebbe avrdude?
Se si dove lo trovo?Non c'entra niente con il windowsavr che se non sbaglio avevo scaricato per l'upload di sketch "grandi" sul tiny?

grazie per la pazienza :D

Arduino 0023 su XP

sciorty


chi lo dice? la tecnica di scrittura del bootloader per cambiare i fuse funziona solo con gli ATmega.


Lo dicono qui.
Gli Attiny escono di fabbrica con i fuse impostati in maniera tale che il microcontrollore utilizzi l'oscillatore interno a 1Mhz. E' l'opzione migliore per la maggior parte dei progetti, ma se aveste bisogno di una velocità maggiore si può programmare l'Attiny in maniera tale che utilizzi il proprio oscillatore interno a 8Mhz oppure utlizzando un oscillatore esterno a 16Mhz (vedi post precedenti). Se vogliamo cambiare velocità al nostro Attiny, utlizzando as esempio l'oscillatore interno a 8Mhz, dobbiamo settare i fuse, facendo un'upload di un bootloader vuoto, contenente solo i settaggi che ci interessano. Per fare ciò è sufficiente selezionare da Tools -> Boards il settaggio che ci interessa (ad esempio Attiny85 @ 8Mhz), e poi Tools -> Burn bootloader --> w/Arduino as ISP.
A questo punto probabilmente vi darà il seguente errore:

che sarebbe l'errore di cui parlavo sopra ma che a me non è spuntato

Michele Menniti

beh, fagli sapere che è sbagliato o che la spiegazione non porta al risultato sperato.
Arduino 0023 quand'è uscito? Ancora devono completare la prima distribuzione della DUE e già sono alla 23? :smiley-yell:
Scherzo, AVRDUDE è il programma che permette di dialogare in lettura e scrittura con il micro, nel nostro caso sempre mediante tecnica ISP.
Devi:
1 - (per comodità) copiare in C:\ la cartella "avr" che si trova in tuopath\hardware\tools dell'IDE 0023
2 - caricare ArduinoISP sulla tua UNO (immagino...)
3 - collegare Arduino UNO al tuo micro tiny 85 con la tecnica ISP, aggiungendo il condensatore
4 - esegui il prompt di DOS e vai su C:\
5 - aspetti intanto che ti preparo la stringa ;)
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

astrobeed


5 - aspetti intanto che ti preparo la stringa ;)


6 - metti su la caffettiera che tra poco passo da te  :D

Michele Menniti



5 - aspetti intanto che ti preparo la stringa ;)


6 - metti su la caffettiera che tra poco passo da te  :D

Se dovesse davvero mai capitare ne sarei più che felice e la prima tappa sarebbe il miglior Ristorante della zona ;) ma è vero, il piacere di un caffé domestico è impagabile, specialmente quando lo sorseggi parlando con un amico  XD

@sciorty
7 - scrivi la stringa
Quote
"C:\avr\bin\avrdude.exe" -C "C:\avr\etc\avrdude.conf" -p t85 -c stk500v1 -b 19200 -P COM2 -U lfuse:w:E2:m -U hfuse:w:DF:m -U efuse:w:FF:m
e poi premi INVIO
al posto di COM2 metti la COM con cui è riconosciuta la tua Arduino, il resto NON devi modificarlo.
Postami tutti i messaggi che escono dopo il comando.
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

sciorty

#29
Oct 28, 2012, 04:48 pm Last Edit: Oct 28, 2012, 05:00 pm by sciorty Reason: 1
ahahaha scusa comunque è una 2009, molto probabilmente un clone che presi inconsapevolmente 1 anno fa quando cominciai!

Ho caricato l'Arduino ISP sull'arduino, mandati in esecuzione i comandi e il risultato sputato fuori è quello allegato.
Quindi uno sketch sul tiny:
Code: [Select]

#include <SoftwareSerial.h>

SoftwareSerial mySerial(0, 1);

void setup()
{
 mySerial.begin(9600);
 delay(2000);
 pinMode(2,OUTPUT);
}

void loop() {
   delay(500);
   digitalWrite(2,LOW);
   delay(500);
   digitalWrite(2,HIGH);
   mySerial.println('c');
}


Ma il delay è di 4 secondi circa ancora :'(

Go Up