Arduino Forum

International => Italiano => Megatopic => Topic started by: leo72 on Mar 28, 2011, 11:50 am

Title: Giocando con l'Attiny85
Post by: leo72 on Mar 28, 2011, 11:50 am
Stamattina, con questa giornata piovosa, mi sono messo a giocare con l'Attiny.
Ho fatto un piccolo circuitino che "gioca" con 3 LED la cui intermittenza può essere cambiata premendo il pulsantino sulla breadboard.

Questo è il codice dello sketch (1176 byte):
Code: [Select]

#define RED 2
#define YELLOW 1
#define GREEN 0
#define BUTTON 4

byte value=1;
byte state=0;

byte val1=0;
byte val2=0;
byte change=0;
byte sequence=0;
unsigned long timer;


void setup() {                
 pinMode(RED, OUTPUT);    
 pinMode(YELLOW, OUTPUT);
 pinMode(GREEN, OUTPUT);
 pinMode(BUTTON, INPUT);
}


void loop() {
 
   //funzione di Debounce per il pulsantino - da qui....
   val1=digitalRead(BUTTON);
   delay(10);
   val2=digitalRead(BUTTON);
   if (val1==val2) {
       if (val1!=change) {  
           if (val1==LOW) {
               write_leds(LOW, LOW, LOW);
               value++;
               if (value>5) { value=0; }
               sequence = 0;
               timer=millis()-100;
           }
       }
   }
   //...a qui
   
   //controlla se non sia ora di far lampeggiare un LED
   change=val1;
   if (millis() > timer) {
   timer = millis()+500;
       switch (value) {
           case 0:
               //tutti spenti
               write_leds(LOW, LOW, LOW);
               break;
           case 1:
               //alterna il LED rosso
               if (sequence == 0) {
                   write_leds(LOW, LOW, LOW);
               } else {
                   write_leds(HIGH, LOW, LOW);
               }
               sequence ^= 1;
               break;
           case 2:
               //alterna il LED giallo
               if (sequence == 0) {
                   write_leds(LOW, LOW, LOW);
               } else {
                   write_leds(LOW, HIGH, LOW);
               }
               sequence ^= 1;
               break;
           case 3:
               //alterna il LED verde
               if (sequence == 0) {
                   write_leds(LOW, LOW, LOW);
               } else {
                   write_leds(LOW, LOW, HIGH);
               }
               sequence ^= 1;
               break;

           case 4:
               //alterna i 3 LED in sequenza
               switch (sequence) {
                   case 0:
                       write_leds(HIGH, LOW, LOW);
                       break;
                   case 1:        
                       write_leds(LOW, HIGH, LOW);
                       break;
                   case 2:
                       write_leds(LOW, LOW, HIGH);
                       break;
               }
               sequence++;
               if (sequence > 2) { sequence = 0; }
               break;
           case 5:
               //tutti accesi
               write_leds(HIGH, HIGH, HIGH);
               break;
       }
   }
}


void write_leds(byte state1, byte state2, byte state3) {
//modifica le porte dei 3 LED
   digitalWrite(RED, state1);
   digitalWrite(YELLOW, state2);
   digitalWrite(GREEN, state3);
}


Allegato trovate anche lo schema del circuito e dei collegamenti con l'Arduino.
PRECISAZIONE: il condensatore da 10 uF che vede tra il pin RESET ed il pin GND di Arduino vale solo per le schede Arduino UNO. Per le schede Arduino 2009 dovrebbe essere usata una resistenza da 120 ohm. I LED sono in serie con delle resistenze da 680 ohm: le avevo disponibili e vanno più che bene per proteggerli, non sono stato a fare calcoli esatti. La resistenza di pull-down del pulsantino è da 10 Kohm.

Procedura:
1) collegate la breadboard all'Arduino senza condensatore;
2) collegate il cavetto USB all'Arduino;
3) selezionate come "board" la Uno e poi aprite e caricate sull'Arduino lo sketch "Arduino ISP";
4) collegate il condensatore (pin "+" in RESET e pin "-" in GND);
5) aprite una nuova finestra dell'IDE e copiateci lo sketch;
6) selezionate come "board" la "Attiny85 (w/Arduino as ISP)" e poi caricate lo sketch
7) giocate col pulsantino :-)

Do per scontato che abbiate seguito le istruzioni presenti a questa pagina (http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.ArduinoATtiny4585) per abilitare l'uso dell'Attiny45/85 con l'IDE di Arduino.

AGGIORNAMENTO:
ho scritto una guida che spiega come abilitare il supporto agli Attiny25/45/85, Attiny24/44/84 e Attiny2313 direttamente nell'IDE:
http://www.leonardomiliani.com/?p=435
La guida contiene tutte le indicazioni per poter utilizzare anche la seriale ed il bus I2C con le librerie da scaricare e le modifiche da applicare. Gli inesperti troveranno allegato alla guida un archivio contenente tutte le librerie già modificate e pronte per essere copiate sul proprio computer nonché tutti gli sketch di esempio presentati nella guida.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Mar 28, 2011, 12:57 pm
Simpatico! Si potrebbe fare anche con l'ATmega, non ci sarebbe bisogno di abilitarlo, vero? Tanto mica uno ci fa uno stand alone definitivo, o sì? :smiley-surprise:
Title: Re: Giocando con l'Attiny85
Post by: Guglio on Mar 28, 2011, 01:06 pm
Non è che per caso hai un kit RF e riesci a provare se fungono sull' attiny?
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Mar 28, 2011, 01:41 pm
Basta che sul ATTiny funzioni la seriale, i moduli RF dovrebbero funzionare in automatico
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 28, 2011, 02:50 pm
Non ho un kit RF.
L'Attiny non ha il supporto USART (quindi seriale) via hardware però in teoria si potrebbe usare la NewSoftSerial: bastano 2 pin, non credo sia un grosso problema. Stasera provo ad interfacciare il micro con l'Uno.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Mar 28, 2011, 02:52 pm
siiiii facci sapere :)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 28, 2011, 10:44 pm
Uhm.. sto incontrando dei problemi. In fase di compilazione ricevo l'errore che la NewSoftSerial supporta solo micro a 8, 16 e 20 MHz.
L'Attiny lavora internamente a 8 MHz ma non credo che l'IDE lo sappia, nel senso che non è nata per lavorare con questo micro ed il mod usato è un po' una mezza forzatura. Probabilmente ci sono a giro in altri header delle configurazioni che non tengono conto di questa classe di integrati.

Vediamo se sbirciare in rete mi offre qualche spunto...
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 28, 2011, 11:08 pm
Per ora non ho risolto con la NewSoftSerial però la SoftwareSerial funziona: con essa caricata sull'Attiny riesco a trasmettere e leggere sulla seriale dell'Arduino.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 28, 2011, 11:56 pm
Indagando un po' sembra che il problema del clock derivi dalle impostazioni presenti nel file boards.txt del mod per gli Attiny45/85, che segnala una frequenza interna dei micro di 1 MHz

Non so però se gli Attiny85-20 hanno il clock impostato a 8 MHz oppure no.
Title: Re: Giocando con l'Attiny85
Post by: crono on Mar 29, 2011, 12:54 am
puoi spiegarmi come hai fatto ad usarlo via seriale??? mi stampa via seriale se faccio serial.print ??? se si cosa devo fare per farlo funzionare???
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 01:12 am
Sull'Attiny ho caricato uno sketch che usava SoftwareSerial ed ho abilitato 2 pin per RX/TX. Questi pin li ho collegati ai pin TX/RX della mia Arduino Uno su cui avevo caricato uno semplicissimo sketch che altro non faceva che aprire una seriale (normale), leggere il dato in arrivo e stamparlo sul terminale dell'IDE.

PS:
ho collegato il micro al mio programmatore USBtinyISP ed ho letto i fuse. Effettivamente sembra proprio che i chip escano di fabbrica per lavorare a 1 MHz, per lo meno stando alle impostazioni dei fuse, che abilitano la divisione per 8 del clock interno (che è a 8 MHz).
Quindi togliendo questo divisore riavrei la frequenza "canonica" di 8 MHz... proverò.

EDIT:
la programmazione pare andata a buon fine. Adesso il micro dovrebbe lavorare con l'oscillatore interno a pieno clock (8 MHz). Domani modificherò i file di descrizione del chip e riproverò ad usare la NewSoftSerial. Adesso è troppo tardi... notte  :smiley-sleep:

EDIT2:
rileggendo il datasheet ho la conferma che gli Attiny85 escono di fabbrica impostati a 1 MHz!

Quote
The device is shipped with CKSEL = "0010", SUT = "10", and CKDIV8 programmed. The default
clock source setting is therefore the Internal RC Oscillator running at 8 MHz with longest start-up
time and an initial system clock prescaling of 8, resulting in 1.0 MHz system clock. This default
setting ensures that all users can make their desired clock source setting using an In-System or
High-voltage Programmer.

Quindi chi acquista questo micro sappia che di fabbrica va.... lento!
Ed ora BUONANOTTE...  :smiley-sleep: :smiley-sleep: :smiley-sleep: :smiley-sleep:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 09:52 am
Non ci capisco più nulla.... ho settato i fuse affinché il micro andasse ad 8 MHz, ho modificato il file delle impostazioni della scheda affinché lo sketch fosse compilato per la CPU dell'Attiny con clock a 8 MHz.... e mi ritrovo lo sketch dei led lampeggianti che va LENTISSIMO, cose se il timer interno del micro fosse rallentato! Nel senso che se prima con un intervallo di flash di 500 ms andava tutto bene, adesso lo stesso valore da un intervallo di 4 secondi, ossia esattamente 500*8.... Ma se ho impostato il micro ad 8 MHz, com'è che sta andando a 1???  :smiley-yell:
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Mar 29, 2011, 10:01 am

Non ci capisco più nulla.... ho settato i fuse affinché il micro andasse ad 8 MHz, ho modificato il file delle impostazioni della scheda affinché lo sketch fosse compilato per la CPU dell'Attiny con clock a 8 MHz.... e mi ritrovo lo sketch dei led lampeggianti che va LENTISSIMO, cose se il timer interno del micro fosse rallentato! Nel senso che se prima con un intervallo di flash di 500 ms andava tutto bene, adesso lo stesso valore da un intervallo di 4 secondi, ossia esattamente 500*8.... Ma se ho impostato il micro ad 8 MHz, com'è che sta andando a 1???  :smiley-yell:


Sicuro non l'hai portato ad 800 Hz :D :D

Ma quale bootloader usi? Mica potresti postare la parte relativa all'ATTiny del file boards.txt?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 10:12 am
Non uso bootloaders.

Cmq credo di aver capito. Ho usato il [calcolatore di fuse (http://www.engbedded.com/fusecalc) ma ho sbagliato a spuntare i checkbox e credo di aver rimesso il divisore per 8  :smiley-red:

Ora riprovo....

PS:
il file boards.txt è quello contenuto in ~/sketchbook/hardare/attiny45_85: ho modificato tutti i valori 1000000L in 8000000L.

EDIT:
Perfetto!!! Adesso va bene... che co@@@@ne che sono.. mi sa che è stata l'ora tarda di stanotte a farmi fare quell'errore  :smiley-eek-blue:
Title: Re: Giocando con l'Attiny85
Post by: an_je on Mar 29, 2011, 10:34 am

Non uso bootloaders.

Cmq credo di aver capito. Ho usato il [calcolatore di fuse (http://www.engbedded.com/fusecalc) ma ho sbagliato a spuntare i checkbox e credo di aver rimesso il divisore per 8  :smiley-red:

Ora riprovo....

PS:
il file boards.txt è quello contenuto in ~/sketchbook/hardare/attiny45_85: ho modificato tutti i valori 1000000L in 8000000L.

EDIT:
Perfetto!!! Adesso va bene... che co@@@@ne che sono.. mi sa che è stata l'ora tarda di stanotte a farmi fare quell'errore  :smiley-eek-blue:


ottimo!

Scusa la domanda stupida, per modificare il boards.txt devi avere il programmatore?  :smiley-mr-green:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 10:43 am
No, quel file lo modifichi tramite un editor di testo  :P
Contiene solo le direttive per il compilatore dello sketch.

Il programmatore serve per modificare i fuse, altrimenti sei costretto ad usare il micro a 1MHz.

AGGIORNAMENTO SU NEWSOFTSERIAL:
adesso compare un altro errore, relativo all'uso delle definizioni del timer. La librerie usa TIMSK0, ma lo "0" finale non serve perché l'Attiny ha solo 1 timer TIMSK, quindi dovrei smanettare dentro alla lib per modificare questo parametro.

AGGIORNAMENTO 2:
Questo chippettino mi sorprende sempre di più... adesso scopro (http://www.avrfreaks.net/index.php?module=Freaks%20Devices&func=displayDev&objectid=102) che ha anche l'I2C...
Title: Re: Giocando con l'Attiny85
Post by: an_je on Mar 29, 2011, 10:47 am

No, quel file lo modifichi tramite un editor di testo  :P
Contiene solo le direttive per il compilatore dello sketch.

Il programmatore serve per modificare i fuse, altrimenti sei costretto ad usare il micro a 1MHz.

AGGIORNAMENTO SU NEWSOFTSERIAL:
adesso compare un altro errore, relativo all'uso delle definizioni del timer. La librerie usa TIMSK0, ma lo "0" finale non serve perché l'Attiny ha solo 1 timer TIMSK, quindi dovrei smanettare dentro alla lib per modificare questo parametro.

AGGIORNAMENTO 2:
Questo chippettino mi sorprende sempre di più... adesso scopro (http://www.avrfreaks.net/index.php?module=Freaks%20Devices&func=displayDev&objectid=102) che ha anche l'I2C...


...allora non ho capito bene cosa sia il fuse... meglio che studi un pò!
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Mar 29, 2011, 10:56 am
http://www.atmel.com/dyn/resources/prod_documents/doc2586.pdf

A pagina 61 trovi tutte le possibili funzioni dei pin. Hai letto da qua?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 11:05 am
I fuse sono delle impostazioni di tutti i micro Atmel registrate tramite registri interni che normalmente non possono venir modificati con l'uso di una scheda Arduino per flashare il bootloader o lo sketch.
Per modificarli serve un programmatore vero e proprio e l'uso del software "avrdude", che permette tante cose, tra cui l'erase totale del chip, il caricamento di sketch compilati, e la lettura/programmazione di questi fuse.

Questi fuse controllano tante cose, tra cui ad esempio l'uso dell'oscillatore interno oppure di un quarzo esterno, il watchdog, ecc...
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 11:06 am
Sì quel documento ce l'ho ma non l'ho ancora letto tutto: sono 236 pagine  :smiley-eek-blue:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 11:10 am
Nuovo aggiornamento:
ho modificato la NewSoftSerial per poterla usare con l'Attiny85 muahahah ]:D
Ottimo ottimo ottimo
Title: Re: Giocando con l'Attiny85
Post by: an_je on Mar 29, 2011, 11:16 am

I fuse sono delle impostazioni di tutti i micro Atmel registrate tramite registri interni che normalmente non possono venir modificati con l'uso di una scheda Arduino per flashare il bootloader o lo sketch.
Per modificarli serve un programmatore vero e proprio e l'uso del software "avrdude", che permette tante cose, tra cui l'erase totale del chip, il caricamento di sketch compilati, e la lettura/programmazione di questi fuse.

Questi fuse controllano tante cose, tra cui ad esempio l'uso dell'oscillatore interno oppure di un quarzo esterno, il watchdog, ecc...




...chiaro quindi, riassumendo: i ATTINY85-20 escono di fabbrica con clock 1 MHz, per poter utilizzare gli 8Mhz occorre modificare il fuse, calcolandolo con il "calcolatore" e scaricandolo con un programmatore e modificare il boards.txt.. esatto?

Grazie anora!
Title: Re: Giocando con l'Attiny85
Post by: crono on Mar 29, 2011, 11:23 am
leoooooo mi devi aiutare anche a me a mettere la seriale nel tiny... per ora nn sto capendo niente parlate arabo xD
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 11:31 am
Sì, gli AttinyX5 (25/45/85) escono a 1 MHz ma l'oscillatore interno va a 8 MHz: hanno un divisore per 8 attivato.
Per togliere il divisore ed usare la piena frequenza dell'oscillatore va programmato il fuse basso ma serve assolutamente un programmatore esterno. Io ho l'USBtinyISP, uso Linux ed il comando che ho dato per riprogrammare il fuse è questo:
Code: [Select]

avrdude -P /dev/ttyACM0 -U lfuse:w:0xe2:m -p t85 -c usbtiny


dove il parametro "-P" specifica la porta usata (su Windows sarà tipo /com ecc.. non so), "-p" il chip da programmare (t85 sta per Attiny85), "-c" il programmatore e "-U" quale parte di memoria è da gestire:
lfuse:w:0xe2:m dice di programmare il fuse basso ("lfuse" -> "low fuse")
w dice di scrivere (w -> write)
0xe2 è il nuovo valore del fuse (nello specifico, ossia con l'Attiny85, $E2 imposta l'oscillatore interno a 8 MHz senza il divisore per 8. Di fabbrica il fuse basso è impostato a $62, ossia con oscillatore a 8 MHz e divisore attivo).
m la codifica del file da usare (m -> immediate: significa che non legge nessun file di dati e scrive direttamente il valore segnato. Se si programmava la Flash si poteva specificare un file HEX contenente il firmware da scrivere)
Title: Re: Giocando con l'Attiny85
Post by: gioscarab on Mar 29, 2011, 11:32 am
Leo sei un grande, scusate la mancanza di questi due giorni ma siamo stati tiratissimi.
Per chi ha comprato il kit pico85 buon divertimento, ne rimangono 3!! Sono contento che sia risultato interessante per la comunità.


Leo mi spieghi come sei riuscito a far funzionare la seriale ?  :smiley-mr-green:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 11:47 am
Ciao gbm, io ho testato l'Attiny per ora solo in scrittura, quindi in USCITA verso un'Arduino Uno.
Per usare la seriale ci sono 2 strade:
SoftwareSerial oppure NewSoftSerial

SoftwareSerial:
tralasciando i problemi che ha (non usando interrupt, se usata in lettura blocca l'esecuzione dello sketch finché non arriva qualcosa), per usarla basta caricare nell'Attiny un programmino tipo questo:
Code: [Select]

#include <SoftwareSerial.h>

#define rxPin 0
#define txPin 1
#define BUTTON 4

SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup()  {
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  pinMode(BUTTON, INPUT);
  mySerial.begin(9600);
}

void loop() {
byte reading;

    reading=digitalRead(BUTTON);
    if (reading == HIGH ) {
        mySerial.print("1");
        delay(100);
    }
}


Collegare quindi il pin PB0 (RX) dell'Attiny al pin D1 (TX) dell'Arduino, il pin PB1 (TX) dell'Attiny al pin D0 (RX) dell'Arduino ed un pulsantino al pin PB4 dell'Attiny.
Ricordo che i pin corrispondono ai seguenti piedini del micro
PB0: piedino 4
PB1: piedino 5
PB4: piedino 3

Caricare sull'Arduino un sempice sketch come questo:
Code: [Select]
void setup(){
    delay(3000);
    Serial.begin(4800);
}


void loop(){
    if (Serial.available()>0) {
        Serial.println(Serial.read());
    }
}


Dare alimentazione all'Attiny ed all'Arduino e poi aprire tramite IDE di Arduino un terminale. Dopo 3 secondi, premendo il pulsantino collegato all'Attiny si vedrà apparire sul terminale "49", che è l'ASCII del carattere "1".
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 11:55 am
Per la NEWSOFTSERIAL la situazione è più complicata perché la libreria da per scontato di lavorare con un micro a 8 MHz e che ha più di 1 timer per cui va modificata anch'essa.
Inoltre serve un programmatore per sistemare i fuse altrimenti il chip di fabbrica lavora a 1 MHz, come detto.

Do per scontato che si abbia già sul computer il mod (http://hlt.media.mit.edu/wiki/pmwiki.php?n=Main.ArduinoATtiny4585) per lavorare con l'Attiny85 e la NewSoftSerial (http://arduiniana.org/libraries/newsoftserial/) messi entrambi in ~/sketchbook/

1) sistemare i fuse dell'Attiny togliendo il divisore per 8:
Code: [Select]
avrdude -P /dev/ttyACM0 -U [b]lfuse:w:0xe2:m[/b] -p t85 -c usbtiny
2) andare in ~/sketchbook/hardware/attiny45_85/ ed aprire il file boards.txt
3) mettere 8000000L al posto di 1000000L in tutti i punti del documento
4) andare in ~/sketchbook/hardware/libraries/NewSoftSerial ed aprire il file NewSoftSerial.cpp
5) cercare la funzione void NewSoftSerial::enable_timer0(bool enable) (riga 518) e modificarla 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ì:
void NewSoftSerial::enable_timer0(bool enable)
Code: [Select]
{
  if (enable)
    sbi(TIMSK, TOIE0);
  else
    cbi(TIMSK, TOIE0);
}


Salvare tutto e riavviare l'IDE.
Addesso creare per l'Attiny85 un semplice sketch come questo:
Code: [Select]
#include <NewSoftSerial.h>
#define BUTTON 4

NewSoftSerial mySerial(0, 1);

void setup() {
    delay(3000);
    // set the data rate for the NewSoftSerial port
    mySerial.begin(4800);
    pinMode(BUTTON, INPUT);
}

void loop() {
byte reading;

    reading=digitalRead(BUTTON);
    if (reading == HIGH ) {
        mySerial.print("1");
    }
}


Le connessioni sono come nell'esempio della SoftwareSerial.
Title: Re: Giocando con l'Attiny85
Post by: an_je on Mar 29, 2011, 12:22 pm

Sì, gli AttinyX5 (25/45/85) escono a 1 MHz ma l'oscillatore interno va a 8 MHz: hanno un divisore per 8 attivato.
Per togliere il divisore ed usare la piena frequenza dell'oscillatore va programmato il fuse basso ma serve assolutamente un programmatore esterno. Io ho l'USBtinyISP, uso Linux ed il comando che ho dato per riprogrammare il fuse è questo:
Code: [Select]

avrdude -P /dev/ttyACM0 -U lfuse:w:0xe2:m -p t85 -c usbtiny


dove il parametro "-P" specifica la porta usata (su Windows sarà tipo /com ecc.. non so), "-p" il chip da programmare (t85 sta per Attiny85), "-c" il programmatore e "-U" quale parte di memoria è da gestire:
lfuse:w:0xe2:m dice di programmare il fuse basso ("lfuse" -> "low fuse")
w dice di scrivere (w -> write)
0xe2 è il nuovo valore del fuse (nello specifico, ossia con l'Attiny85, $E2 imposta l'oscillatore interno a 8 MHz senza il divisore per 8. Di fabbrica il fuse basso è impostato a $62, ossia con oscillatore a 8 MHz e divisore attivo).
m la codifica del file da usare (m -> immediate: significa che non legge nessun file di dati e scrive direttamente il valore segnato. Se si programmava la Flash si poteva specificare un file HEX contenente il firmware da scrivere)


...chiarissimo! uso anche io Linux, devo solo procurarmi il programmatore... grazie!
Title: Re: Giocando con l'Attiny85
Post by: crono on Mar 29, 2011, 02:10 pm
non ho capito che programmatore serve per cambiare il clock del processore.. dove posso trovarlo?? nn posso usare arduino come programmatore??
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 02:16 pm
No, serve un programmatore esterno.
Io uso l'USBtinyISP di Adafruit ma va bene anche qualsiasi altro programmatore per Atmega.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 02:41 pm
Adesso sto giocando con l'I2C.... voglio vedere se riesco ad interfacciarmi ad un DS1307 e ad inviare l'ora all'Arduino tramite NewSoftSerial.... panico!  8)

(cmq questo progetto mi sa che lo terminerò stasera o stanotte... ora devo proprio scappare)
Title: Re: Giocando con l'Attiny85
Post by: gioscarab on Mar 29, 2011, 02:59 pm
grande  :)
Title: Re: Giocando con l'Attiny85
Post by: crono on Mar 29, 2011, 04:01 pm
grande leo interessa anche a me il ds1307 con il tiny se hai sviluppi posta pure le soluzioni :D
Title: Re: Giocando con l'Attiny85
Post by: an_je on Mar 29, 2011, 04:12 pm

Adesso sto giocando con l'I2C.... voglio vedere se riesco ad interfacciarmi ad un DS1307 e ad inviare l'ora all'Arduino tramite NewSoftSerial.... panico!  8)

(cmq questo progetto mi sa che lo terminerò stasera o stanotte... ora devo proprio scappare)


Grande! avere il tempo!!!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 29, 2011, 04:58 pm

Grande! avere il tempo!!!


Beh, oggi era il mio giorno libero e mandati via i bambini ho avuto l'intera mattinata per "spippolare"  XD
Mica è sempre così, purtroppo  :*
Title: Re: Giocando con l'Attiny85
Post by: garinus on Mar 29, 2011, 05:32 pm
anche arduino con arduinoISP va bene
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 30, 2011, 01:00 am
Uhm... sto incontrando alcune difficoltà. Intanto il supporto I2C non è integrato ma offerto tramite USI, che è una specie di bus seriale programmabile. Per gestirlo ho trovato una libreria TinyWire (http://arduino.cc/playground/Code/USIi2c)... però pare che questa non vada d'accordo con la NewSoftSerial... o forse con il DS1307 che ho io (che è montato su uno shield autocostruito a cui mi interfaccio).
In buona sostanza sulla seriale dell'Arduino non arriva nulla... e non so se è perché non legge dall'RTC oppure perché non riesce a trasmettere....

Devo indagare meglio. Peccato perché la libreria offre un esempio di interfaccia ad un DS1307 quindi teoricamente la cosa è fattibile, solo che non capisco cos'è che non va nel mio circuito. Boh... forse è l'ora tarda (come ieri notte).... magari dormendoci sopra mi viene qualche idea..  :P

EDIT:
mi sa che è proprio la NewSoftSerial.... usa gli interrupt e forse l'alterazione di questi va a dar noia alla libreria TinyWire...

EDIT2:
è confermato... La NewSoftSerial e la TinyWire sono incompatibili. La TinyWire disabilita gli interrupt mentre la NewSoftSerial invece li usa.... è ovvio che non possano andar d'accordo  ]:D
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Mar 30, 2011, 07:26 am
Non puoi usare pin differenti?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 30, 2011, 09:47 am
No perché sono proprio le librerie incompatibili.
Nella TinyWire ho trovato la disattivazione degli interrupt mentre nella NewSoftSerial sono usati per leggere/spedire i dati senza bloccare l'esecuzione degli sketch.
Dal sorgente della TinyWire:
Code: [Select]
// Disable Interrupts.

Dalla pagina della NewSoftSerial:
Code: [Select]
Using interrupt-driven RX

Quindi insieme non possono andare d'accordo.
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Mar 30, 2011, 07:33 pm
Non puoi fare in modo che quando usi una libreria li attivi e poi quando usi l'altra li disattivi??

ch'esso, leggi dall'RTC ogni 5 min? prima di leggere attivi quello che ti serve e poi lo disattivi... fantascienza?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 30, 2011, 10:54 pm
Mi pare una soluzione troppo complicata.
Cmq, vista la limitazione di pin, usare sia l'I2C sia la seriale porta via 4 pin da un totale di 6 (diciamo 5+1, perché il pin di reset, sul datasheet lo dichiarano "weak pin", pin deboluccio, quindi non so fino a che punto sia consigliato usarlo), limitando quindi ciò che l'Attiny può fare.

Più che altro questi sono esperimenti cognitivi che mi aiutano a capire i limiti del micro. Che, cmq, reputo veramente ottimo: 8 KB di flash, un clock che volendo può arrivare a 20 MHz, possibilità di programmarlo al volo con 4 cavettini... ganzo!  :D
Title: Re: Giocando con l'Attiny85
Post by: saki_kawa on Apr 03, 2011, 09:03 pm
Ciao Leo!
Grande, hai trovato il modo di far funzionare sia la SoftwareSerial, sia la NewSoftSerial! Complimenti!

Però io ho un problema sulla SoftwareSerial, provando come indichi nel serial monitor mi appaiono numeri casuali, la prima volta 14, un a capo, e 140; provando ancora 0, a capo, 0 a capo, e 140..
Se poi provo ad usare un APC220 (modulo trasmissione onde radio) che funziona in seriale, all'altro capo ottengo simboli ripetitivi ma incomprensibili..
C'è qualcosa che non mi torna.. eppure dovrei aver fatto tutto come descritto..

Ti è capitato anche a te per caso? Può dipendere dalla tolleranza del +-10hz nella frequenza del Attiny, che manda fuori clock la seriale?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 03, 2011, 10:48 pm
Essendo implementazioni software forse può dipendere da questo. Prova variando la velocità della connessione, metti un valore basso (4800), più facilmente gestibile via software.
Title: Re: Giocando con l'Attiny85
Post by: saki_kawa on Apr 03, 2011, 11:51 pm
Niente da fare.. salta sempre fuori:

224
0
0
224
0
0
..

Tra l'altro prima avevo sbagliato, non era 140, ma 224. Che poi è il decimale del carattere che mi esce fuori se lo invio tramite ACP220.
Boh.. farò un po' di prove cambiando caratteri e cambiando connessioni.
Riuscire a far funzionare la seriale darebbe al Attiny85 delle potenzialità enormi!.. spero di venirne a capo..

Grazie comunque!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 03, 2011, 11:58 pm
Riproverò anch'io, domani.
Mi pare che una volta abbia dato problemi anche a me... non mi ricordo però se con la SoftwareSerial o con la NewSoftSerial
Title: Re: Giocando con l'Attiny85
Post by: saki_kawa on Apr 04, 2011, 01:53 pm
Mi sa che mi darò alla libreria I2C, che tra l'altro mi permette di usare alcuni modulini che ho, come il termometro/barometro ed il RTC, perchè non c'è verso che riesca a far funzionare la SoftwareSerial.. forse può essere dovuto alle saldature non perfette della board, boh.. quando avrò un momento caricherò lo sketch su un Attiny stand alone, senza board.

Se nel frattempo riesci a ricordarti che problema ti aveva dato a te e come lo hai risolto, e lo posti qui te ne sarò grato! ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 04, 2011, 05:46 pm
Ho riprovato con la NewSoftSerial.
Impostando la velocità a 9600 baud legge "quasi" sempre correttamente. Nel senso che ho messo su una breadboard 2 pulsantini collegati all'Attiny, che li legge ed invia all'Arduino "1" o "2" a seconda del pulsante. Ebbene, lo sketch sull'Arduino riceve generalmente 49 o 50 (gli ASCII rispettivamente di 1 e 2) anche se, sporadicamente, riceve 177... Boh, forse dipende dal debounce "da cavernicolo" che ho fatto, non so. Dovrei provare una trasmissione di dati su chip per altre verifiche ma ora non ho tempo.
Title: Re: Giocando con l'Attiny85
Post by: Guglio on Apr 04, 2011, 08:53 pm
Non è che riusciresti poi a fare un post sul PlayGround? perchè qui sinceramente non ci sto capendo un azzo.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 04, 2011, 10:13 pm
Tutte le modifiche che devi fare e gli sketch da usare sono a pagina 2 di questo thread. Cos'è che non ti è chiaro?
Title: Re: Giocando con l'Attiny85
Post by: Guglio on Apr 04, 2011, 10:22 pm
Non avendo ancora un'attiny fra le mani mi sembra d'aver capito quasi tutto, ma anche per i posteri penso possa essere utile avere tutto in una pagina ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 04, 2011, 10:27 pm
Beh, sì. questo è vero.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 07, 2011, 12:27 am
Sto avendo problemi con l'I2C, o per meglio dire con l'USI/TWI (dato che l'I2C sull'Attiny è emulato tramite USI). Uso la libreria TinyWireM.

In pratica non riesco a dialogare con un chip Eeprom I2C (24LC512) collegato all'Attiny85. La memoria funziona perché se la governo con l'Arduino riesco a scriverci ed a leggerci... ma con l'Attiny no.
Curiosamente ho notato che se per caso quando interrogo la Eeprom dall'Arduino c'è anche l'Attiny sul bus I2C, l'Arduino non riesce ad accedere alla memoria.

Qualcuno ha effettuato delle prove con una Eeprom?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 07, 2011, 12:49 am
Mumble mumble... pare che il problema derivi dal fatto che la libreria è stata sviluppata per operare col clock standard degli Attiny, ovvero 1 MHz, che è poi anche la frequenza massima del bus I2C. Si diceva di adattare la velocità della libreria a quella del micro (io ho impostato l'Attiny a 8 MHz) però forse così va fuori specifiche perché non fa rientrare il segnale di clock inviato su SCL nelle specifiche del bus I2C.

Ormai è tardi, domani investigherò se a 1 MHz di clock del chip funziona.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 07, 2011, 09:55 am
YES YES YES!!!!
Sono un grande... scusate la megalomania  XD XD XD XD XD

Lavorare con questo micro è veramente... DURO!
Tutto ciò che si trova online è documentato veramente male e va poi riadattato completamente. Stamattina sono riuscito a far funzionare l'I2C con un chip EEPROM 24LC512 dopo essermi sbattutto tutto ieri a capire perché le librerie non funzionavano. Grazie (!) alla scarsa documentazione delle stesse, andavano adattati tutti i tempi delle stesse perché scritte per lavorare a frequenze di 1 MHz: peccato che per lavorare a 8 MHz bisognasse toccare anche parametri che erano indicati solo nei commenti dei file .h e .cpp e non nella pagina del playground.

Mi sa che dovrò scrivere una pagina sul playground, prima che tutte le "scoperte" che ho fatto vadano perse.
Title: Re: Giocando con l'Attiny85
Post by: an_je on Apr 07, 2011, 10:40 am

YES YES YES!!!!
Sono un grande... scusate la megalomania  XD XD XD XD XD

Lavorare con questo micro è veramente... DURO!
Tutto ciò che si trova online è documentato veramente male e va poi riadattato completamente. Stamattina sono riuscito a far funzionare l'I2C con un chip EEPROM 24LC512 dopo essermi sbattutto tutto ieri a capire perché le librerie non funzionavano. Grazie (!) alla scarsa documentazione delle stesse, andavano adattati tutti i tempi delle stesse perché scritte per lavorare a frequenze di 1 MHz: peccato che per lavorare a 8 MHz bisognasse toccare anche parametri che erano indicati solo nei commenti dei file .h e .cpp e non nella pagina del playground.

Mi sa che dovrò scrivere una pagina sul playground, prima che tutte le "scoperte" che ho fatto vadano perse.


...è facile esaltarsi, ma QUANDO CI VUOLE, CI VUOLE!! OTTIMO!!

..che rabbia, lo sto ancora aspettando il tiny... speriamo che oggi arrivi!

decisamente è meglio che tu scriva!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 10, 2011, 06:18 pm
In allegato trovate la guida all'uso dell'ATtiny85 con l'IDE di Arduino, compresi gli schemi di collegamento, le modifiche alle librerie NewSoftSerial e TinyWireM nonché esempi di codice per provare i circuiti.
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Apr 11, 2011, 08:07 am
Ben fatto, complimenti, rende onore alle tue fatiche!! Non pensi di metterlo sul playground??
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 11, 2011, 09:11 am
Sarebbe stato bello metterlo direttamente nel playground, non solo come link al documento.
Title: Re: Giocando con l'Attiny85
Post by: GianfrancoPa on Apr 11, 2011, 09:14 am
Altra cosetta forse utile, perchè non metti due righe su come collegare l'ATtiny ad un ATmega328 ad esempio? Potrebbero essere utili applicazioni dove entrambi i micro vengono utilizzati parallelamente.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 16, 2011, 04:03 pm
Ho ordinato gli ATTiny 85 non vedo l'ora di usarli :)
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 19, 2011, 11:15 pm

In allegato trovate la guida all'uso dell'ATtiny85 con l'IDE di Arduino, compresi gli schemi di collegamento, le modifiche alle librerie NewSoftSerial e TinyWireM nonché esempi di codice per provare i circuiti.

Eccomi qui! Oggi ho fatto prove al volo, senza approfondire, te le elenco e ti pongo alcune domande.
1a prova: carico il blink classico (senza bootloader, tecnica ISP) sostituendo 13 con 2 e funziona tutto
2a prova: carico lo sleep test che ho preparato per l'ATmega, e funziona ma, primo problema, attiny consuma più di atmega, sono sempre consumi eccellenti, ma è strano che sia cosi. Domande:
-Il chip caricato così lavora sicuro a 1MHz come tu affermi?
-Le librerie di atmega sono 100% compatibili con quelle di attiny?
3a prova: carico il mio sketch per gestire il sensore tapparelle (motivo di base per cui ho comprato questi chip) ma a prima prova non funziona; o meglio, il circuito va in sleep quando deve andarci ma mi ignora il sensore, che è previsto sia collegato a INT0 per svegliare il chip, ho usato il pin PB2(7) del chip, è sbagliato? Inoltre ho usato il pin1 come OUTPUT per accendere un led ogni qualvolta il pin 7 è high, ma non mi funziona.
Domani farò prove più consistenti, ma se tu potessi darmi qualche altro elemento, anche generico su questi chip, me lo troverei utile. grazie.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 19, 2011, 11:50 pm
Quello che so l'ho scritto tutto in quella guida.
Per rispondere nello specifico alle tue domande:
tutti i chip Atmel escono di fabbrica per lavorare con l'oscillatore interno e col divisore x8 per cui ad 1 MHz. Gli Attiny non fanno differenza. Se hai fatto tutte le modifiche che ho descritto nella mia guida, però, tu hai un chip che lavora a 8 MHz. Forse il consumo maggiore lo devi a questo.
Tornando al discorso dello sleep, gli Attiny non supportano tutte le modalità degli Atmega, va visto cosa hai usato tu. Inoltre io (perché non mi è mai servito) non ho ancora mai "giocato" con lo standby di questi micro per cui non so dirti a priori se qualcosa di diverso accade all'interno del chip.

Infine, l'IDE: non è compatibile al 100% con gli Attiny, per i limiti hardware di questi chip. Quindi, a parte modificare i file delle librerie che ti servono, se vuoi una maggior compatibilità puoi provare l'Arduino-Tiny.
http://code.google.com/p/arduino-tiny/
Sono mod del core scritti per rendere l'IDE compatibile con i chip Attiny tipo 2313, 45/85 ecc..
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 20, 2011, 11:26 am
Grazie Leo, in realtà a questo punto una sola risposta mi chiarirebbe ogni problema:
io ho usato il file boards.txt che tu hai postato, selezionando attiny85 e ArduinoISP; in quel file l'attiny è impostato per lavorare a 8MHz?
In caso positivo puoi dirmi quali sono i fuses originali per attivare il divisore x8?
Se sta lavorando a 8MHz probabilmente si spiega tutto, oltre al consumo anche il non funzionamento del software; pomeriggio spero di poter fare un po' di prove intense.
Ciao.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 20, 2011, 11:32 am
Vado a memoria (sono a lavoro): dovresti mettere il fuse basso da $E2 a $62. In questo modo attivi il divisore ed il micro va a 1 MHz.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 20, 2011, 11:33 am
ok grazie, ci sentiamo nel pomeriggio/sera.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 20, 2011, 11:34 am
Ricordati anche di mettere il giusto valore al clock (1000000L)
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 20, 2011, 02:56 pm
Ho fatto un po' di altre prove, per il momento non tocco il clock, quello si sistema dopo.
La situazione per ora è questa:
se mando lo sketch di prova ler lo sleep funziona e il consumo scende a valori accettabili (salvo frequenza)
se mando il mio code senza la sezione sleep funziona
se mando il code completo di sleep (che funziona col 328p) non va
Ho capito che il problema è nella gestione degli interrupt
In base alla pinatura dell'attiny mi trovo pin INTx e pin PCINTx, a me serve svegliare il micro con un segnale sull'interrupt 0, quale devo usare dei due: il pin 7 (INT0) o il 5 (PCINT0)? Ho provato entrambi, ma almeno per dopo mi concentro su quello giusto.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 20, 2011, 07:33 pm
Ho scaricato il reference linkato all'inizio di questo topic. Da quello che ho capito con le mie difficoltà con l'inglese, attiny85 ha un solo pin con interrupt esterno, INT0, che corrisponde al pin 7 del chip; ho letto poi che per attivarlo bisogna che vada su LOW, allora ho modificato la parte che gestisce lo sleep mode e sono riuscito a farlo funzionare, nel senso che il circuito va in sleep se il sensore è aperto e si sveglia se è chiuso.
Il mio problema però è che il sensore può trovarsi inizialmente in una condizione qualunque e deve attivare il circuito quando cambia stato.
L'atmega funziona con la modalità "change", attiny invece la ignora, eppure i due reference, nella sezione interrupt dicono la stessa cosa; sempre da quel che ho capito, ma andrebbe verificato, sembra che si possano impostare i due bit ISC01-ISC00 a 1-0 ed in tal modo "Any logical change on INT0 generates an interrupt request.", ma io non ho idea di cosa si debba fare, peraltro anche l'atmega dice la stessa cosa :smiley-eek:
Se non risolvo è un peccato, sono costretto a fare dei circuiti più grandi ed usare gli atmega per due soli pin che mi servono.
Spero che possiate aiutarmi a risolvere. Il capitolo degli interrupt è il 9.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 20, 2011, 07:50 pm
Scusa per la risposta breve, ma credo che tu abbia bisognodi questo:
http://code.google.com/p/arduino-tiny/downloads/detail?name=PinChangeInterrupt-0001.zip
ciao
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 20, 2011, 08:00 pm
Ma figurati BB! Grazie, scaricate, ma queste cosa sono, librerie?
Se le copio da qualche parte (dove?) risolvo il problema?
Dai, altre due-tre righe.... :smiley-red:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 20, 2011, 11:00 pm
E' una libreria che fa parte dell'Arduino-Tiny e ti permette di gestire l'evento CHANGE in un interrupt
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 20, 2011, 11:07 pm
Ciao Leo, ma come devo usarla? Ho provato a leggere i contenuti dei file  :smiley-eek: :smiley-eek: :smiley-eek-blue: Ho provato anche a copiare queste cartelle in hardware, ma poi compilando lo sketch mi dà un sacco di errori perché sembra che manchi altro.
Title: Re: Giocando con l'Attiny85
Post by: electro2 on May 20, 2011, 11:19 pm
--------------------------
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 07:47 am

Ciao Leo, ma come devo usarla? Ho provato a leggere i contenuti dei file  :smiley-eek: :smiley-eek: :smiley-eek-blue: Ho provato anche a copiare queste cartelle in hardware, ma poi compilando lo sketch mi dà un sacco di errori perché sembra che manchi altro.

Quella lib la devi usare con l'Arduino-Tiny, che è un gruppo di librerie modificate da affiancare a quelle originali del core. Durante la compilazione devi selezionare poi il tipo di chip (Attiny85) altrimenti la compilazione viene eseguita per l'Atmega328, ed è poi logico che ti dia errori.

Quindi, ricapitolando:
1) scarichi l'Arduino-Tiny e lo copi nella cartella dell'IDE (non dovrebbe sovrascriverti nulla ma copiarti solo una nuova cartella in arduino-00xx/hardware)
2) scarichi i mod per usare il change sugli interrupt
3) scrivi lo sketch
4) scegli l'Attiny85 e compili
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 08:16 am
Bonjour Leò, merci beaucoup! XD
Non sono in Lab quindi non ho modo di provare, dico quello che ho fatto:
Ho scaricato questa lib: arduino- tiny- 0022-0008. zip
Ho scaricato questo mod: PinChangelnterrupt-0001 .zip
La arduino-tiny contiene due cartelle tiny e tools che copierò in hardware (ho già verificato che la tools in effetti non mi sovrascrive nulla). L'altro file contiene 3 cartelle: PinChangeInterruptSimple, PinChangeInterrupt e Tiny Tuner (vuota, ma credo non c'entri con ciò che mi serve); non ho ben capito dove mettere queste cartelle. In "tiny" ci sono "bootloaders" e "cores"; in "tools" c'è "avr" con una serie di sottocartelle che alla fine portano ad un solo file "eeprom".
Riguardo le boards invece sono a posto, quelle le avevo già inserite dal tuo file e l'IDE le vede, tant'è che ho già programmato.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 08:22 am
Premetto che il Tiny Core non l'ho usato ma essendo il PinChangeInterrupt una lib va scompattata in /sketchbook/libraries così da essere disponible come #include nel modo classico.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 08:32 am
Scusa, lo so che passo per imbranato (e lo sono  :smiley-red:) ma non ho una cartella /sketchbook/libraries, bensì la sola libraries che contiene le varie librerie classiche "eeprom", "ethernet", "liquidcrystal", ecc., quindi devo metterla lì dentro?

EDIT:
naturalmente poi devo mettere il nome della libreria nel mio sketch: #include <PinChangeInterruptSimple.h>?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 09:04 am
LA cartella /sketchbook/libraries normalmente NON esiste.
Va creata e lì andrebbero messe le librerie di terzi per Arduino per non mescolarle a quelle di sistema fornite con l'IDE. In questo modo non sei costretto quando aggiorni l'IDE a rimettere tutte le librerie personali e così sai anche subito quali sono quelle ufficiali e quali no.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 09:10 am
Ora ho capito, perfetto, tra oggi e domani farò le prove e ti faccio sapere, naturalmente quando tutto funziona metterò ordine nelle varie informazioni, per i posteri..... XD
Grazie Leo, la tua signora è fortunata ad avere sposato un ragazzo paziente come te :D
Title: Re: Giocando con l'Attiny85
Post by: astrobeed on May 21, 2011, 11:47 am

LA cartella /sketchbook/libraries normalmente NON esiste.


Giusto ma vale per Linux, con Windows la cosa funziona in modo simile, ma diverso al tempo stesso, la cartella sketchbook in realtà è:

"..\Documenti\Arduino"

Che è la cartella dove l'IDE mette gli sketch creati dall'utente, basta creare al su interno la cartella "libraries" e metterci dentro quelle aggiuntive, in questo modo con i cambi versione dell'IDE non è necessario ricordarsi di spostare lavori e librerie.

Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 11:49 am

Grazie Leo, la tua signora è fortunata ad avere sposato un ragazzo paziente come te :D


Peccato che lei non la pensi così  :smiley-roll-blue:
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 11:56 am


LA cartella /sketchbook/libraries normalmente NON esiste.


Giusto ma vale per Linux, con Windows la cosa funziona in modo simile, ma diverso al tempo stesso, la cartella sketchbook in realtà è:

"..\Documenti\Arduino"

Che è la cartella dove l'IDE mette gli sketch creati dall'utente, basta creare al su interno la cartella "libraries" e metterci dentro quelle aggiuntive, in questo modo con i cambi versione dell'IDE non è necessario ricordarsi di spostare lavori e librerie.


In realtà io quel percorso l'ho cambiato, per mia comodità, e comunque devo metterla nella cartella dei miei sketch. OK, provo.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 12:02 pm

comunque devo metterla nella cartella dei miei sketch.


Esatto, il succo è quello.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 12:06 pm
Grazie, le persone si apprezzano solo quando si perdono...per un paio di settimane... prova, vedi quante telefonate e manifestazioni di affetto  :* :* :*
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 12:21 pm
uhm, primo problemino:
#include <PinChangeInterrupt.h> (con la board at85 arduino isp), mi dà errore

In file included from Sleep_Mode_Test_ATTINY.cpp:2:
C:\percorso...\libraries\PinChangeInterrupt/PinChangeInterrupt.h:29:32: error: core_build_options.h: No such file or directory

Cosa cerca quest'altra libreria? Forse si trova nella tiny che però ho messo in hardware?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 12:29 pm
Con il Tiny core devi compilare per le board specificate dal core e non quelle inserite dal mio file boards.txt...
Questo perché PinChange si aggancia a librerie del Tiny core stesso.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 12:36 pm
Agliah! e come faccio ad inviare lo sketch al chip se non uso la tua board?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 12:45 pm
Ma hai provat e non ti funziona?
Perché vedo comunque che anche il file boards.txt presente in /hardware/tiny specifica arduino:arduinoisp come programmatore.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 12:56 pm
Allora, se uso il boards.txt della tiny la compilazione va a buon fine ma poi non riesco ad inviare lo sketch; se invece uso il tuo file boards mi dà errore di compilazione, quindi mi conviene estrarre le righe di attyny85 & ISP e metterle nel boards originale, ma non è la stessa cosa, visto che devo comunque usare la tua per inviare lo sketch? :smiley-eek-blue:
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 02:46 pm
Ho riunito i due gruppi cores, in boards.txt ho inserito le sole righe dell'attiny85 & ISP, la compilazione funziona, l'upload anche, ma il risultato non cambia. Provo a spiegare la semplice prova dare fare:
Code: [Select]
#include <avr/sleep.h>  // libreria standard (avrlib) per lo sleep
#include <PinChangeInterrupt.h>
/* Sleep test */
#define Sveglia 2    // pin 7 dell'attiny corrispondente a INT0
#define LED     4    // pin 3 dell'attiny85

void sbadiglio()        // risveglio dallo sleep
{
  // inserire eventuali azioni legate all'interrupt
}

void setup()
{
  pinMode(Sveglia, INPUT);
  //digitalWrite(Sveglia, HIGH);
  pinMode(LED, OUTPUT);
 
  //digitalWrite(Sveglia, 1);              // pull up attiva sul pin 2
  attachInterrupt(0, sbadiglio, HIGH);    // interrupt 0
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // setta registri per il modo sleep
  sleep_enable();                        // abilita la sleep all'uso
}

void A_nanna()                      // funzione attivazione sleep
{
    attachInterrupt(0, sbadiglio, LOW); // riattiva l'interrupt
    ADCSRA &= ~(1 << ADEN);
    sleep_mode();                          // mette in stato di sleep
    sleep_disable();      // disattiva la modalità sleep e riporta il micro a piena operatività
    detachInterrupt(0);  // disattiva l'interrupt
}
void loop()
{
  for(byte i=0;i<4;i++)
   {
    digitalWrite(LED, HIGH);
    delay(500);
    digitalWrite(LED, LOW);
    delay(500);
   }
  A_nanna();               // mette il micro in sleep
}

Per realizzarlo basta alimentare il chip e collegare una R+led sul pin 3 dell'attiny85 (che non è tra quelli interessati all'upload).
Appena si alimenta (ma Arduino deve essere scollegato) il led fa 4 lampeggi e poi si spegne, segno che è in sleep; collegando per un attimo il pin 7 (INT0) del chip a GND il led riprende a lampeggiare (s'è svegliato) finché non si scollega.
A me serve poter mettere (v. scritte in rosso) LOW invece di HIGH e CHANGE invece di LOW, in modo che il chip esca dallo sleep ANCHE se collego il 7 al +5, ma anche con questa libreria non cambia nulla, se cambio questi valori si spegne e non s'accende più fino al reset.
Allora non capisco se la libreria serve ad altro o se bisogna metterci mano, ma che libreria sarebbe? naturalmente ho provato anche la versione "Simple".
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 21, 2011, 04:37 pm
AGGIORNAMENTO:
Secondo me bisognerebbe provare a dare un'occhiata alla libreria (la Simple e l'altra sono peraltro simili, ma la SImple mi andrebbe benissimo) per capire cosa fa esattamente; ho provato ma tra inglese e Sconoscenze della programmazione non ho capito niente, mi pare vagamente che sia possibile utilizzare i PCINT 8cioè tutti gli altri pin del chip) ma credo sia necessario usare comandi specifici che non riesco a estrapolare.
Devo rassegnarmi ad usare i 328p?  =( =( non mi dò pace
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 21, 2011, 11:35 pm
Questo è un tentativo, non so se funziona (non l'ho provato):
modifica il file /tiny/boards.txt dell'Arduino-Tiny. Cerca la riga 186-187 e modificala da così:
Code: [Select]
# attiny85at1.upload.using=arduino:arduinoisp
attiny85at1.upload.using=pololu


a così:
Code: [Select]
attiny85at1.upload.using=arduino:arduinoisp
#attiny85at1.upload.using=pololu


In questa maniera dovresti attivare l'Arduino come programmatore ISP per un Attiny85@1MHz


EDIT:
perfetto!!! Funziona!!!  XD XD XD
L'unica cosa da rivedere sono i timing dato che mi pare che il micro non stia lavorando ad 1 MHz ma ad 8 MHz com'era impostato prima, segno che i fuse non sono stati toccati
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 22, 2011, 12:15 am
PS:
"funziona" era riferito all'upload del codice... il tuo sketch non riesco a farlo funzionare perché il micro mi lampeggia all'infinito, segno quindi che non dovrebbe entrare in stand-by.
adesso mi funziona anche lo sketch: avevo fatto le prove non accorgendomi di un falso contatto sul pulsantino usato sul pin 7. Mettendo una pull-up ed isolando il micro dall'Arduino, funziona perfettamente.
Il LED sta spento e si mette a lampeggiare 4 volte solo alla pressione del pulsantino.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 22, 2011, 12:45 am
Brutte notizie, caro Michele.
Purtroppo con gli sleep puoi usare solo la caduta di tensione per attivare l'interrupt esterno (passaggio a LOW).
Questo è scritto nell'esempio di codice riportato nel Playground qui (http://www.arduino.cc/playground/Learning/ArduinoSleepCode):
Quote
In all but the IDLE sleep modes only LOW can be used.


Leggendo il datasheet dell'Attiny85 mi è parso di capire, infatti, che i pin che leggono l'interrupt sono gestibili anche dal modulo I/O Clock del chip che, però, non viene spento solo nella modalità Idle, la meno "aggressiva" dal punto di vista del risparmio energetico. Con questo modulo attivo, puoi leggere sia un passaggio a LOW, sia un passaggio a HIGH si un qualunque cambio di stato (CHANGE). Con le altre modalità (quindi anche in POWER-DOWN, la più aggressiva), questo modulo viene spento e l'unico stato che viene letto è quello LOW (pag. 51 del datasheet, cap. 9.2.1 "Low level interrupt").

EDIT:
difatti a pag. 23, cap. 6.1.2 "I/O Clock"
Quote
The I/O clock is used by the majority of the I/O modules, like Timer/Counter. The I/O clock is
also used by the External Interrupt module, but note that some external interrupts are detected
by asynchronous logic, allowing such interrupts to be detected even if the I/O clock is halted.

E l'interrupt da segnale LOW è proprio intercettato in modalità asincrona.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 07:52 am
Scusa Mennitti, ho menato la bomba e sono scappato, ma ero di fretta.... :)
Leo perchè dici così?
io dal datasheet dell'attiny85 leggo a pag36:
Quote

Power-down Mode
When the SM[1:0] bits are written to 10, the SLEEP instruction makes the MCU enter Powerdown
mode. In this mode, the Oscillator is stopped, while the external interrupts, the USI start
condition detection and the Watchdog continue operating (if enabled). Only an External Reset, a
Watchdog Reset, a Brown-out Reset, USI start condition interupt, an external level interrupt on
INT0 or a pin change interrupt can wake up the MCU. This sleep mode halts all generated
clocks, allowing operation of asynchronous modules only.

la libreria serve solo per gestire l'evento change che tinycore da solo non gestisce.
cos'è che non ho capito? :P
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 07:53 am
Ciao Leo,
scusa, ma quella riga (ma certamente mi sbaglio :smiley-red:) non dice che in tutte le modalità di sleep puoi usare quei comandi ma che in modalità IDLE può essere usato solo il LOW? In effetti con il 328  ho provato tutte le modalità per verificare i consumi e "stranamente" (ora forse capisco perché) questa, che era quella a maggior consumo, non mi faceva andare il micro in sleep.
Naturalmente, per scrupolo, oggi proverò a mettere proprio questa modalità e vedere cosa succede e ti faccio sapere.
Inoltre nel datasheet dell'attiny (vedi quanto ho studiato, ma sono sacrifici immani per la non conoscenza della lingua :smiley-roll-sweat:) c'è scritto che per l'interrupt vuole il LOW, ma anche che cambiando la combinazione di due bit (cap.9) può essere accettato il CHANGE, ma come si fà? Forse la chiave sta in quella libreria nuova, che forse dà da possibilità cambiare questi valori o di usare altri pin per l'interrupt, oppure  :smiley-eek-blue: che interviene in qualche modo, ma mi pare di aver capito che bisogna usare dei comandi diversi da
at(de)tachInterrupt; forse la soluzione sarebbe proprio lì.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 07:57 am

Scusa Mennitti, ho menato la bomba e sono scappato, ma ero di fretta.... :)
Leo perchè dici così?
io dal datasheet dell'attiny85 leggo a pag36:
Quote

Power-down Mode
When the SM[1:0] bits are written to 10, the SLEEP instruction makes the MCU enter Powerdown
mode. In this mode, the Oscillator is stopped, while the external interrupts, the USI start
condition detection and the Watchdog continue operating (if enabled). Only an External Reset, a
Watchdog Reset, a Brown-out Reset, USI start condition interupt, an external level interrupt on
INT0 or a pin change interrupt can wake up the MCU. This sleep mode halts all generated
clocks, allowing operation of asynchronous modules only.

la libreria serve solo per gestire l'evento change che tinycore da solo non gestisce.
cos'è che non ho capito? :P

Scusa Mennitti, ho menato la bomba e sono scappato, ma ero di fretta.... :)
Leo perchè dici così?
io dal datasheet dell'attiny85 leggo a pag36:
Quote

Power-down Mode
When the SM[1:0] bits are written to 10, the SLEEP instruction makes the MCU enter Powerdown
mode. In this mode, the Oscillator is stopped, while the external interrupts, the USI start
condition detection and the Watchdog continue operating (if enabled). Only an External Reset, a
Watchdog Reset, a Brown-out Reset, USI start condition interupt, an external level interrupt on
INT0 or a pin change interrupt can wake up the MCU. This sleep mode halts all generated
clocks, allowing operation of asynchronous modules only.

la libreria serve solo per gestire l'evento change che tinycore da solo non gestisce.
cos'è che non ho capito? :P

Ciao (Menniti con 1 t... :D, Michele è meglio XD), è quello che ho pensato BB, solo che non capisco come metterla in atto, ho fatto tutto ciò che devo fare e la libreia viene inclusa nello sketch, ma ora non capisco che comandi usare al posto degli "originali", perché credo proprio che il problema sia lì. Grazie per l'aiuto.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 08:05 am
Ariscusa :P
allora, la lib la includi nello sketch con    #include <PinChangeInterrupt.h>
poi attacchi l'interrupt con un comando tipo   attachPcInterrupt(3,Nomeorutine_ISR,CHANGE);   (questo attacca un interrupt sul pin PB3 per esempio.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 08:11 am
Eccolallì! Allora avevo capito bene che usava altri pin del chip e che ci voleva un comando specifico? La libreria l'avevo già inclusa e ho provato altri pin, ma usavo i "soliti" comandi, ecco perché mi ignorava  :smiley-eek-blue:
Benissimo oggi pomeriggio provo, ma tu resta in "zona", non sparire che ho perso un pomeriggio a "intuire" ciò che tu hai "capito" in 2 minuti :smiley-mr-green: GRAZIE!
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 08:30 am
Sono curioso, fammi sapere poi come è andata ;)
...anche se il il normale attachinterrupt avrebbe dovuto funzionare sul pin 7
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 08:44 am
Certo che ti faccio sapere, come anche a Leo e Astrobeed, che pazientemente sono riusciti nell'impresa di farmi mettere la libreria e le varie cartelle del tiny, dove andavano messe :smiley-eek:
Sul pin 7 le prove le ho fatte sempre, ma mi accettava solo il LOW.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 08:50 am
Comunque con quella lib dovresti poter gestire l'evento FALLING tranquillamente (tranne che con clock a 16MHz)
sono curioso di vedere l'interazione della lib con sleep
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 08:57 am

Comunque con quella lib dovresti poter gestire l'evento FALLING tranquillamente (tranne che con clock a 16MHz)
sono curioso di vedere l'interazione della lib con sleep

Cos'è? quella cosa scostumata  :smiley-eek-blue:? Io devo lavorare a 1MHz, devo ridurre i consumi al ridicolo, sono partito dal code che mi ha dato Astrobeed, nel quale ho integrato lo spegnimento dell'ADC e col 328 vado a meraviglia, ma vorrei realizzare sti scatolini col tiny (fa pure rima....), anche se, a occhio, mi sta consumando di più, ma comunque in teroria avrei una autonomia superiore al tempo di autoscarica della batteria, quindi  XD XD
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 09:09 am
:) tranquillo, era solo per precisare che in caso qualcuno volesse usare la lib per altre cose, il funzionamento a 16Mhz non è testato.
Comunque credo che il settaggio dell'interrupt si possa fare anche senza la lib e scrivendo direttamente nei registri MCUCR A, GIMSK, GIFR, PCMSK, come fà la libreria ;) e scriverti la tua ISR per il tuo mcu invece che usare la libreria che contiene informazioni riguardanti anche altre mcu, cosi in caso di problemi di spazio potresti snellire un pò il codice.
ref. pag53 del datasheet

Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 09:16 am
non infierire :smiley-eek-blue: il mio sketch occupa 900 bytes, altro che libreria, posso metterci ancora la biblioteca dei Musei Vaticani.
Ci sentiamo pomeriggio.
Grazie ancora, magari tra vent'anni approfondiremo quella cosa del muuh! :smiley-mr-green:
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 05:01 pm
Well!!!!! XD XD XD XD
Funziona, qualsiasi pin imposto come interrupt accetta il change, GRAZIE!!!
Ora, se possibile il passaggio successivo; dovrei riuscire ad impostare il chip per lavorare a 1MHz per ridurre i consumi al massimo ma, con la solita tecnica ArduinoISP riesco ad inviare lo sketch ma non il bootloader. Nel file "bords.txt" di Leo, la board che mi interessa ha queste righe:
Code: [Select]
attiny85arduinoisp.name=ATtiny85 (w/ Arduino as ISP)
attiny85arduinoisp.upload.using=arduino:arduinoisp
attiny85arduinoisp.upload.maximum_size=8192
attiny85arduinoisp.build.mcu=attiny85
attiny85arduinoisp.build.f_cpu=1000000L
attiny85arduinoisp.build.core=attiny45_85

ma non va, con questa carico lo sketch ma non il bl, questi sono gli errori:
Code: [Select]
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: invalid byte value (null) specified for immediate mode
avrdude: write to file 'null' failed

Leo aveva scritto di ignorare i messaggi sul PAGEL, infatti escono anche quando carica correttamente lo sketch, ma qui ci sono quei null e il bl non viene caricato.
Se unifico la cartella di Leo con quella ufficiale tiny (ho provato a sovrascrivere in un senso e nell'altro i file doppi) e cambio l'ultima riga in:
attiny85arduinoisp.build.core=tiny
non cambia nulla; allora ho inserito i fuses prendendo queste righe dal file della 1MHz originale, insomma una specie di mix:
Code: [Select]
attiny85arduinoisp.name=ATtiny85 (w/ Arduino as ISP)
attiny85arduinoisp.upload.using=arduino:arduinoisp
attiny85arduinoisp.upload.maximum_size=8192
attiny85arduinoisp.bootloader.low_fuses=0x62
attiny85arduinoisp.bootloader.high_fuses=0xD7
attiny85arduinoisp.bootloader.extended_fuses=0xFF
attiny85arduinoisp.bootloader.file=empty85at1.hex
attiny85arduinoisp.bootloader.unlock_bits=0xFF
attiny85arduinoisp.bootloader.lock_bits=0xF
attiny85arduinoisp.build.mcu=attiny85
attiny85arduinoisp.build.f_cpu=1000000L
attiny85arduinoisp.build.core=tiny

esce l’errore:
Code: [Select]
avr_read(): error reading address 0x0000
    read operation not supported for memory "lock"
avrdude: failed to read all of lock memory, rc=-2

ho notato che deriva dal fatto che aggiungo le due righe unlock/lock, se le tolgo escono gli errori di prima.
Quindi l'altro aiuto che mi serve è come configurare la board per farla lavorare sicuramente ad 1MHz, così penso stia lavorando a 8MHz, ma non riesco proprio a inviare i fuses.
Ce la faremo!  :smiley-mr-green:
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 06:16 pm
i lock bit non servono per i fuse che vuoi programmare, quindi puoi eliminare entrambe le righe.
comunque ho il dubbio che dall'ide di arduino dal file boards.txt si possano passare i parametri dei fuse solo se si stà facendo l'upload del bootloader , perchè li vede relativi a quella sezione e quindi in caso di caricamento di normale sketch vengono ignorati.
però potresti usare direttamente avrdude (fuori dall'ide) per scrivere i fuse.
sei su windows o su linux?
P.S.
se stai usando un attiny85 "vergine" allora sta già lavorando a 1MHz, cioè 8mhz con divisore interno a  : 8  attivato.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 22, 2011, 06:31 pm
Scusate se non sono intervenuto ma oggi sono a mezzo servizio. Solo ora ho trovato 2 minuti per fermarmi un attimo.

Io ho letto che uno stato sleep power-down può essere annullato solo da un segnale LOW su un pin. A me usando il codice di Michele non mi è riuscito far risvegliare il micro con un CHANGE o un HIGH.
Michele, hai scritto che ci sei riuscito: che codice hai usato? Come hai impostato il circuito? Vorrei provare.

Inoltre non capisco l'ultimo intervento: vuoi scrivere un bootloader sull'Attiny? Perché? A che ti serve?
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 06:37 pm
:) no Leo, volevo solo dire che i fuse vengono passati solo quando si scrive un bootloader e quindi caricando solo lo sketch vengono ignorati... tutto qui.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 06:37 pm

i lock bit non servono per i fuse che vuoi programmare, quindi puoi eliminare entrambe le righe.
comunque ho il dubbio che dall'ide di arduino dal file boards.txt si possano passare i parametri dei fuse solo se si stà facendo l'upload del bootloader , perchè li vede relativi a quella sezione e quindi in caso di caricamento di normale sketch vengono ignorati.
però potresti usare direttamente avrdude (fuori dall'ide) per scrivere i fuse.
sei su windows o su linux?
P.S.
se stai usando un attiny85 "vergine" allora sta già lavorando a 1MHz, cioè 8mhz con divisore interno a  : 8  attivato.

Sto lavorando in Windows e sto lavorando SOLO con ATtiny85 vergini, se sono già a 1MHz il problema non mi si pone più, il resto lo metto in risposta a Leo.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 22, 2011, 06:40 pm
Ah, ok.
Effettivamente è vero, i valori impostati per i fuse vengono ignorati durante l'upload di un normale sketch, quindi i fuse vanno programmati con avrdude esternamente.

@Michele:
(ri)confermo: tutti i micro Atmel escono di fabbrica preimpostati con l'oscillatore interno ad 8 Mhz ed il divisore x8 per cui vanno tutti ad 1 MHz.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 06:50 pm

Scusate se non sono intervenuto ma oggi sono a mezzo servizio. Solo ora ho trovato 2 minuti per fermarmi un attimo.

Io ho letto che uno stato sleep power-down può essere annullato solo da un segnale LOW su un pin. A me usando il codice di Michele non mi è riuscito far risvegliare il micro con un CHANGE o un HIGH.
Michele, hai scritto che ci sei riuscito: che codice hai usato? Come hai impostato il circuito? Vorrei provare.

Inoltre non capisco l'ultimo intervento: vuoi scrivere un bootloader sull'Attiny? Perché? A che ti serve?


Ciao Leo, scusa tu, ovviamente l'avrei fatto, aspettavo di risolvere la questione del clock. Il "trucco" sta in ciò che pensavo e cioè, come suggerito da BB, dovevo usare un comando specifico per gestire l'interrupt con la nuova libreria. Nel codice vedrai che ho usato un pin che non è l'INT0, appunto.
La questione del bootloader si spiega per il fatto che ritenevo l'unico modo per poter impostare a 1MHz la frequenza del tiny, ma, da quanto dice BB sembra siano già a 1MHz (e forse me l'avevi detto anche tu!); inoltre dalle mille prove fatte con gli atmega, ho constatato con certezza che se carico gli sketch su chip con i quali ho giocherellato, i tempi si comportano in modo differente, invece mettendo prima il bl a 1MHz tutto funziona allo stesso modo su ogni chip, volevo fare la stessa cosa anche qui.
Il code che ti posto è il test, inutile che metto quello del sensore perché prevede una serie di uscite che non ti servono, ma se lo vuoi chiedi. Ho messo tutti i chiarimenti per comprendere il funzionamento.
Code: [Select]
#include <avr/sleep.h>  // libreria standard (avrlib) per lo sleep
#include <PinChangeInterruptSimple.h> // questa libreria permette di usare un qualsiasi pin come interrupt
/* Sleep test */
#define Sveglia 2    // pin 7 dell'attiny corrispondente a INT0
#define LED     4    // pin 3 dell'attiny85

void sbadiglio()        // risveglio dallo sleep
{
 // inserire eventuali azioni legate all'interrupt
}

void setup()
{
 pinMode(Sveglia, INPUT);
 //digitalWrite(Sveglia, HIGH);
 pinMode(LED, OUTPUT);
 
 //digitalWrite(Sveglia, 1);              // pull up attiva sul pin interrupt, ma conviene usare una 180K esterna
 attachPcInterrupt(Sveglia, sbadiglio, LOW);    // interrupt 0
 set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // setta registri per il modo sleep
 sleep_enable();                        // abilita la sleep all'uso
}

void A_nanna()                      // funzione attivazione sleep
{
   attachPcInterrupt(Sveglia, sbadiglio, CHANGE); // riattiva l'interrupt
   ADCSRA &= ~(1 << ADEN);
   sleep_mode();                          // mette in stato di sleep
   sleep_disable();      // disattiva la modalità sleep e riporta il micro a piena operatività
   detachPcInterrupt(Sveglia);  // disattiva l'interrupt
}
void loop()
{
 for(byte i=0;i<4;i++)
  {
   digitalWrite(LED, HIGH);
   delay(500);
   digitalWrite(LED, LOW);
   delay(500);
  }
 A_nanna();               // mette il micro in sleep
}

Al solito alimenta e metti una R da 1K ed un led sul pin 3 dell'attiny, vedrai che funziona a meraviglia; le misure te le fornisco io:
in fase operativa con led acceso circa 1,5-2,5mA; a riposto dovrebbero essere circa 150nA, cioè più del 328p  :smiley-eek-blue: ecco perché pensavo di lavorare a 8MHz, ma forse la libreria sleep non spegne tutto; in ogni caso sono consumi irrisori, una batteria da 3,6V 1200mAH si scaricherà molto prima per vecchiaia che non per il consumo, quindi problema risolto!.
Naturalmente scrivo un paio di pagine sulla modalità sleep dei due chip, per chi vuole realizzare stand alone da alimentare a batteria, ove possibile.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 06:53 pm

Ah, ok.
Effettivamente è vero, i valori impostati per i fuse vengono ignorati durante l'upload di un normale sketch, quindi i fuse vanno programmati con avrdude esternamente.

@Michele:
(ri)confermo: tutti i micro Atmel escono di fabbrica preimpostati con l'oscillatore interno ad 8 Mhz ed il divisore x8 per cui vanno tutti ad 1 MHz.

perdonami ma  dopo tanti post qualche info la perdo.... Insisto sull'argomento solo per conoscenza; ma noi finora con gli atmega e ArduinoISP non abbiamo programmato regolarmente i 3 fuses? Come hai visto anche tu le boards "originali" tiny prevedono espressamente ArduinoISP, perché non si riesce a mettere il bootloader con la stessa tecnica, ma solo lo sketch (col quale, naturalmente, non avevo alcuna intenzione di cambiare i fuses, qualcosa l'ho imparata ultimamente... XD)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 22, 2011, 06:58 pm
Con la tecninca ArduinoUnoISP si riusce a modificare anche i fuse perché, giustamente, si programma anche il bootloader, quindi si fanno modificare all'IDE (tramite avrdude) anche loro.

Siccome su un Attiny45/85 il bootloader è un lusso inutile, non programmando il bootloader non si modificano i fuse. Come ha precisato Brain (e come avevo anche io in passato constatato) usando l'IDE non riuscivo a modificare i fuse tramite il semplice upload dello sketch. Io difatti lo avevo fatto sempre ricorrendo al mio USBtinyISP.

Proverò con calma il tuo codice (attualmente sto cambiando SO al computer fisso e sto scrivendo dal portatile)
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 07:08 pm
... chissà se modificando il file boards.txt e mettendo righe tipo:
attiny85arduinoisp.upload.low=0x62
attiny85arduinoisp.upload.high=0xDF
attiny85arduinoisp.upload.extended=0xFF
si riescono a passare i fuse anche con gli sketch...  8)
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 07:16 pm
Non lo so, perché io questo lo faccio regolarmente, visto che uso la board per inviare lo sketch, e contiene anche i fuses, non ho riscontro, o meglio, forse posso averlo, se cambio i fuses e attivo l'uscita su pin dell'oscillatore interno, provo, tu non ti muovere... ;)
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 07:23 pm
:) sai com'è... sapere che se serve si può fare anche unatantum modificando il file è tutta un'altra cosa..
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 07:31 pm
:( niente da fare, sul PB4 non esce nulla, vengono proprio ignorati i valori dei fuses col solo sketch; mi resta incomprensibile il fatto che col sistema ArduinoISP si possa inviare il bl all'atmega e non a questo. boh :smiley-eek:
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 07:33 pm
ma hai provato a uploadare tenendo premuto shift , così si vedono le opzioni passate nella finestra di debug?
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 07:58 pm
azz! no bellissimo!, ma non ci capisco una (sei siciliano vero? sai di che parlo  :smiley-mr-green:)
Però a ben guardare ho trovato questa riga
SCK period      : 0.1 us
è un periodo che tradotto in frequenza significa proprio 1MHz, quindi è confermato, credo :smiley-eek:

@leo
dimenticavo, attiva la riga del digitalWrite, altrimenti si comporta un po' diversamente lo sleep.
Fammi sapere.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 08:20 pm
puoi anche solo compilare con lo shift premuto ed avrai anche lì la compilazione verbosa.
peccato che non funzioni il passaggio :(
e se invece lo passassi come upload options in una stringa?
tipo:
attiny85arduinoisp.upload.options= -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 22, 2011, 08:47 pm
Scusate L' O.T.
La fate una bella guida in PDF dopo vero :) ?
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 08:55 pm

puoi anche solo compilare con lo shift premuto ed avrai anche lì la compilazione verbosa.
peccato che non funzioni il passaggio :(
e se invece lo passassi come upload options in una stringa?
tipo:
attiny85arduinoisp.upload.options= -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Provo, ma se non ricordo male, in un altro topic questa cosa si era discussa, in ogni caso devo mettere ul low fuses personalizzato altrimenti come mi accorgo se passa?

Scusate L' O.T.
La fate una bella guida in PDF dopo vero :) ?

e certamente! io rompo il fegato al forum fino a che risolvo il problema, dopo restituisco sotto forma di guida, anche se qui si tratterà di 2-3 pagine al massimo, ma è utile comunque, mi pare che tu hai comprato gli attiny, se non ricordo male.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 22, 2011, 09:05 pm
se tieni premuto shift durante l'upload dovresti vederla passare sana così com'è.
io per comodità e leggibilità alla fine dell'upload mi copio tutto l'output della finestra di log su un file di testo e me lo leggo bello grande e comodo.  :.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 22, 2011, 09:09 pm


puoi anche solo compilare con lo shift premuto ed avrai anche lì la compilazione verbosa.
peccato che non funzioni il passaggio :(
e se invece lo passassi come upload options in una stringa?
tipo:
attiny85arduinoisp.upload.options= -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Provo, ma se non ricordo male, in un altro topic questa cosa si era discussa, in ogni caso devo mettere ul low fuses personalizzato altrimenti come mi accorgo se passa?

Scusate L' O.T.
La fate una bella guida in PDF dopo vero :) ?

e certamente! io rompo il fegato al forum fino a che risolvo il problema, dopo restituisco sotto forma di guida, anche se qui si tratterà di 2-3 pagine al massimo, ma è utile comunque, mi pare che tu hai comprato gli attiny, se non ricordo male.

Si li sto ancora aspettando però :( se li avessi almeno potrei essere d'aiuto....
e comunque anche se corta può sempre aiutare gli ignoranti in materia come me :) non si finisce mai d'imparare daltronde
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 09:15 pm

se tieni premuto shift durante l'upload dovresti vederla passare sana così com'è.
io per comodità e leggibilità alla fine dell'upload mi copio tutto l'output della finestra di log su un file di testo e me lo leggo bello grande e comodo.  :.

Ho capito, avevo fatto anch'io così, purtroppo non c'è, infatti sul PB4 la frequenza dell'oscillatore non c'è.

@ ratto93
no problem, ormai abbiamo finito, resta questo passaggio, che vorrei poter fare in quanto se volessi lavorare a 8 o 16MHz non riuscirei a programmarlo il chip, nello specifico deve lavorare a 1MHz e quindi non serve. BB non ha il chip e non si può sbizzarrire, ma c'è leo72, vedrai che appena fa funzionare il test che gli ho mandato ed è pronto per le prove, qualcosa tira fuori per risolvere. Io intanto traccio le linee della guida  ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 22, 2011, 11:17 pm
Il Leo ora come ora si sta rimettendo su il suo bel SO (Arch.... e chi conosce questa distro sa che bisogna un po' smanettare per configurarla per benino). Non so se riuscirò a provare lo sketch prima di domani.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 22, 2011, 11:33 pm
Non abbiamo fretta, attento a non ammazzare il pinguino  :D
Ti dò una chicca: ho fatto lavorare il tiny a 1,5V, il microamperometro misura "0"! vuol dire che al minimo siamo sotto i 50nA, cioè non uso manco le 3,6V ma una bella Duracell 1,5 standard; settimana prossima è intensa per lavoro ma la successiva realizzo una micro-millefori e finalmente piazzo il mio sensor in tapparella XD XD, poi valuterò quanto mi "dura" la duracell.... intanto mi cerco il datasheet. felice notte!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 23, 2011, 10:21 pm
Non riesco ad uploadare lo sketch.
Siccome ho un po' di casino con diversi file boards.txt a giro, mi dici per favore che combinazione di IDE, librerie aggiuntive, file extra, schede hai usato?
Io ho provato con Attiny85 del Tiny Core e mi dà errore Java. Con l'Attiny85 creato da me mi dà errore di compilazione....
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 23, 2011, 10:51 pm
mmmh, purtroppo è tutto sul pc del lab, ti rispondo domattina che sono libero XD XD
Però intanto vado a memoria, per cui non incavolarti se qualcosa non va :smiley-red:
1 - Sono certo alla fine di NON aver più usato il tuo file boards.
2 - Ho scaricato questa (http://code.google.com/p/arduino-tiny/downloads/detail?name=arduino-tiny-0022-0008.zip) e ho messo le due cartelle in Hardware, accanto alla Arduino, confermando la sovrascrittura della tools (tanto i file sono diversi)
3 - Ho scaricato questa (http://code.google.com/p/arduino-tiny/downloads/detail?name=PinChangeInterrupt-0001.zip) e ho messo le tre cartelle nelle "mie" librerie (ti ricordo che io ho Windows) e cioè nella Libraries appena creata nella stessa cartella in cui ho "Sketch"
4 -nella cartella "tiny" ho rinominato il file boards.xt in boards_originale.txt (giusto per salvare il contenuto), poi ho creato un nuovo file boards.txt con la sola board che mi serviva, questa:
Code: [Select]
###########################################################################

attiny85at1.name=ATtiny85 @ 1 MHz  (internal oscillator; BOD disabled)
attiny85at1.upload.using=arduino:arduinoisp
attiny85at1.upload.maximum_size=8192
attiny85at1.bootloader.low_fuses=0x62
attiny85at1.bootloader.high_fuses=0xD7
attiny85at1.bootloader.extended_fuses=0xFF
attiny85at1.bootloader.path=empty
attiny85at1.bootloader.file=empty85at1.hex
attiny85at1.bootloader.unlock_bits=0xFF
attiny85at1.bootloader.lock_bits=0xFF
attiny85at1.build.mcu=attiny85
attiny85at1.build.f_cpu=1000000L
attiny85at1.build.core=tiny

Non ricordo sinceramente se ho messo altre righe, perché ho fatto un mare i prove (inutili) per il bootloader.
In tal modo l’IDE (da chiudere e riavviare) trova nelle cartelle Arduino e Tiny i due files boards.txt e li mixa facendo apparire in testa la nuova board Tiny85 1MHz

Lo sketch è quello che ti ho postato, devi ricordarti di attivare la riga digitalWrite…. per la pull-up; la tecnica e la “nostra” solita (ArduinoISP) e gli unici errori che ti dovrebbe dare sono i due del PAGEL, che già avevi riscontrato tu.
Sono ragionevolmente certo di non sbagliarmi, ma potrei, fammi sapere, tanto sto lavorando sodo stasera, devo preparare 20 ore di lezione per mer-gio-ven :smiley-sweat:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 23, 2011, 11:01 pm
Uhm.. che buffo. Mi da errore di sincronizzazione...
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 23, 2011, 11:04 pm
Durante l'invio dello sketch i pin di attiny85 collegati ad Arduino devono essere "liberi", quindi il chip deve essere solo alimentato, se monti prima resistenze ed altro fornendo un qualche segnale "esterno" ai MISO,MOSI,SCK,RST ti dà errore di sincro, è questo forse?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 23, 2011, 11:11 pm
No, ho un problema diverso. Parte l'upload ma non va a buon fine dandomi errore di sincronizzazione..
Siccome ho cambiato SO ed ho finito di mettere a posto le cose solo oggi, forse non ho messo tutto a posto....

Ho provato con un altro Attiny che aveva dentro uno sketch... ebbene, dopo il "passaggio" con l'ArduinoISP è sparito lo sketch che c'era ma non è stato scritto quello nuovo. Quindi avrdude ha compiuto il lavoro a metà, cancellando la Flash ma non riprogrammandola...
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 23, 2011, 11:19 pm
:smiley-eek: mi spiace, non lo la più pallida idea di cosa non vada, certamente hai usato l'IDE 0022, a questo punto l'ultima prova che ti resta da fare è caricare sul tiny il tuo cketch della Guida, senza le librerie aggiuntive, se non va manco lui è il Pinguino che gioca a fare l'Otaria....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 23, 2011, 11:23 pm
Difatti è così perché anche usando l'IDE 0022 con le lib attiny45/85 (non il Tiny Core ma ciò che ho scritto nella mia guida) ottengo gli stessi risultati. Non riesco ad uploadare più nessuno sketch.  C'è qualcosa che non va ma non so cosa... uhm...  :.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 23, 2011, 11:30 pm
Allora datti da fare e risolvi, ancora non "abbiamo" finito con gli attiny85, c'è da riuscire a caricare il bootloader, senza il tuo apporto questa famigliola andrà incontro alla distruzione totale.  =(
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 24, 2011, 06:48 am
a che velocità stai tentando l'upload?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 24, 2011, 09:32 am
Il problema risiede nel SO.
Nel senso che ho letto che binutils-avr (e pare anche avr-gcc) è affetto da un bug nel codice per cui non funziona il delay(). Questo perché il linker, durante la compilazione, se non trova delle variabili globali ad inizio sketch per cui allocare della memoria, "sbarella" ed alloca la memoria per i puntatori ad indirizzi illegali per cui tutte le funzioni che usano dei contatori, come millis() su cui si basa delay(), non funzionano.
http://arduino.cc/forum/index.php/topic,56841.msg410902.html#msg410902

Su Ubuntu non ci sono problemi perché vengono usati dei pacchetti patchati direttamente da Debian ma su altre distro, che non usano queste patch, i pacchetti sono buggati e danno errori. Una è appunto Arch.

Sembra che esista un modo per aggirare questo problema, e cioè quello di dichiarare una variabile globale inutile (tipo "byte a=1;") e poi incrementarla in setup() ("a++;"): in questo modo sembra che il problema venga aggirato, nel senso che il delay() funziona e lo sketch "blink", ad esempio, viene eseguito regolarmente. Ma ciò non è vero perché sotto qualcos'altro resta alterato. Difatti provando ad usare lo sketch ArduinoISP compilato e flashato su Arch ottengo appunto che il programmatore è fuori sincronia ("programmer is out of sinch") mentre se compilo e flash lo sketch ArduinoISP su un altro PC su cui ho Lubuntu (versione con LXDE di Ubuntu) l'Arduino funziona regolarmente come programmatore ISP e riesco a caricare lo sketch su micro standalone....

Maremma m..... :0 :smiley-roll-sweat: :~ :smiley-eek: :smiley-roll-blue: :smiley-yell: :smiley-sad-blue: :smiley-eek-blue:
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 24, 2011, 10:56 am
mi sa che devi rimettere il vecchio Pinguino.... non vorrai mica abbandonare il Forum? Già ti vedo inczz in almeno altri due Topic ;) ;)
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 24, 2011, 12:24 pm
Leo ma che ci fai proprio con arch?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 24, 2011, 02:27 pm
L'avevo già usata in passato e mi piaceva perché potevo "spippolarci" alla grande.
Dopo la delusione dell'ultima Ubuntu, ero tornato ad Arch però se il problema è questo DEVO per forza ricambiare. Il problema è che qualcuno ha fatto i pacchetti patchati con le patch di Debian (binutils-avr e avr-gcc) ma non riesco a compilarli perché mi creano un casino con le dipendenze.

Ad Ubuntu non voglio tornare, però non voglio mettere un'altra distro con questi problemi. Dovrei fare un sondaggio fra i Linuxiani per capire quale distro usano e se hanno di questi problemi.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 24, 2011, 03:29 pm
Leo parli di questo?:
https://bugs.archlinux.org/task/23515
http://www.archlinux.org/packages/community/x86_64/binutils-avr/
https://bugs.archlinux.org/task/18749?project=5&status[0]=open
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 03:38 pm
oggi sono arrivati gli ATTiny 85 ma ho un problema seguendo la guida di leo mi da un errore....

avrdude: stk500_getsync(): not in sync: resp=0x15
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 24, 2011, 04:09 pm
@Brain:
non ho capito i link che hai riportato.

@
hai messo il condensatore nei pin dell'Arduino prima di programmare l'Attiny?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 04:26 pm
si un 47uF poi ho provato con la resistenza da 100ohm e nulla.... ha la 2009 di board...
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 04:28 pm
Non so come ma ora va:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 24, 2011, 05:00 pm
Si è accorto che avevi chiesto aiuto a me ed aveva paura che ti dessi qualche tortura da applicare alla scheda  ]:D ]:D
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 05:04 pm

Si è accorto che avevi chiesto aiuto a me ed aveva paura che ti dessi qualche tortura da applicare alla scheda  ]:D ]:D

bah può essere :):):)
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 24, 2011, 06:15 pm
Leo volevo capire se il problema che stai incontrando è quello citato nei bug che ho linkato.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 08:53 pm
Scusate se rompo posso fare una domanda ?
che librerie siete riusciti a fa girare sull' ATTiny85 oltre a swserial e Wire? :) :) io mi sto cimentando con servo ma non ne vengo fuori :(
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 24, 2011, 09:12 pm
hai provato con softwareservo?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 09:21 pm

hai provato con softwareservo?

intendi servo.h ???
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 24, 2011, 09:27 pm
no, dico proprio  softwareservo.h :)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 24, 2011, 09:34 pm
An ...
L'ho trovata dom provo ora vado a studiare ... notteeeeeeeeeeeeeeeeeeee:)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 24, 2011, 10:27 pm
@Brain:
il problema è quello che ho citato io nel link che ho messo alcuni post indietro, e cioè che c'è un bug di fondo in binutils-avr che impedisce l'allocazione della memoria per le variabili dei contatori interni (tipo millis(), usato da delay()) se lo sketch non contiene almeno una variabile globale inizializzata con un valore diverso da 0 e poi usata almeno 1 volta all'interno del codice.

Oltre a questo ci dev'essere un bug più "profondo" perché nonostante usi il metodo per aggirare questo bug l'Arduino caricato con lo sketch ArduinoISP non risponde correttamente ad avrdude e questo segnale che il programmatore è fuori sincronia, segno quindi che c'è qualcos'altro di bacato.

Solo compilando su xUbuntu riesco a risolvere, perché Ubuntu usai i pacchetti Debian, e binutils-avr distributo da Debian è stato patchato e non ha questo problema. Ho letto che anche altre distro più recenti pare siano afflitte da questo problema, quindi bisognerebbe che i manutentori delle rispettive distro di questo pacchetto si diano da fare per "patcharlo".

Inoltre c'è un altro problema: ho detto che non riesco a compilare le versioni patchate. Questo perché esse sono vecchiotte (qualche mese) e contengono delle dipendenze che sono state modificate in Arch. Nello specifico, avr-gcc patchato non riesco a compilarlo perché richiede cloog-ppl ma questo pacchetto è stato sostituito con cloog nelle ultime versioni di gcc per cui o rompo la toolchain relativa a gcc, rompendo quindi la catena delle librerie di sistema, o non compilo. Ho scelto la seconda soluzione.

Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 25, 2011, 10:55 am
OK.
Stanotte ho messo Xubuntu 11.04: leggera come piace a me e funzionale come piace a me. Inoltre compila perfettamente il codice per i miei amati chippettini come piace me.... Quindi... sono tornato operativo al 100%  XD

Ora.... dove eravamo rimasti??  :P
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 25, 2011, 02:20 pm
Non riusciamo a caricare il bootloader e quindi a prgrammare i fuses, il mio post con le oprazioni era esatto, nel senso che la procedura seguita è quella; ora devi scovare l'inghippo perché altrimenti non riusciamo a far lavorare i tuoi chippettini :D a 8+ MHz.
Poiché mi pare che tu ti sia riposato abbastanza con la scusa del Pinguino ingrassato  :smiley-fat: mi parrebbe ora che ti mettessi al lavoro, mentre io sono in Basilicata a guadagnare un pezzo di pane, da mangiare in lab di notte, appena torno, sono già in ArduAstinenza, una crisi forte =( =(
Bentornato nostro TinySalvatore, si aspetta la tua soluzione, maremma elettronica! XD XD XD XD XD
A stasera.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 25, 2011, 10:40 pm
Allora? non tenermi sulle spine, c'è la 220  :D
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 25, 2011, 11:37 pm
Ciao, non sto "lavorando" perché sono cotto e domani non so se riesco a mettermi a fare qualcosa.
Cmq non mi torna una cosa... Il Fuse Calc noto ora che non contempla i settaggi per riservare lo spazio per il bootloader
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 06:24 am
Forse perché non è  previsto, vista la poca memoria; in realtà, visto che non lo montiamo su Arduino o altro, a noi non serve, la manovra è solo per poter settare i fuses per impostare le frequenze, altrimenti questo chip si può usare solo a 1MHz, se non si dispone di un programmatore.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 06:48 am
bè direi più semplicemente perchè il tiny85 non ha la seriale e quindi il bootloader con cosa parlerebbe?
perchè invece non provate a fare il caricamento del bootloader con un bootloader finto?
così magari riuscite a passare i fuse dall'ide :P
cioè create un file vuoto tipo attiny85_Fakeboot.hex e poi lo mettete in boards.txt insieme ai valori dei fuse da passare e poi provate a caricarlo.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 09:10 am
CIao BB! Stick!
FIne settimana rientro e provo, oltre ovviamente ad altro... 8). Solo che nelle prove che ho fatto in realtà un bootloader c'è, visto che nelle righe di boards.txt è previsto, ma mi dà errore, quindi il problema è già lì; se provi a riguardare per ultime 3-4 pagine di questo topic ad un certo punto puoi vedere tutto, magari scovi il problema... Ci provi?
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 10:03 am
E' previsto che avrdude si lamenti del bootloader vuoto, ma puoi ignorare tranquillamente l'errore :) (a meno che l'errore non sia bloccante),e vedere se qualcosa è cambiato.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 10:43 am
Secondo me non è così semplice, perché programmando uno spazio per il bootloader tramite i fuse viene "impartito" al micro, ad reset, di iniziare ad eseguire il codice del bootloader, quindi bisogna non solo riservare uno spazio per esso ma anche far sì che esista e che abbia un codice valido e che termini con un salto alla locazione $0000 per eseguire poi il codice dell'utente.

Il problema non è di così facile soluzione. Secondo me forse sarebbe da prendere l'IDE che avete modificato tu, Brain, e gdm ed inserire una nuova voce nel menu che chiami avrdude per la programmazione dei fuse.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 10:55 am
Leo , ma hai provato?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 10:59 am
Intendi il tuo metodo o il metodo di Michele?

Quello di Michele non lo provo, se a lui non ha funzionato significa che non va di sicuro.
Il tuo mi pare non possa funzionare per quanto ti ho detto. Se riservi uno spazio per il bootloader, il chip viene istruito per saltare ad eseguire quel codice ma se il bootloader non esiste credo si pianti.

EDIT:
stavo ora lavorando ad una soluzione alternativa... vediamo se mi riesce...  ]:D
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 11:07 am
Diciamo che il file vuoto serve solo a non far andare in errore avrdude quando lo cerca e far sì che vada avanti nella programmazione scrivendo i fuse.
In realtà non viene scritto nulla nell'area del bootloader, resta semplicemente come è adesso.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 11:17 am
Sì ma come ti ho spiegato, quando il micro vede i bit impostati per il bootloader, oltre a riservare dello spazio per esso, salta ad eseguirne il codice ad ogni reset. Se non trova nessuna istruzione valida, men che meno un salto per poi tornare al codice utente, che succede?

Cmq l'idea a cui stavo lavorando è impraticabile.
Secondo me ci stiamo scervellando per un problema irrisolvibile a meno che non si metta mano al codice dell'IDE.
Secondo me la soluzione più SEMPLICE è quella di fornire i file batch per ogni SO per poter lanciare avrdude integrato nell'IDE (che è capace di dialogare con l'Arduino) ed usarlo per programmare i fuse dell'Attiny. Senza stare a sbattersi con soluzioni improponibili.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 11:20 am
Aprendo un terminale in /arduino-0022/hardware/tools/ e dando:

Code: [Select]
./avrdude -C ./avrdude.conf -pattiny85 -cstk500v1 -P/dev/ttyACM0 -b19200 -Ulfuse:w:0x62:m
ho usato avrdude di Arduino ed ho flashato il fuse basso dell'Attiny85 impostandolo ad 1 MHz in mezzo secondo....

EDIT:
e senza cancellare lo sketch caricato nella Flash (perché non ho messo l'erase della memoria).
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 11:23 am
;) dude_up è nato per quello.
Ma la dimensione del bootloader non si passa attraverso altri fuse? vedi BOOTSZ
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 11:31 am
E' la strada da seguire, è troppo complicato agire solo tramite l'IDE. Non è stata scritta per essere personalizzabile nelle operazioni che esegue sui micro e quindi è impossibile fargli fare determinate cose "manomettendo" solo i file di configurazione.

Ti domando: mi pareva di aver letto che qualcuno (MauroTec?) stava sviluppando dude_up anche per Linux usando le Qt? A che punto è? Altrimenti provo anch'io a lavorarci sopra con Gambas.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 11:41 am
Mauro è ancora all'inizio, purtroppo, ma procede rapidamente ;)
forse su linux è più semplice fare uno script interattivo per bash, tipo wizard...
sarebbe semplice farlo molto specifico e poco generico. (monouso).
dude_up salva il comando generato sotto forma di file .bat per poter riciclare al volo e a ripetizione il comando costruito.
se fai uno script che fà solo quello e dove l'utente deve solo dirgli la seriale a cui è connesso arduino, hai svoltato.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 11:45 am
Fare uno script è facile, esistono anche delle lib di X usate da un frontend che ti permettono di creare mini interfacce grafiche da bash. Così non devi neanche caricare interpreti vari.

Se si devono solo passare i valori dei fuse potrei provare a seguire questa riga.
Non sono una cima, però, della programmazione shell: non so cosa verrà fuori  :D
Cmq penso che per l'Attiny85 ad un utente importi solo mettere il chip a 1 o 8 MHz, quindi alla fine tutto si risolverebbe con la scelta della porta da usare e del clock da impostare.
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on May 26, 2011, 12:04 pm
Ciao Leo, sto al punto seguente:

Si devono creare dei file xml che descrivono ogni micro ed ogni programmatore, almeno per iniziare uno micro ed un programmatore. Ho scelto di lavorare sul 328 e su la board arduino usata come isp.

La voce della board nella gui sarà "arduino 2009 ISP", solo perchè io dispongo della 2009, in seguito si possono aggiungere nella cartella altri file .xml che descrivono ognuno un programmatore.

Per i micro invece la cosa è più complicata:
L'xml deve descivere molte cose del micro. Ciò che deve descrivere sono le informazioni necessarie per creare fusecalc. Es:
N_byte_fuse                       quanti byte ci sono Low High ed Extended
Lfuse_default                     es 0x62 (328)
Hfuse_default                    ......
Xfuse_default                    .......

ogni fuse ha una maschera ed un valore:
con le quali facendo una operazione xnor mi da il valore da passare ad avrdude.
Purtroppo l'xml da cui sto deducendo i dati, contiene informazioni errate, in quanto mi da come default low fuse 0xe1 ed invece è 0x62.

Se ti va di dare una mano, fatti vedere più spesso in chat da gioblu.
Oppure guarda qui https://gitorious.org/avrdudequi/avrdudequi (https://gitorious.org/avrdudequi/avrdudequi)

LE funzionalità del programma sono simile a fusecalc con la differenza che lavora offline.
Ho preso come riferimento la versione 5.10 ufficiale di avrdude, ciò quella che trovi nei repo.

Ma c'è ancora tanto da fare, penso che se avessimo l'xml per il micro pronto si potrebbe già pensare a come eseguire avrdude con la lista degli argomenti.

Ciao.





Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 02:22 pm
1) al momento si potrebbe fare una mini-routine che programmi solo l'Attiny85 usando Zenity come interfaccia grafica.

2) Attenzione che usando avrdude 5.10 non si può usare l'Arduino come programmatore ma serve un programmatore esterno. Solo avrdude 5.04 distribuito con l'IDE di Arduino è patchato per poter funzionare con l'Arduino.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 03:33 pm
su windows avrdude 5.10 riconosce arduino come avrisp ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 03:36 pm
Su Linux avrdude che ho nei repo io non lo riconosceva. Ma tu avrdude 5.10 lo hai trovato nell'IDE oppure lo hai scaricato?
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 03:42 pm
ho usato prima quello di winavr, adesso uso una versione modificata da un tizio japponese che ha anche l'autoriconoscimento dell'mcu
Edit:
ma non ricordo più dove l'ho presa :P
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 04:08 pm
Ecco, appunto... perché le versioni che funzionano con l'Arduino devono essere modificate.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 26, 2011, 04:17 pm
no, io all'inizio ho sostituito winavr compreso in arduino, con il nuovo, in blocco!
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 05:54 pm
Ragazzi, si parlava in Italiano secco l'ultima volta che sono passato da queste parti, possibile che appena mi distraggo coinciate a giocare ai turchi? :smiley-eek: :smiley-eek:
Peraltro avete allargato la question anche a roba su cui state ancora lavorando (la proverò, naturalmente  :D), quindi per portare a compimento il mio lav oro devo ricondurvi sulla retta via, ri-semplificando la discussione, se intendete parlare anche con me  :smiley-red:
Allora, io ho sollevato una questione semplice:
1 - Come impostare la frequenza del clock di un ATtiny 45/85 a 8MHz, e eventualmente riportarla a 1MHz (è previsto anche il 16MHz con quarzo esterno, se ben ricordo, a 5V di alimentazione, ma sarebbe risolto allo stesso modo); l'unico modo è passare i relativi valori di fuses
2 - Come fare questa operazione usando Arduino UNO/2009 come ISP o, in alternativa, ricorrendo a software alternativo ma SENZA hardware aggiuntivo.

In realtà io un hardware aggiuntivo ce l'ho, è l'HVFuse, lo shield che mi permette di programmare i fuses applicando temporaneamente una tensione di 12V al pin reset del chip, che mi permette appunto di inviare i fuses low e high (non ho provato con l'extended ma non credo ci sian problemi e comunque mi pare non serva per la frequenza, confermate?); ma io continuo con la mia filosofia di far far tutto a tutti, quindi vorrei cercare di non "costringere" gli Utenti de Forum a dover acquistare o realizzare altro hardware.

Mi pare che Leo sia riuscito da software e non da Arduino, ma deve spiegarmi "for dummies" la tecnica.
So che BB è riuscito con Dude_UP e quando rientro gli chiederò la cortesia di farmelo testare ;)
Leggo che Mauro_Tec sta lavorando pr l'ambient Linux e procede.

Più di ciò non ho capito una benemerita  :smiley-zipper:
Mi aggiornate/rispondete XD XD :smiley-red: :smiley-red:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 06:07 pm
Allora, cerco di spiegare in italiano semplificato (come sulla Wiki, che esiste il simple english  XD ):

1) al momento NON è possibile usare l'IDE di Arduino per programmare i fuse di un Attiny perché l'IDE non è così elastico ed è stato impostato affinché, se si programma solo lo sketch, non passi i parametri relativi ai fuse ad avrdude. Se si programma il bootloader, provvede a erasare anche la Flash, cancellando lo sketch caricato.
2) L'unica soluzione SEMPLICE che ho trovato è quella di creare un piccolo file eseguibile (per tu che sei DOS/Windowsiano si tratta di un file .BAT, per i Pinguini si tratta di uno script per la shell) contenente la riga che ho postato e riguarda appunto l'invocare avrdude contenuto nell'IDE di Arduino (si trova in /arduino-00xx/hardware/tools): quella versione di avrdude è modificata affinché possa dialogare con Arduino. avrdude "normale" NON può (BB lo può confermare dato che lui sta usando una versione patchata). In questo modo usando la tecnica ISP puoi flashare i fuse anche senza cancellare lo sketch.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 07:05 pm
Bravo Leo, ho capito quasi tutto  :smiley-red:

Allora, cerco di spiegare in italiano semplificato (come sulla Wiki, che esiste il simple english  XD ):

1) ........... Se si programma il bootloader, provvede a erasare anche la Flash, cancellando lo sketch caricato.

E qui che continuo a inchiodarmi! questo lo abbiamo appurato, e ci siamo, però nello specifico, io faccio l'opposto col 328, prima mando il bl per impostare i fuses, poi mado lo sketch, che non li tocca, e se mi cancella il bl non m'importa, qui si parla di stand alone. Non riesco a fare la stessa cosa con l'attiny, cioè non riesco a mandare (stiano parlando di Arduino ora) il bl e quindi non posso impostare i fuses; con questa frase generica tu mi lasci intendere che si può, ed in effetti si dovrebbe, ho capito male io?

Quote

2) L'unica soluzione SEMPLICE che ho trovato è quella di creare un piccolo file eseguibile (per tu che sei DOS/Windowsiano si tratta di un file .BAT, per i Pinguini si tratta di uno script per la shell) contenente la riga che ho postato e riguarda appunto l'invocare avrdude contenuto nell'IDE di Arduino (si trova in /arduino-00xx/hardware/tools): quella versione di avrdude è modificata affinché possa dialogare con Arduino. avrdude "normale" NON può (BB lo può confermare dato che lui sta usando una versione patchata). In questo modo usando la tecnica ISP puoi flashare i fuse anche senza cancellare lo sketch.

Quindi io creo un file fuses.bat, direttamente nella cartella tools, e ci piazzo dentro
Code: [Select]
./avrdude -C ./avrdude.conf -pattiny85 -cstk500v1 -P/dev/ttyACM0 -b19200 -Ulfuse:w:0x62:m
naturalmente modificando i caratteri di percorso  e la porta seriale, lo eseguo e scrive i fuses?
Se è così non c'è modo di farla eseguire all'IDE questa operazione, via software, cioè lanciare una riga di comando quando si "invia" lo sketch? (tanto per scassarti i cabasisi :smiley-mr-green:)
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on May 26, 2011, 09:05 pm
Ciao Menniti, mi diverto un mondo a leggerti, hahah i cabasisi o anche zebedei. :D

Vediamo se ho capito, dal momento che durante la scrittura del bootloader l'ide scrive anche i fuse, tu
scrivi il bootloader e quindi anche i fuse, ma poi il bootloader non ti serve e allora scrivi il programma sovrascrivendo il bootloader, cosi però ti rimangono i fuse cambiati precedentemente.
Però la procedura di funziona con il 328 ma non col'ATtiny85.
Questo è strano, sicuro che con il 328 rimangono i fuse scritti con il boot dopo la sovrascrittura?


Quote
2) Attenzione che usando avrdude 5.10 non si può usare l'Arduino come programmatore ma serve un programmatore esterno. Solo avrdude 5.04 distribuito con l'IDE di Arduino è patchato per poter funzionare con l'Arduino.


Quindi se io volessi usare arduino 2009 come ISP non mi funziona con avrdude-5.10.

Da cosa dipende, forse basta aggiungere una voce nel file avrdude.conf oppure è proprio modificato il codice c.

Se così non posso fare nulla per risolvere, nel senso non posso basare avrdudequi su una versione non ufficiale di avrdude, se bastasse aggiungere una voce al .conf. Se bastasse aggiungere una voce al .conf posso usare la versione standard ed aggiungere nel file xml di avrdudequi la voce "Arduino ISP", ed i parametri di configurazione. 

Brain mi mandi in email il sorgente di avrdude modificato o anche il solo .conf
Così vedo cosa viene modificato.

Ciao.



Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 10:07 pm

Ciao Menniti, mi diverto un mondo a leggerti, hahah i cabasisi o anche zebedei. :D

XD dalle mie parti si parla anche di "vecchie" o "bicchieri", sai è tutto un argomento oggetto di importanti discussioni filosofiche che originano generalmente da pressioni o scambi verbali che via via alzano di tono fino ad arrivare alla fatidica frase: "mo' mi hai proprio rotto..." e da qui in poi puoi dire di tutto, in realtà, tanto chi non capirebbe a cosa ti riferisci? chiudiamo se no andiamo OT (e ora non dire che ti ho rotto gli OT :smiley-mr-green:!)

Torniamo seri :smiley-roll-blue:
Quote

Vediamo se ho capito, dal momento che durante la scrittura del bootloader l'ide scrive anche i fuse, tu
scrivi il bootloader e quindi anche i fuse, ma poi il bootloader non ti serve e allora scrivi il programma sovrascrivendo il bootloader, cosi però ti rimangono i fuse cambiati precedentemente.
Però la procedura di funziona con il 328 ma non col'ATtiny85.
Questo è strano, sicuro che con il 328 rimangono i fuse scritti con il boot dopo la sovrascrittura?

Sembra strano ma è così; il "mio" HVFuses ha due versioni di software, la sua che funziona ed ua successiva fatta per la board commerciale nella quale pare abbiano aggiunto la possibilità di mostrarti i valori dei fuses del chip prima di riprogrammarlo con l'High Voltage (sti Mericani, manco fosse la 380! 8)), quando trovo il tempo di adattare lo sketch alla mia board, ti potrò dare conferma sicura.
Per ora ti deve bastare questa sequenza di prove, se sei attrezzato con un frequenzimetro puoi farla da te:
1 - In FuseCalc inserisco i Fuses standard di Arduino UNO o 2009 (quello che vuoi...) e poi attivo il "clock out" che, come sai, trasforma il pin 8 in un'uscita che ti riporta all'esterno il clock a cui sta lavorando il micro. Prendo i nuovi valori dei fuses e li metto nelle righe della board "virtuale" che ho creato nel file boards.txt per fare le mie prove.
2 - Con la tecnica riportata nella Guida, carico ArduinoISP su Arduino e programmo il bootloader della board virtuale nel chip montato su un secondo Arduino (io ce l'ho) oppure su breadboard.
3 - A questo punto, con lo stesso sistema (e una variante messa a punto da Leo), invio uno sketch qualsiasi al chip su breadboard, l'importante è che non usi il pin 8, quindi va benissimo il blink.
4 - Ora scollego Arduino dalla breadboard e alimento quest'ultima per far partire il blink, collego il frequenzimetro o l'oscilloscopio tra il pin 14 del micro (corrisponde all'8 di Arduino) e GND e leggo/vedo i 16MHz.
4a - nota: se metto però questo chip su Arduino, il led "blinka" ma non riesco a programmare con l'IDE
5 - A questo punto ricalcolo i fuses per avere 1MHz, metto i valori nella board virtuale e rifaccio i passi dal 2 al 4, questa volta sul pin 14 leggo/vedo 1MHz.

Dal punto 4a e dal punto 5 deduco quindi che è vero che il bootloader viene in qualche modo danneggiato (anche se nella board virtuale hai lasciato lo spazio riservato non gliene frega niente ad ArduinoISP!) ma è altrettanto vero che i fuses non vengono modificati, altrimenti non funzionerebbe il clock out e non avrei la frequenza impostata, che non dipende dallo sketch perché ormai è certo che non riesce a passare i fuses.
Sono stato abbastanza chiaro? altrimenti chiedi pure...
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 10:49 pm
Facciamo il punto:
1) l'IDE è così e non può essere modificata con la manipolazione dei file di configurazione boards.txt, programmers.txt ecc.. Se vuoi cambiare qualcosa bisogna modificare il codice e ricompilare. Io non conosco il Java né saprei dove mettere le mani per cui "non me le sporco"  :smiley-sweat:

2) appurato il punto 1), il comportamento dell'IDE è quello detto: se programmi il bootloader, l'IDE passa ad avrdude anche il parametro che serve a far pulizia di TUTTA la memoria del micro, quindi Flash (e sketch) compresa. C'è da sbattersi poco: l'IDE fa così e bisogna farsene una ragione. E' il motivo per cui quando programmavi il bootloader su un 328 standalone poi esso non era più riprogrammabile se rimontato sull'Arduino

3) il caso degli Attiny è ancora più complicato perché sono chip pensati per lavorare in standalone e quindi hai visto anche tu che, per esempio, Fuse Calc manco prende in considerazione l'ipotesi di gestire i fuse per riservare spazio per il bootloader. D'altronde, tramite l'IDE di Arduino i fuse vengono programmati SOLO se flashi il bootloader, ma il bootloader per gli Attiny non c'è. Quindi è un cane che si morde la coda.

4) Preso per buono il punto 3), ho trovato solo 2 modi che permettono di programmare i fuse tramite Arduino: modificare l'IDE oppure usare il terminale. L'IDE non la modifico per i motivi del punto 1). Quindi uso il terminale. Mettendo la riga che ti ho postato (debitamente modificata per Windows), riesci a programmare i fuse di un Attiny usando l'Arduino. Va chiesto all'utente un minimo di interazione col file: d'altronde, se sta usando un chip standalone proprio un "utonto" non sarà, quindi almeno 2 parametri a mano riuscità a cambiarli, no?

5) Parlando di avrdude, avrdude di suo NON supporta l'Arduino. Per supportarlo va modificato il codice e ricompilato. La versione presente nell'IDE di Arduino è appunto patchata per poter lavorare con l'Arduino, così come la versione per Window$ che sta usando Brain.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 11:22 pm

Facciamo il punto:
1) l'IDE è così e non può essere modificata con la manipolazione dei file di configurazione boards.txt, programmers.txt ecc.. Se vuoi cambiare qualcosa bisogna modificare il codice e ricompilare. Io non conosco il Java né saprei dove mettere le mani per cui "non me le sporco"  :smiley-sweat:

perfettamente d'accordo
Quote

2) appurato il punto 1), il comportamento dell'IDE è quello detto: se programmi il bootloader, l'IDE passa ad avrdude anche il parametro che serve a far pulizia di TUTTA la memoria del micro, quindi Flash (e sketch) compresa. C'è da sbattersi poco: l'IDE fa così e bisogna farsene una ragione. E' il motivo per cui quando programmavi il bootloader su un 328 standalone poi esso non era più riprogrammabile se rimontato sull'Arduino

chiaro
Quote

3) il caso degli Attiny è ancora più complicato perché sono chip pensati per lavorare in standalone e quindi hai visto anche tu che, per esempio, Fuse Calc manco prende in considerazione l'ipotesi di gestire i fuse per riservare spazio per il bootloader. D'altronde, tramite l'IDE di Arduino i fuse vengono programmati SOLO se flashi il bootloader, ma il bootloader per gli Attiny non c'è. Quindi è un cane che si morde la coda.

Ecco, il dubbio è qui, in quelle board della cartelle tiny-0022 c'è la voce bootloader, se ben ricordo, e fa quindi riferimento ad un qualche file, che cos'è???
Quote

4) Preso per buono il punto 3), ho trovato solo 2 modi che permettono di programmare i fuse tramite Arduino: modificare l'IDE oppure usare il terminale. L'IDE non la modifico per i motivi del punto 1). Quindi uso il terminale. Mettendo la riga che ti ho postato (debitamente modificata per Windows), riesci a programmare i fuse di un Attiny usando l'Arduino. Va chiesto all'utente un minimo di interazione col file: d'altronde, se sta usando un chip standalone proprio un "utonto" non sarà, quindi almeno 2 parametri a mano riuscità a cambiarli, no?

Non scordare che stai parlando con un Re :smiley-mr-green:, sono d'accordo, infatti la sperimento e poi scrivo come creare il file, dove, come usarlo, ecc. i miei sudditi sono duri, caro mio :smiley-sweat:
Quote

5) Parlando di avrdude, avrdude di suo NON supporta l'Arduino. Per supportarlo va modificato il codice e ricompilato. La versione presente nell'IDE di Arduino è appunto patchata per poter lavorare con l'Arduino, così come la versione per Window$ che sta usando Brain.

chiaro anche questo, quindi tutto si riduce a capire il problema che ho sollevato in risposta al punto 3.

EDIT: mmmmh, sono queste:
Code: [Select]
attiny85at1.bootloader.path=empty
attiny85at1.bootloader.file=empty85at1.hex

mi sa proprio che sono "empty" vero?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 11:30 pm
Il punto 3 è... mistico!
Nel senso che se si fanno congetture partendo dal nome di quei file ("empty") viene da pensare che siano dei bootloader "farlocchi" creati per poter programmare i fuse. Ma... non avendo visto il sorgente da cui hanno compilato quei file non so dirti altro.

Come ti ho spiegato, il bootloader non è solo un'area di memoria riservata ma è anche un'area di memoria a cui salta il micro non appena viene resettato per eseguire del particolare codice. Quindi l'area del bootloader DEVE contenere del codice, altrimenti il micro si pianta, su questo non ci sono dubbi giusto?
Detto questo, se si trovasse il sorgente (DEVE esserci, va trovato in Google Code) e si vedesse cosa contiene, si potrebbe capire come funziona quel bootloader.

SECONDO ME, detto così senza saper leggere né scrivere, contiene un'unica istruzione di salto alla locazione $0000 di modo che il micro esegua poi il codice utente. D'altronde, come ha detto giustamente Brain, non supportando l'Attiny85 la seriale via hardware, che motivo c'è di caricarci un bootloader?

Ora indago...
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 11:34 pm
Concordo pienamente, la tua idea mi convince, non fa una grinza. Solo che, se anche contenesse il solo salto a $0000, non dovrebbe "passare" al tiny con la solita procedura? semmai non cambierebbe i fuses, ma a me dà errore e i led che indicano  chiaramente che non è passato un bel nulla al chip. Mica tanto elementare Watson!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 26, 2011, 11:40 pm
Boh, non capisco. Ci sono i sorgenti di tutte le librerie ma mancano i sorgenti dei bootloader, ci sono solo i file .HEX!
Incredibile...

Io non so leggere tali file, e poi anche volendo (mi par di ricordare che ogni riga rappresenta una pagina, che inizia con l'indirizzo dove scriverla e poi prosegue con i byte da scrivere) sono decine e decine di istruzioni da riportare dal linguaggio macchina all'assembly... improponibile...

Ribadisco: meglio seguire la strada dello scritp/file batch da lanciare da terminale/riga di comando.
Con poco si elimina un GROSSO problema.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 26, 2011, 11:52 pm
Sì, chiudiamo l'argomento, ci deve essere un limite ad ogni cosa, sono per la sperimentazione estrema, ma non per la sciocca ostinazione; davvero non ne vale la pena, avendo già la soluzione pronta.
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on May 27, 2011, 04:57 am
Quote
SECONDO ME, detto così senza saper leggere né scrivere, contiene un'unica istruzione di salto alla locazione $0000 di modo che il micro esegua poi il codice utente. D'altronde, come ha detto giustamente Brain, non supportando l'Attiny85 la seriale via hardware, che motivo c'è di caricarci un bootloader?


Dunque mi  sono sfogliato rapidamente 234pg del manuale. L'25/45/85 non hanno la flash separabile come il 328, quindi la mancanza dei fuse è legata all'impossibilità di scrivere il bootloader nella sezione del boot ed il codice utente in quella utente. La seriale in effetti c'è, e c'è anche il self programming, quindi in toria si potrebbe creare un programma in funzione di boot che poi salta ad un indirizzo che il boot sa di trovare il codice utente che tra l'altro ha scritto il boot, fantasia?

Quindi quel empty boot è proprio un file per accontentare avrdude, magari quel file non contiene nulla e se avrdude sa che se il boot è vuoto non lo deve scrivere ma deve scrivere solo i fuse.

Quote
Boh, non capisco. Ci sono i sorgenti di tutte le librerie ma mancano i sorgenti dei bootloader, ci sono solo i file .HEX!
Incredibile...


Aprili con un editor hex e vedi cosa contiene.

Ciao.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 10:07 am
Intanto ti meriti un premio per aver sfogliato tutto il datasheet!  $)
Io non l'avevo fatto e non avevo letto di questa cosa della mancanza della separazione tra memoria per il bootloader e memoria per il codice normale.

Quindi, se quel bootloader è "finto", voglio provare a flasharlo per vedere cosa succede...  :smiley-yell:

I file .HEX generati dal compilatore non sono propriamente esadecimali ma sono in un formato tipo questo:
Code: [Select]
:100000000EC028C027C026C025C02BC023C022C0D8
:1000100021C020C01FC01EC01DC01CC01BC0112499
...

Ogni riga conterrebbe appunto l'indirizzo della pagina dove scrivere i dati ed i dati che costituiscono la pagina... io non lo so loeggere
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 10:18 am
No, non funziona. Durante l'invio del bootloader ricevo un errore:
Code: [Select]
avr_read(): error reading address 0x0000
   read operation not supported for memory "lock"
avrdude: failed to read all of lock memory, rc=-2


Title: Re: Giocando con l'Attiny85
Post by: Maurotec on May 27, 2011, 10:38 am
Quote
Intanto ti meriti un premio per aver sfogliato tutto il datasheet!  smiley-money
Io non l'avevo fatto e non avevo letto di questa cosa della mancanza della separazione tra memoria per il bootloader e memoria per il codice normale.


Diciamo che sarebbe bastato fermarsi a Pag. 15, dove c'è la rappresentazione della memoria, ma ho continuato a sfogliare rapidamente alla ricerca di qualcosa che potesse somigliare ad una sezione per il booloader.
Alla fine io non l'ho trovato, se ci aggiungi che nei fuse non c'è la selezione del boot, deduco e confermo che il tiny85 non ha il bootloader.

Quote
I file .HEX generati dal compilatore non sono propriamente esadecimali ma sono in un formato tipo questo:

Se non trovi i sorgenti è probabile che vengano creati in qualche makefile, e sono creati scrivendo dei file temporanei tipo main.c che contiene solo il main vuoto, i file poi vengono rimossi.

Quote
Ogni riga conterrebbe appunto l'indirizzo della pagina dove scrivere i dati ed i dati che costituiscono la pagina... io non lo so loeggere


Anche io non nè ricavo alcuna informazione risolutiva, poi dipende da come lo hai aperto, se hai usato un editor hex
allora il formato è veramente binario, e quelle righe sono la rappresentazione che da l'editor del contenuto. Puoi anche chiedere all'editor di modificare la rappresentazione in binario o ottale dipende se l'editor lo supporta.

Quote
Quindi, se quel bootloader è "finto", voglio provare a flasharlo per vedere cosa succede...  smiley-yell

Ma lo vuoi mettere nell tiny o nel 328. Nel tiny verra scritto come si trattasse di un programma utente, nel 328 invece lo scrive nella sezione del boot.
Però non molta esperienza in merito, penso che per scrivere il boot gli arg di avrdude saranno diversi da quelli per scrivere nell'area di programma utente.

Ciao.

Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 10:45 am
Non esiste il sorgente di partenza di quei bootloader, ossia il file in .c ed il make. E' curioso davvero, non capisco. Eppure ho tirato giù il Tiny core anche con subversion e la situazione non cambia.

Tornando ai file dei bootloader, io ho preso quello per l'Attiny85 ed ho provato a flasharlo ovviamente sull'Attiny85. Solo che mi ha dato l'errore che ho riportato oltre a cancellarmi la Flash del micro.
Per caricare un bootloader normalmente, non devi dare opzioni particolari. Passi solo quel file HEX (mi sa che continui a fare un po' di confusione: non è un file in formato esadecimale/binario ma è in formato testuale e riporta tante righe come quelle che ti ho riportato): grazie al suo particolare formato, ogni riga specifica ad avrdude dove i dati devono essere scritti. Ecco come viene messo il bootloader nelle parti alte della Flash: semplicemente specificando l'indirizzo dove mettere i dati.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 27, 2011, 10:57 am
il bootloader per l'attiny85 non esiste, il file deve essere vuoto, avrdude deve dare quell'errore durante la programmazione (quello riguardante il lock) ma và ignorato. (come quelli relativi a pagel e BS poi)
Provate a flashare il bootloader vuoto, poi a flashare lo sketch blink e vedete se ci sono differenze nella frequenza del lampeggio.
I fuse da scrivere sono:
Low: E2
High: DF
Extended: FE
Per farlo girare a 8MHz
mentre per riportarlo a 1Mhz sono:
Low: 62
High: DF
Extended: FE
Il lockbit non và toccato e quindi consiglio di eliminare la riga che lo setta dal file boards.txt quando lo modificate
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 11:03 am
Non ci sono differenze nel lampeggio.

Ho tentato di flashare il mio Attiny impostato ad 8 MHz tramite USBtinyISP mettendolo a 1 MHz tramite IDE e poi ho caricato lo sketch blink compilandolo ad 1 MHz ma il lampeggio va velocissimo segno che il micro è ancora a 8 MHz.

Inoltre togliendo i riferimenti ai byte di lock compare un nuovo errore:
avrdude: invalid byte null() specified for immediate mode
avrdude: write to file 'null' failed
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on May 27, 2011, 11:04 am
Quote
Non esiste il sorgente di partenza di quei bootloader, ossia il file in .c ed il make. E' curioso davvero, non capisco. Eppure ho tirato giù il Tiny core anche con subversion e la situazione non cambia.


Mi dai svn che indago?

Quote
Per caricare un bootloader normalmente, non devi dare opzioni particolari. Passi solo quel file HEX (mi sa che continui a fare un po' di confusione: non è un file in formato esadecimale/binario ma è in formato testuale e riporta tante righe come quelle che ti ho riportato): grazie al suo particolare formato, ogni riga specifica ad avrdude dove i dati devono essere scritti. Ecco come viene messo il bootloader nelle parti alte della Flash: semplicemente specificando l'indirizzo dove mettere i dati.


Infatti o meglio non faccio confusione ma semplicemente ignoravo che il bootloader è un file ASCII, l'estensione .hex
mi ha tratto in inganno.

Quel file ci deve essere in qualche posto, se non c'è allora viene violata la gpl sempre che questa sia la licenza.

In merito a quell'errore il mess è criptico per me, io traduco:
Errore legendo l'indirizzo 0x0000
L'operazione di lettura non è supportata per la memoria "lock" .
Fallimento della lettura di tutte le memorie chiuse (o bloccate).

Che cosa vuole dire? boooooooooo.

Ciao.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 11:13 am
Con subversion si tirano giù gli ultimi sorgenti, quindi dovresti avere accesso all'ultima versione su cui sta lavorando il team di sviluppo nonché alla versione "completa" di tutto. Però dentro la cartella /hardware/tiny/bootloaders/empty non ci sono i sorgenti (come nell'IDE di Arduino, per capirsi) ma solo questi maledetti HEX per Attiny2313 e Attiny25/45/85.

Cmq mi son rotto un po', tanto non si arriva a nulla di buono senza modificare l'IDE. Basterebbe infatti metter mano ai sorgenti e modificare i menu creando una nuova voce in cui si chiama avrdude durante il flash dello sketch su un Attiny passandogli anche i fuse per impostare il clock, cosa che l'IDE di default non fa.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 27, 2011, 11:24 am
L'uso del bootloader sugli attiny85 è desueto e quindi và attivato manualmente(sempre tramite fuse) SELFPRGEN se guardate a pag. 147 del datasheet ne parlano.
Da li si evince che il bootloader non parla con la seriale come arduino (perchè non cel'ha) , ma da qualsiasi altro protocollo supportato (tipo i2c magari).
ho corretto i fuse riportati nel mio ultimo post (l'extended).
Avrdude si arrabbia perchè non riesce a leggere i lock bits ma ha ragione perchè quell'operazione richiese sempre che SELFPRGEN sia attivo.
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on May 27, 2011, 11:31 am
Quote
il bootloader per l'attiny85 non esiste, il file deve essere vuoto, avrdude deve dare quell'errore durante la programmazione (quello riguardante il lock) ma và ignorato. (come quelli relativi a pagel e BS poi)


Questo ha un senso solo nel caso in cui avrdude vedendo un file di boot vuoto non fà nulla, ma si limita a scrivere i fuse.

Quote
Cmq mi son rotto un po', tanto non si arriva a nulla di buono senza modificare l'IDE. Basterebbe infatti metter mano ai sorgenti e modificare i menu creando una nuova voce in cui si chiama avrdude durante il flash dello sketch su un Attiny passandogli anche i fuse per impostare il clock, cosa che l'IDE di default non fa.


Qui ci possono mettere mano solo Brain e gbm, io solo all'idea di java devo prendere l'antistaminico. :smiley-yell:

Datemi tempo ed info. Voglio sapere se la gui per avrdude dovrà prevedere una parte per la lettura/scrittura dei lockbit, se così devo mettere i lock bit nel'xml.

Quote
L'uso del bootloader sugli attiny85 è desueto e quindi và attivato manualmente(sempre tramite fuse) SELFPRGEN se guardate a pag. 147 del datasheet ne parlano.

Ma in questo caso non si tratta di un boot come quello usato per il 328, ma di un file binario vero è proprio che sfrutta la capacita di programmare la flash mentre il boot è in esecuzione. Giusto o no?

Ciao Brain, Leo.

Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 27, 2011, 11:39 am
Si, mauro la tua ultima affermazione è semigiusta, nel senso che sugli attiny85 contrariamente a quanto succede per arduino, il bootloader non si usa quasi mai, per cui il bit di SELFPRGEN che è quello che attiva la capacità del bootloader di funzionare, è disattivato, e dallo stesso bit dipende anche anche i lock bits che causa quell'errore.
quindi per esempio, nulla vieterebbe di fare un bootloader che parla su i2c, ma bisogna sempre attivare prima SELFPRGEN mettendo a FE il fuse extended.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 11:44 am
Attenzione che l'Attiny NON supporta in hardware la seriale né l'I2C ma usa un bus universale denominato USI - Universal Serial Interface, che può essere usato per emulare via software quei protocolli. L'ho scoperto quando "giocavo" con l'Attiny i primi tempi ed ho dovuto usare le librerie TWI (Two-wire interface) e NewSoftSerial.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 27, 2011, 11:51 am
ma Twi e i2c non sono praticamente la stessa cosa? (i2c è il nome commerciale dato da philips)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 11:53 am
Sì sono la stessa cosa. Ma l'Attiny supporta solo questo USI.
Difatti anche il TWI va in software.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 27, 2011, 12:29 pm
è vero quello che dici, ma diciamo che è abbastanza supportata anche dall'hardware (vedi datasheet a pag. 115) basta settare 2 registri.
Ma non è questo il punto.
Il punto è che i fuse dovrebbero passare con il file vuoto e arduinoisp come programmer.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 27, 2011, 12:50 pm
Già il punto è ormai SOLO questo, la soluzione alternativa di Leo è praticabilissima, ma se si trova anche la soluzione con ArduinoISP & IDE, sarebbe più semplice da attuare.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 27, 2011, 12:53 pm
Guardate questo esempio:
http://www.insidegadgets.com/2011/02/01/building-a-standalone-temperature-logger-part-5/
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 27, 2011, 02:25 pm
Il tizio dell'articolo suggerisce di usare la tecnica del finto bootloader per programmare i fuse.
Quella tecnica NON funziona a tutti: è un po' il discorso del condensatore per disabilitare l'autoreset dell'UNO. C'è chi lo deve usare per forza (io) e chi invece no.

Che quel metodo non funzioni sempre lo ammette anche l'autore dell'articolo:
Read the below if your fuse bits didn't set properly or if you would like to know another way to set the fuse bits without burning the bootloader, I recommend you do!

Leggete il seguito se i vostri fuse non sono stati programmati correttamente oppure se volete conoscere un altro moto per impostare i bit dei fuse senza caricare il bootloader, ve lo raccomando!

Ed il metodo che suggerisce è ciò che ho fatto io: sfruttare avrdude integrato nell'IDE ed usare l'Arduino come programmatore.
Quindi, provate con il metodo del bootloader ma sappiate che non sempre (mai?) funziona.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 27, 2011, 10:38 pm
Beh, allora proviamo questa tecnica e ci mettiamo pure un bel condensatore  :D :D :D :D
Grazie per la traduzione in inglese dell'avviso, però ora che leggo, per quel che capisco:
1 - Intanto che se alimento a batteria i miei sette nanetti, devo
Code: [Select]
So we just need to set our BODLEVEL to 110 to set the turn off voltage to 1.8v typical per forza mettere mano ai fuses per non bruciare i tiny quando le batterie si scaricheranno!
2 - L'errore  http://www.insidegadgets.com/wp-content/uploads/2011/01/brownout8.png (http://www.insidegadgets.com/wp-content/uploads/2011/01/brownout8.png) è proprio quello che mi dà quando faccio il burn bootloader, ma qui
Code: [Select]
You can ignore the error messages it gives you about the read operation.
Now just re-upload your sketch to the ATtiny85 and it'll have the brownout detection enabled at 1.8 volts.
If the batteries drop to 1.8 volts, the ATtiny85 will pull the reset pin to low and therefore disabling the
ATtiny85 from running.
mi pare di capire che dica di ignorarlo che l'operazione è stata fatta!!!!! Francamente io pensavo fosse proprio un errore perché le spie tx/rx/p13 non hanno dato segni di vita, quindi che pizza mi ignoro? Anche se dice di controllare dopo, come evidenzia Leo. Che ne pensate?
3 - Ho capito che (in pratica la tecnica usata da Leo) lui usa
Code: [Select]
avrdude - C "C:\Program Files\arduino-0021\hardware\tools\avr\etc\avrdude.conf"
-p ATtiny85 - c stk500v1 -b - P 19200 COM2 - v

per programmare il chip, ma cosa gli manda?
4- Dopo invece usa
Code: [Select]
avrdude - C "C:\Program Files\arduino-0021\hardware\tools\avr\etc\avrdude.conf"
-p ATtiny85 - c stk500v1 -b - P 19200 COM2 - U hfuse:w:0xDE:m
per programmare il fuses "high", e se volessi aggiungere gli altri due come dovrei trasformare questa riga?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 28, 2011, 12:11 am
Il tizio aveva necessità di programmare il brown-out, non il clock. Quindi l'articolo è mirato a quello.
Ma tu hai bisogno del brown-out? Non è che bruci il chip, se la tensione scende sotto ad un certo livello (impostato tramite brown-out) viene messo a massa internamente il pin di reset così che l'Attiny non esegua nessuno sketch, per evitare che operazioni sulla EEPROM e/o sulla Flash possano portare alla perdita di dati (mancata scrittura sulla EEPROM, perdita dello sketch sulla Flash).

Detto questo, ciò che lui ha fatto è ciò che abbiamo provato a fare, ossia usare un bootloader farlocco per programmare i fuse. Ma a me NON ha funzionato, quindi la tecnica usata può non funzionare. Se può non funzionare, non è una tecnica sicura perciò continuo a ribadire che l'unica tecnica sicura al momento è quella tramite terminale usando l'avrdude dell'IDE.

Beh, i parametri di avrdude dipendono da cosa devi fargli fare. Dai un bel "man avrdude" e vedrai che sfilza di roba ti vien fuori...  :D
I fuse si programmano con lfuse, hfuse e efuse, rispettivamente per fuse basso, alto ed esteso.
Code: [Select]
-U lfuse:w:valore:m -U hfuse:w:valore:m -U efuse:w:valore:m

Nello specifico, il tipo dell'articolo ha prima letto lo stato del micro e successivamente ha programmato il fuse alto, che è quello responsabile (tra le altre cose) del brown-out.

Ah, la riga che hai messo NON va bene:  non ci vogliono spazi fra "-" ed il successivo carattere del comando. Quindi no "- c" ma "-c", ad esempio.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 28, 2011, 09:51 am

Il tizio aveva necessità di programmare il brown-out, non il clock. Quindi l'articolo è mirato a quello.
Ma tu hai bisogno del brown-out? Non è che bruci il chip, se la tensione scende sotto ad un certo livello (impostato tramite brown-out) viene messo a massa internamente il pin di reset così che l'Attiny non esegua nessuno sketch, per evitare che operazioni sulla EEPROM e/o sulla Flash possano portare alla perdita di dati (mancata scrittura sulla EEPROM, perdita dello sketch sulla Flash).

Beh, sì, visto che chiudo st'aggeggio nel cassonetto, mi accorgerò che la batteria è scarica solo quando il tx non darà più segni di vita muovendo la tapparella, a quel punto dovrei smontare e riprogrammare il chip invece che cambiare semplicemente la batteria. E comunque brown-out o clock il succo non cambia, sempre dei fuses si tratta.

Quote

Detto questo, ciò che lui ha fatto è ciò che abbiamo provato a fare, ossia usare un bootloader farlocco per programmare i fuse. Ma a me NON ha funzionato, quindi la tecnica usata può non funzionare. Se può non funzionare, non è una tecnica sicura perciò continuo a ribadire che l'unica tecnica sicura al momento è quella tramite terminale usando l'avrdude dell'IDE.

Ma io mi ero "rassegnato", poi BB e  MT riaprono il discorso, in fondo io cedo alla forza ma non mi arrendo mai !

Quote

Beh, i parametri di avrdude dipendono da cosa devi fargli fare. Dai un bel "man avrdude" e vedrai che sfilza di roba ti vien fuori... 
I fuse si programmano con lfuse, hfuse e efuse, rispettivamente per fuse basso, alto ed esteso.

Code: [Select]

-U lfuse:w:valore:m -U hfuse:w:valore:m -U efuse:w:valore:m

Nello specifico, il tipo dell'articolo ha prima letto lo stato del micro e successivamente ha programmato il fuse alto, che è quello responsabile (tra le altre cose) del brown-out.

Ah, la riga che hai messo NON va bene:  non ci vogliono spazi fra "-" ed il successivo carattere del comando. Quindi no "- c" ma "-c", ad esempio.

Chiaro, la riga l'ho copincollata dal link di cui si parlava, comunque ho capito perfettamente la sintassi.
Sti 3 giorni in missione mi hanno incasinato la vita, sto cercando di smaltire arretrato di lavoro per potermi ritagliare un po' di tempo per ricominciare con le prove, soprattutto ora devo fare i pcb per i sette nanetti, e sto imparando Eagle, poi devo riprendere le tecniche di preparazione dei c.s., mah!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 28, 2011, 10:35 am
OK. E' logico il discorso del brown-out per un dispositivo che sta lì non sai tu neanche per quanto.  :D

Come ho già detto, secondo me questa cosa rientra nello stesso caso del "condensatore sì" / "condensatore no" per usare l'Arduino come programmatore ISP. C'è una piccola probabilità che usando l'Arduino IDE l'operazione possa essere fatta ma non sappiamo le variabili che influiscono positivamente sull'operazione. Ad esempio, nessuno cita mai la versione di IDE usata: forse con quelle più vecchie si potrebbe avere qualche chance in più? Boh.

-U è il parametro che informa avrdude su quale memoria vuoi agire e quale operazione vuoi farci. Puoi scrivere sulla flash uno sketch direttamente da terminale (-U flash:w:nome_file:formato_file), la EEPROM (-U eeprom:....) o i fuse appunto.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 28, 2011, 12:27 pm

OK. E' logico il discorso del brown-out per un dispositivo che sta lì non sai tu neanche per quanto.  :D

Già, ieri ho appunto visto che robot-italy, mi pare, ha delle piccole bellissime celle solari che sarebbero in grado di erogare molta più corrente di quanto consuma l'attiny quando dorme, se aggiungo una di queste ad ogni nanetto, di sicuro esso mi sopravviverà 8)
Quote

Come ho già detto, secondo me questa cosa rientra nello stesso caso del "condensatore sì" / "condensatore no" per usare l'Arduino come programmatore ISP. C'è una piccola probabilità che usando l'Arduino IDE l'operazione possa essere fatta ma non sappiamo le variabili che influiscono positivamente sull'operazione. Ad esempio, nessuno cita mai la versione di IDE usata: forse con quelle più vecchie si potrebbe avere qualche chance in più? Boh.

No, proprio è fuori dalla mia idea la casualità di un funzionamento, peraltro ho un milione di altre cose da fare, altre tecniche da sperimentare, quindi davvero non ci dedico più tempo, a meno che non scoviate qualcosa di sicuramente funzionante.
Quote

-U è il parametro che informa avrdude su quale memoria vuoi agire e quale operazione vuoi farci. Puoi scrivere sulla flash uno sketch direttamente da terminale (-U flash:w:nome_file:formato_file), la EEPROM (-U eeprom:....) o i fuse appunto.

Mi sto segnando tutte queste info in un file, appena ci lavorerò su voglio scrivere ogni cosa possibile, ma stavolta te la sottopongo prima, ne so troppo poco.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 31, 2011, 03:49 pm
Signori dopo un breve assenza torno alla carica.....
sto tentando di fare andare un servo comando sul tiny usando la libreria SoftwareServo come da suggerimento di BrainBooster ma.....Niente....
non va.....
questo il codice....
Code: [Select]

#include <SoftwareServo.h>

SoftwareServo myservo;  // create servo object to control a servo


int val;    // variable to read the value from the analog pin

void setup()
{
  myservo.attach(0);  // attaches the servo on pin 2 to the servo object
  pinMode(1, OUTPUT); 
}

void loop()
{
  digitalWrite(1,HIGH);
  val = analogRead(2);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there

  SoftwareServo::refresh();
}

se avete voglia e tempo di provare.. io non so proprio dove sbattere la testa ora sto provando a capire/modificare la libreria per vedere cosa succede.....
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on May 31, 2011, 04:19 pm
con quale clock stai facendo girare l'attiny?
la libreria ricava la base dei tempi dal clock di arduino (16Mhz) quindi devi modificarla per il clock che usi con il piccolo che :)
edit: se non ricordo male però c'era un problema su  TCNT0 che non iniziava a contare da solo
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 31, 2011, 05:20 pm

con quale clock stai facendo girare l'attiny?
la libreria ricava la base dei tempi dal clock di arduino (16Mhz) quindi devi modificarla per il clock che usi con il piccolo che :)
edit: se non ricordo male però c'era un problema su  TCNT0 che non iniziava a contare da solo

1Mhz..... di fabbrica....
ora guardo la libreria....
1°modifica forse stupida.... tutti i sedici della libreria son diventati 1 :) risultato: errori ovunque.. torno sui miei passi...
2°modifica... ho cambiato questa riga della libreria da così
Code: [Select]
pulse0 = (min16*16L*clockCyclesPerMicrosecond() + (max16-min16)*(16L*clockCyclesPerMicrosecond())*angle/180L)/64L;
a così.....
Code: [Select]
pulse0 = (min16*1L*clockCyclesPerMicrosecond() + (max16-min16)*(1L*clockCyclesPerMicrosecond())*angle/180L)/64L;
brancolo nel buio :smiley-roll-blue:
il codice che inserisco nel tiny ora è questo....
Code: [Select]

#include <SoftwareServo.h>

SoftwareServo servo;

void setup()
{ pinMode(1,OUTPUT);
 servo.attach(0);}

void loop()
{
 digitalWrite(1,HIGH);           //accendo un led che mi dice se il programma gira....
 servo.write(90);                  // sets the servo position according to the scaled value
 delay(15);
 servo.write(180);                  // sets the servo position according to the scaled value
 delay(15);
 servo.write(0);                  // sets the servo position according to the scaled value
 delay(15);
}
 


e se usassi il PWM invece che i PPM cè... il servo va a scattoni ed è più instabile però così si muove....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 31, 2011, 08:52 pm
Dici che mettendo 1 al posto di 16 nelle divisioni ti vengono errori dappertutto. Che genere di errori?
Hai provato anche a mettere il micro a 8 MHz ed a modificare per questa frequenza?
Forse 1 MHz è troppo poco per poter gestire le temporizzazioni richieste dalla libreria?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 31, 2011, 10:24 pm

Dici che mettendo 1 al posto di 16 nelle divisioni ti vengono errori dappertutto. Che genere di errori?
Hai provato anche a mettere il micro a 8 MHz ed a modificare per questa frequenza?
Forse 1 MHz è troppo poco per poter gestire le temporizzazioni richieste dalla libreria?

1° come faccio a metterlo a 8Mhz ???
2° lasciando la libreria così come la si trova in intenet carica senza problemi ma non va
3° ecco l errore :(
Code: [Select]

H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp:10: error: variable or field 'setMinimumPulse' declared void
H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp:10: error: 'uint1_t' was not declared in this scope
H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp:15: error: variable or field 'setMaximumPulse' declared void
H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp:15: error: 'uint1_t' was not declared in this scope
H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp: In member function 'void SoftwareServo::write(int)':
H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp:51: error: 'min1' was not declared in this scope
H:\arduino-0022\libraries\SoftwareServoAttiny85\SoftwareServo.cpp:51: error: 'max1' was not declared in this scope
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 31, 2011, 10:31 pm
Per programmare i fuse devi usare avrdude. Ci sono le indicazioni in cima a questa pagina, in alcuni miei post. Devi però avere dimestichezza col terminale.

Tornando agli errore, non devi cambiare uint16_t in uint1_t... Questi sono tipi di dati, non i valori su cui sono fatti ci calcoli. Devi cambiare ad esempio i calcoli interni:
Da max16 = t/16 a max16 = t.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 31, 2011, 10:35 pm
Peccato che sono uno di quegli utenti a finestre che sanno programmare in sh ma non lo fanno....... :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:
e con questi come mi comporto ?
Originale:
pulse0 = (min16*16L*clockCyclesPerMicrosecond() + (max16-min16)*(16L*clockCyclesPerMicrosecond())*angle/180L)/64L;
modificata:
pulse0 = (min16*1L*clockCyclesPerMicrosecond() + (max16-min16)*(1L*clockCyclesPerMicrosecond())*angle/180L)/64L;
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 31, 2011, 10:53 pm
Beh considerando che a*1 corrisponde ad a puoi benissimo mettere
pulse0 = (min16*clockCyclesPerMicrosecond() + (max16-min16)*(clockCyclesPerMicrosecond())*angle/180L)/64L;

L'unico dubbio ce l'ho su quel 64 finale. Non so a cosa serva. Se non va prova a dividerlo per 16, mettendo quindi 4.

Se così non va prova a mettere il micro a 8 MHz adattando ovviamente i timing (/16L diventa /8L).
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 31, 2011, 10:57 pm
Niente da fare domani se ho tempo mi costruisco un programmatore parrallelo perche con quello che ho non so come fare a modificare i fuses......
avete uno schema di cui siete sicuri ? :)
avrei trovato questi.....
http://elm-chan.org/works/avrx/avrxp.png
http://elm-chan.org/works/avrx/avrxp8.png
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 31, 2011, 11:08 pm
Scusa ma non ti serve un programmatore esterno. Puoi usare l'Arduino da terminale. Rileggiti il post di menniti del 27/05-22:38 e quello mio successivo.
Per i fuse calcolali col Fuse Calc (trovi facilmente il link).
Mi pare (a mente) che devi mettere il fuse basso a 0xE2.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on May 31, 2011, 11:13 pm
^_^
oops non l'avevo notato/ricordato :)
grazie leo di rispondere... e anche a tutti gli altri....
mi sento tanto imbranato :):)
ha ha ora si che ho fatto un casino ma forse so come sistemarlo ho cambiato il file bards modificando i 1000000L in 800000L poi burn bootloader e ora con il blink va lentissimo.......
ora l'ho rimesso come prima..... e va ancora più lento.... mah ....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 31, 2011, 11:32 pm
Rileggiti con calma il mio tutorial sugli Attiny85 (http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85).
Setta il clock con avrdude da terminale rimettendo il valore che vuoi e poi reimpostalo anche nel file boards.txt
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jun 01, 2011, 04:56 pm
Sto provando con avrdude ho inserito questo comando (da riga di comando in win)
Code: [Select]
avrdude -pATtiny85 -c stk500v1 -b -P 19200 COM10 -v
però mi da un errore...

Code: [Select]
avrdude: invalid baud rate specified '-P'
dove sbaglio?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 01, 2011, 05:07 pm
Sbagli nel fatto che hai scritto "-b -P 19200"
devi scrivere "-b 19200" e poi "-P COM10" con nome_porta impostata sulla porta da usare (/dev/ttyACM0 o COM o quello che è, a seconda di Linux o Win).

Inoltre non specifichi il file di configurazione (opzione "-C"). E' importante perché ail file di configurazione serve per istruire avrdude su tante info necessarie a dialogare correttamente con i micro. Quindi vai nella cartella in cui hai avrdude.exe (avevi Win, giusto?) e dai il comando corretto specificando anche il file conf.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on Jun 01, 2011, 05:11 pm
Prova così:
"F:\arduino-0022\hardware\tools\avr\bin\avrdude.exe" -p t85 -c avrisp -P \\.\COM10 -b 19200 -U lfuse:w:0xE2:m  -C "F:\arduino-0022\hardware\tools\avr\etc\avrdude.conf"
questa è la riga generata da Dude_up per quello che vuoi fare tu, chiaramente devi adattare i percorsi di avrdude.exe e avrdude.conf ai tuoi .
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jun 01, 2011, 05:12 pm
scusa non avevo ancora visto la tua risposta :( allora ho fatto così
1°passaggio sempre da terminale....
Code: [Select]
avrdude -p ATtiny85 -c stk500v1 -b 19200 -P COM10 -v
2°passaggio
Code: [Select]
-p ATtiny85 -c stk500v1 -b 19200 -P COM10 -U hfuse:w:0xDE:m
Entrami i passi hanno dato esito positivo......
ora ? :)
come faccio a sapere a che frequanza lavora il micro ?
Grazie BB:)
Code: [Select]
"H:\arduino-0022\hardware\tools\avr\bin\avrdude.exe" -p t85 -c avrisp -P \\.\COM10 -b 19200 -U lfuse:w:0xE2:m  -C "H:\arduino-0022\hardware\tools\avr\etc\avrdude.conf"
Ora il led va dinuovo giusto :) domanda sono a 1Mhz o 8Mhz? :)
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on Jun 01, 2011, 05:16 pm
a 8MHz ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jun 01, 2011, 05:20 pm

a 8MHz ;)

siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii:) evvei :):):):):) ora ci do di softwareservo :)
grazie leo e grazie BB :)
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 10, 2011, 09:30 pm
Ragazzi, è nato il primo dei mie sette nanetti: Eolo  XD XD XD
Vi posto la foto, sono emozionato e commosso =(
Eolo! a dormire che è tardi, ma prima saluta zio Leo   :D
Grazie, col tuo aiuto e quello di altri sono riuscito a risolvere nel migliore dei modi il problema dei sensori del mio antifurto; anche se ora devo provarlo "sul campo".

Resta da risolvere la questione dei fuses, ma ora sono incasinato con altre cose, appena posso provo AVRDUDE e DUDE_UP di BB (a proposito BB, ti sei rifatto? ho visto un nuovo Avatar... :smiley-yell:)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jun 10, 2011, 09:33 pm
Eolo.....
Ma che razza di mome è ????  :smiley-eek:
almeno scricciolo :):):)XDXD
bello :)
posta i master magari viene buono a qualcuno :):)
Ciao menniti
R
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 10, 2011, 09:37 pm
Eolo, il dio del venti per un antifurto?
Magari potevi chiamarlo Furtolo, no?  XD XD XD XD

Cmq è il chippettino che ti deve controllare la tapparella, giusto? Carino, molto carino. E compatto. Ottimo lavoro.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 10, 2011, 09:37 pm

Eolo.....
Ma che razza di mome è ????  :smiley-eek:
almeno scricciolo :):):)XDXD
bello :)
posta i master magari viene buono a qualcuno :):)
Ciao menniti
R

Ma come, uno dei sette nani come lo dovrei chiamare?  :smiley-eek: :smiley-eek:
Ah, ho capito, vabbé, il prossimo (questione di un paio di giorni) lo chiamo Rattolo, ok?  :D :D
Se a qualcuno interessa gli mando l'intero progetto in MP e lo sketch, ma devo almeno spiegare cosa fa... 8)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jun 10, 2011, 09:46 pm
Sorcetto o sorcettolo :):) XDXD
dai stavo scherzando :) hai fatto un bel lavoro e il tutto e ben compatto....
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 10, 2011, 09:48 pm

Eolo, il dio del venti per un antifurto?
Magari potevi chiamarlo Furtolo, no?  XD XD XD XD

Ah, ma allora ditelo che non avete mai visto Biancaneve e i sette nani, ma dove siete vissuti nell'ultimo paio di secoli. Ok, aggiudicato, tu te lo meriti proprio, il 3° lo chiamo Leolo, magari quando li chiamo poi si incasinano, vabbé, tu meriti questo ed altro  XD
Quote

Cmq è il chippettino che ti deve controllare la tapparella, giusto? Carino, molto carino. E compatto. Ottimo lavoro.

Giusto! grazie, finalmente sono riuscito a tirare fuori il pcb dallo schema, intanto mi sono arrivati vasca ed acido ed oggi ho fatto l'incisione, che emozione, sembrava un cesareo.... :smiley-sweat:
Naturalmente, come ricorderai, il bello è che non consuma praticamente nulla.
Più che altro ora posso finalmente realizzare cose definitive, p.es. l'HVFuse merita un circuito come si deve, visto che mi ha recuperato un pugno di ATmega dati per spacciati  $)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 10, 2011, 09:50 pm
Leolo? Per carità, è inudibile  :smiley-sweat:

Cmq volevo anch'io cimentarni con l'incisione casalinga... voglio delle dritte, apri un topic separato e dimmi per favore tutto quello che serve e come procedere, dai... su, fai il bravo..  :P
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jun 10, 2011, 09:52 pm

Cmq volevo anch'io cimentarni con l'incisione casalinga... voglio delle dritte, apri un topic separato e dimmi per favore tutto quello che serve e come procedere, dai... su, fai il bravo..  :P

Si anche a me serve :) ho fatto più volte delle incisioni con il bromografo però durante la "vera incisione" con il percloruro  il master spariva....
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 10, 2011, 09:57 pm

Sorcetto o sorcettolo :):) XDXD
dai stavo scherzando :) hai fatto un bel lavoro e il tutto e ben compatto....

Anch'io, grazie, effettivamente è venuto bene, potevo farlo anche più corto, ma la lunghezza l'ho calcolata in modo che mi tiene la batteria pressata nel contenitorino.

Leolo? Per carità, è inudibile  :smiley-sweat:

Cmq volevo anch'io cimentarni con l'incisione casalinga... voglio delle dritte, apri un topic separato e dimmi per favore tutto quello che serve e come procedere, dai... su, fai il bravo..  :P

obbedisco  ;)
datemi solo il tempo di rientrare a casa e sbafare qualcosa che è da oggi che mangio polvere di bachelite e bevo acido  :smiley-eek-blue:
Più tardi apro il Topic e metto le prime dritte, poi naturalmente quando inizierete mi metto a vostra completa disposizione.  XD
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on Jun 10, 2011, 10:00 pm
ehmmm, io ho visto Biancaneve sotto i nani, fa lo stesso?  :D

Solo che ricordo tutto tranne il nome dei nani.

Io direi che furtolo è geniale, anche perchè somiglia ad al nome di uno yogurt storpiato.
La versione smd la chiamaiamo nannolo.

Ciao.

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 10, 2011, 10:34 pm
@Mauro:
quello è un altro film....  :smiley-yell:

Perché non Nynnolo con la "y" che riprende il nome "Attiny"?  :D
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on Jun 11, 2011, 07:32 am
@menniti....Un ritocchino ongi tanto per manetenermi giovane :smiley-yell:
complimeni per la realizzazione!
ma i cavi di collegamento al nano quanto saranno lunghi?
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 11, 2011, 07:49 am

@menniti....Un ritocchino ongi tanto per manetenermi giovane :smiley-yell:
complimeni per la realizzazione!
ma i cavi di collegamento al nano quanto saranno lunghi?


Perché, da quando in qua i nani hanno problemi di lunghezza?  :smiley-yell:
tanto ormai MT ha fatto degenerare la discussione  :smiley-red:
Scherzi a parte, ma Vi prego di non continuare a dare libere interpretazioni perché purtroppo le informazioni si prestano  ]:D, il sensore è nella parte alta della tapparella e il tx wireless all'interno sul telaio dell'anta balcone; il collegamento tra i due è ovviamente filare ed è di circa 40-45cm ( :smiley-yell:); il nanetto si frappone tra i due (tipo sandwich  :smiley-yell:) quindi circa 20cm tra lui e il sensore e tra lui e il tx. La funzione è quella di bloccare i falsi impulsi dovuti ad un improvviso movimento della tapparelle: il vento, la corda che era rimasta semi-bloccata sullo scorrimento e si sgancia da sola, la tapparella stessa che trovando un impedimento si ferma e poi col peso si libera; tutti questi eventi possono provocare movimenti involontari da 0,5 a 2cm, se il sensore era in una posizione prossima allo scatto dello switch ecco il falso allarme in piena notte.
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on Jun 11, 2011, 08:54 am
quindi lo hai già collaudato?
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 11, 2011, 08:59 am
No, ho fatto prove a banco, con un sensore ed un tx; la logica che ho adottato dovrebbe risolvere ogni cosa, ora devo metterlo in parallelo ad uno dei sensori montati e fare delle simulazioni, ormai ho scoperto come provocare il falso allarme, tutt'al più dovrò aumentare il numero di impulsi da ignorare.
Title: Re: Giocando con l'Attiny85
Post by: Maurotec on Jun 11, 2011, 01:32 pm
Quote
No, ho fatto prove a banco, con un sensore ed un tx; la logica che ho adottato dovrebbe risolvere ogni cosa, ora devo metterlo in parallelo ad uno dei sensori montati e fare delle simulazioni, ormai ho scoperto come provocare il falso allarme, tutt'al più dovrò aumentare il numero di impulsi da ignorare.


Io spero che tu abbia controllato le impostazione della centrale di allarme, magari nel setup c'è la possibilità di impostare un minimo di insensibilità. Lo dico perchè da mio zio avevo montato un centralina grezza, che dava lo stesso problema poi mio cugino dopo anni l'ha sostituita con una moderna è quel problema non si presenta più, domani vedo mio cugino e chiedo se ha un settagio per evitare questo problema tanto per sapere.

PS: Per biancaneve non ho proprio resistito, sulla configurazione dei nani a sandwith non mi esprimo, ma rido da solo come un pazzo :D.

Ciao.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 11, 2011, 02:45 pm
«andiam, andiam, andiam a tro....tterellar, fiu fiu fiu fiuuu» XD XD XD :P

La centrale l'ho comprata e me la sono installata e configurata da solo, per fare l'impianto ho impiegato una settimana (considerando che ovviamente lavoro...); purtroppo questa, che non è per niente male comunque, non prevede la gestione del conteggio degli impulsi (questo è ciò che ho fatto io, a farla breve), è tutto affidato ai sensori; ma mentre quelli a infrarossi hanno un jumper ed un trimmer per settare sensibilità e tempo di intervento, i sensori rotanti per le tapparelle sono puramente meccanici. Mi scocciava spendere 30 euro, 15-18 nella migliore ipotesi (parlo di cose funzionanti, però!) per ognuno dei sette sensori, ho inizialmente fatto un contaimpulsi con due IC cmos e qualche componente discreto, ma mi sono scontrato con un consumo impensabile, che poi era lo stesso problema di quelli commerciali, che infatti andavano alimentati esternamente. Con i nanetti e il vostro aiuto (senza dimenticare Astrobeed per la parte dello sleep) sono arrivato al circuitino che avete visto, che consuma a riposo da meno di 100nA (a giorni Vi darò il valore preciso  ;)) ad un massimo di 1,8µA, per arrivare (due volte al giorno per meno di un minuto per volta) a 2-3mA in attività.
Ho fatto un calcolo puramente teorico: la batteria AA/2 (3,6 Volt 1200Ah) morirà per auroscarica molto prima che si scarichi a causa del nanetto; cioè dovrò cambiarla fra 3-4 anni invece che fra 7-8. Scherzando (ma mica tanto...) dicevo che stavo pensando di usare la rotazione del sensore per fare una micro-dinamo o di mettere una piccola cella solare, e praticamente la batteria sarebbe stata lì per sempre....
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jul 24, 2011, 02:29 pm
Mi appendo a questo thread per postare gli schemi e le foto della mia ATTiny85 program/test shield nel caso qualcuno volesse realizzarla. Ho preso spunto da qualche utente sul forum che l' aveva già realizzata per la sola programmazione, ci ho aggiunto uno switch che quando è aperto scollega i pin 1-5-6-7 e condensatore di reset da Arduino e tramite l' apposito connettore permette di testare il funzionamento del micro.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Jul 24, 2011, 03:41 pm
Io ne ho una in fase di costruzione però per più ATtiny ;P
presto i risultati :P:P
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Jul 31, 2011, 11:12 am
visto che qua si parla di smanettamenti di attinyx5, volevo chiedere se qualcuno usa analogRead senza problemi.
Io sto usando un attiny45 a 1khz programmato con arduino uno.
Ho riscontrato dei comportamenti anomali e alla fine ho individuato il problema nella lettura di un potenziometro.
Per debug ho quindi fatto la seguente cosa:

loop di attiny:
Code: [Select]

  selection = analogRead(configPin);
  analogWrite(0,selection);


loop di arduinouno:
Code: [Select]

  delay(500);
  Serial.print("valore: ");
  Serial.print(analogRead(0)); 


così da poter vedere sulla seriale cosa legge.
Ho quindi collegato il pin0 su attiny45 con il pin analogico0 di arduino.
Ma i risultati sembrano proprio sballati, passa da 600 a 0 senza intermedi e poi arriva fino a 140. non è lineare da un valore ad un altro.

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jul 31, 2011, 11:51 am
L'analogRead restituisce letture da 0 a 255 mentre analogWrite accetta valori da 0 a 1023. Già qui non andrebbe bene perché non sfrutti tutta la scala di analogWrite.
Potresti mettere:
Code: [Select]
analogWrite(0, (analogRead(configPin)*4)

Detto questo,sarebbe carino vedere il circuito ed il codice completo, per capire se hai impostato male qualcosa.
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Jul 31, 2011, 01:02 pm
Ho semplificato ulteriormente le cose testandolo con un led, ma il problema resta.

il codice è il seguente:
Code: [Select]

int configPin = 0;
int selection = 0;

void setup() {
}

void loop()
{
  selection = analogRead(configPin); // leggo dal pin analogico 0 - piedino 1
  analogWrite(0,map(selection,0, 255, 0, 1023)); // scrivo sul pin pwm 0 - piedino 5
}


ed il circuito questo:
(http://lorenzoboasso.it/uploads/arduino/tinyAnalog.jpg)

per il primo quarto di rotazione il led è spento, poi continuando a ruotare passa in continuazione da poca a tanta luce per diverse volte
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Jul 31, 2011, 01:32 pm
ho un dubbione, quello che hai detto:


L'analogRead restituisce letture da 0 a 255 mentre analogWrite accetta valori da 0 a 1023.


non si traduce con?
Code: [Select]
analogWrite(0,map(selection,0, 255, 0, 1023));

perchè invertendo i valori mi pare si comporti correttamente:
Code: [Select]
analogWrite(0,map(selection,0, 1023, 0, 255));

Ho sbagliato io a "tradurre" la tua frase o ti sei sbagliato tu?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jul 31, 2011, 03:44 pm
Ho sbagliato io  ^_^
Read dà da 0 a 1023. Ero ante-pranzo quindi il calo di zuccheri mi ha fatto farneticare  XD
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Jul 31, 2011, 03:58 pm

Ho sbagliato io  ^_^
Read dà da 0 a 1023. Ero ante-pranzo quindi il calo di zuccheri mi ha fatto farneticare  XD


ok, no problem. era giusto per essere sicuri che non fosse l'attiny impazzito.
però forse ho capito la causa di tutti i miei problemi: il pin 1 !!!
tutto quello che collego a quel pin mi pare che dia problemi (digitale5 -analogico0) è possibile che sia perchè è usato anche per il reset?
questo è lo schema che uso di riferimento per i piedini
(http://www.gioblu.com/images/stories/attiny45_85pinout.png)
devo per caso tirare in ballo i fuse?


EDIT:
ok, temo proprio che devo toccare i fuse.
ho visto da qua (http://www.engbedded.com/fusecalc) l'opzione che disabilita il reset e permette di usarlo come porta.
L'operazione mi spaventa un po', visto che non ho mai fatto nulla del genere (ho letto solo nel forum che ci smanettavate). e poi se disabilito il reset, potrò ancora programmarlo con arduino ISP ?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jul 31, 2011, 04:17 pm
Ti consiglio di NON riprogrammare l'Attiny per disabilitare il fuse del RST altrimenti poi non puoi più riprogrammare il micro (ovviamente finché non riprogrammi quel fuse e riattivi il RST).
Cambia pin, usa ad esempio il piedino 2, ADC3, ossia analogico 3.
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Jul 31, 2011, 04:23 pm

Ti consiglio di NON riprogrammare l'Attiny per disabilitare il fuse del RST altrimenti poi non puoi più riprogrammare il micro (ovviamente finché non riprogrammi quel fuse e riattivi il RST).
Cambia pin, usa ad esempio il piedino 2, ADC3, ossia analogico 3.


si appunto, ci avevo pensato anche io (infatti avevo fatto un edit). putroppo già usavo tutte le altre porte. dovrò rinunciare ad un led che usavo per debug.
grazie. ciao
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jul 31, 2011, 04:36 pm
Usa la logica binaria per il debug, così sto facendo anch'io con la mia stazione meteo.
Considera che con 2 led puoi fornire 4 informazioni perché hai 4 combinazioni:
xx
xO
Ox
OO
(x=led spento - O=led acceso)

Con 3 led 8 informazioni
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jul 31, 2011, 10:08 pm

Usa la logica binaria per il debug, così sto facendo anch'io con la mia stazione meteo.
Considera che con 2 led puoi fornire 4 informazioni perché hai 4 combinazioni:
xx
xO
Ox
OO
(x=led spento - O=led acceso)

Con 3 led 8 informazioni

Leo, tu stai usando un 595 per gestire i led, vero? Io stavo pensando di recuperare un pin mettendone due in antiparallelo su un solo pin ma secondo ciò che dice UWE q1uando sono entrambi "spenti" in relatà sono entrambi un po' accesi, a meno di usare un non so cosa che non ho approfondito.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jul 31, 2011, 10:18 pm
Sì, anch'io non ho approfondito.
Lo shift register serve se devi gestire più di 3 led dato che il minimo n° di pin per comandare un 595 è proprio 3.
Altrimenti fai con la logica binaria e con num_led led puoi mandare 2^num_led messaggi.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 05, 2011, 06:16 pm
domanda a tutti i possessori di ATtiny....
perchè l'ADC di queste MCU che è a 10 bit ci restituisce un numero a 8 Bit ??? è un problema di integrazione con L'ide o cosa ?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 05, 2011, 06:21 pm
Codice e schema, per favore  ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 05, 2011, 06:24 pm
... -_-"
questa l'hai fatta apposta di la verità..... :)
sto sempliemente leggendo da un ADC un partitore di tensione ma mi restituisce numeri compresi tra 0 e 254 invece che da 0 a 1023 come nell'ATmega anche se entrambi hanno un ADC a 10 bit
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 05, 2011, 06:26 pm
No, davvero. Posta il codice perché dobbiamo andare per esclusione. Per capire se è un errore tuo o un problema del core Tiny
Non me ne volere, ma alle volte si fanno le ca**ate più tremende... se ti dico contro cosa ho sbattuto la testa io, ieri, mi prendi per deficiente  :smiley-sweat:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 05, 2011, 06:45 pm
Dal file core_adc.h contenuto nel core Tiny:

Code: [Select]
#if defined( __AVR_ATtinyX5__ )
[.....]
__attribute__((always_inline)) static inline uint16_t ADC_GetDataRegister( void )
{
  return( ADC );
[.....]


Quindi il core restituisce un uint16...
ma 'sto codice?  ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 05, 2011, 06:51 pm
eh.. scusa non avevo visto la risposta ;)
l'avevo già notato controllando i servi che facevano solo 1/4 del tragitto....

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

SoftwareServo servo;
int potpin = 0; 
int val;

void setup()
{
 
  servo.attach(0);

}

void loop()
{
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  servo.write(val);                  // sets the servo position according to the scaled value
  delay(15);
  SoftwareServo::refresh();
}


l'avevo già visto tramite seriale che leggeva solo a 255 ora il mio problema è questo... sto facendo un circuitino che mi controlla un lampione ed il codice è questo solo che non fà quello che dovrebbe....
mi pare sufficentemente commentato...
Code: [Select]

/*Regolatore di carica con ATtiny 85 5-09-11*/
//Assegnazione pin
int cn_batt = A2;      //Controllo della batteria tramite partitore di tensione
int lum = A3;          //sensore di luminosità realizzato con una CDS ed una res da 10K
int mos = 2;           //Pin che alimenta il mosfet che cortocircuita il pannello quando la batt è carica
int out = 1;           //Pin che alimenta il mos che funge da interruttore con il carico esterno (Lampade)
int led = 0;           //pin che alimenta un led che segnala quando la batteria è scarica
int x = 510;           //variabile contenente il valore da confrontare con la batteria(se è troppo carica)
int y = 520;           //variabile contente il valore da confrontare con il partitore batt (scarica)
int z = 420;           //Variabile per l'accensione della lampada


void setup(){
  pinMode(mos,OUTPUT);
  pinMode(out,OUTPUT);
  pinMode(led,OUTPUT);
  }

 
void loop(){
  int batt,luce;    //varibili che contengono il valore letto dall'ADC sul partitore di tensione (batteria e CDS cell)
  batt = analogRead(cn_batt);
  if(batt  > x){                     //Se la batteria è troppo carica cortocircuito il pannello
    digitalWrite(mos,HIGH);         
    if(batt < y){                    //Se la batteria è troppo scarica accendo il led di segnalazione e porto a zero le uscite
      digitalWrite(led,HIGH);
      }
      else{                          //Se la batteria non è troppo scarica allora 
      luce = analogRead(lum);
      if(luce < z){                  //controlla lo stato della luce ambientale ed eventualmente accende il led se no ritorna alle condizioni di prima....
      digitalWrite(out,HIGH);
       }
     }
   }
}
Title: Re: Giocando con l'Attiny85
Post by: brainbooster on Aug 05, 2011, 07:00 pm
e cosa fà invece di quello che dovrebbe?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 05, 2011, 07:06 pm
si blocca credo.... non fa nulla....
sul 2009 che lo avevo   provato su breadboard andava tutto a meraviglia.... e le tensioni sul micro ci sono senza alcun problema perchè le vedo variare con il tester... poi rifaccio tutto da capo e vediamo....
ma secondo me il problema è proprio la lettura dell' ADC....
le soglie che ho impostato da SW sono superiori alle massime misurabili....
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 06, 2011, 11:49 am
Non so come ma ho risolto... nel senso che ora va ma non ho fatto nulla.... mi sorge un dubbio che è già stato appurato ma voglio essere sicuro...
visto che il tiny sarà sempre in funzione... quando i timer andranno in over flow cosa succede ?
si resetta e riparte il programma o cosa ?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 06, 2011, 12:59 pm
Intendi il problema dei Tiny "sordi"? Che li programmi svariate volte ed ogni volta il programma funziona in modo differente?  ]:D

PS:
non ho capito la domanda riferita al timer. Tu non usi il timer, mi pare. E' un problema che tocca solo le funzioni temporali dato che millis() è agganciato al timer e riparte da 0 dopo 49 giorni.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 06, 2011, 01:32 pm
non l' ho riprogrammato.. di punto in bianco ha iniziato a funzionare.....

no non uso il timer.. quindi lui continuerà sempre fichè avrà corrente giusto ?
ottimo
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 06, 2011, 02:49 pm

non l' ho riprogrammato.. di punto in bianco ha iniziato a funzionare.....

A volte lo fanno.. .sono "bambiny"  XD

Quote

no non uso il timer.. quindi lui continuerà sempre fichè avrà corrente giusto ?

Esatto.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 07:14 pm
tra poco imparo il turco x riempire di parole in turco il tiny....

aiutami......
le corrispondenze dei pin.......
codice                     n°pin sul micro
0                             5
1                             6
2                             7
3(ADC3)                    2
4(ADC2)                    3
5(ADC0)                    1

Son giusti ?
perchè assegno un pin e me ne risponde un altro O.o =(       
al posto dell'1 mi risponde 0.......
non so più che fare prima ho brikkato 3 tiny allora mi son messo li a risistemarli uno ad uno ed ora sta roba qui... mi sto innervosendo....

Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 08:02 pm
(http://www.gioblu.com/images/users/gbm/attiny45_85pinout.png)

edit: avevo fatto una correzione errata.

5(ADC0)                    1  (attenzione devi disattivare il reset tramite fuse se vuoi usarlo come i\o)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 08:12 pm
Nella dichiarazione dei pin , gli ingressi analogici 2 e 3
li dichiari così:
int xx = A2/A3;
oppure :
int xx= 3/4;
perchè se lo faccio come nel primo modo mi da problemi di compilazione....
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 08:22 pm

Nella dichiarazione dei pin , gli ingressi analogici 2 e 3
li dichiari così:
int xx = A2/A3;
oppure :
int xx= 3/4;
perchè se lo faccio come nel primo modo mi da problemi di compilazione....


Senza le "A" ma con il numero di pin analogico (quindi 3 e 2), anche io avevo trovato degli esempi con quella dicitura(A2), ma non mi funzionava.

Io sono impazzito con l'attiny45 perché mi collegavo all'uscita reset, pensando di poterla usare come normale I\O, per poi scoprire che era necessario disattivare il reset con i fuse.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 08:34 pm
A me continua a non andare... il programma gira perfettamente sul 328 ma sul tiny non cè verso....
mi rompe usare un ATmega perchè questi non hanno voglia di andare....  domani ordino i tiny 2113 e 84 e vediamo con quelli che succede....
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 08:36 pm

A me continua a non andare... il programma gira perfettamente sul 328 ma sul tiny non cè verso....
mi rompe usare un ATmega perchè questi non hanno voglia di andare....  domani ordino i tiny 2113 e 84 e vediamo con quelli che succede....

m a cosa non ti va di preciso?
anche io mi ci sono scornato di recente per fare l'intervallometro. ma il problema più grande era che mi autoresettavo il tiny perchè usavo il pin 0.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 08:46 pm
Allora....
è un semplice regolatore di carica che mi misura con l'ADC la tensione della batteria e con gli altri pin controlla il resto della circuiteria...
il fatto è che se io indico un pin lui ne usa un altro.... ora provo a sostituire tutti i nomi con numeri... magari cambia qualcosa.....
Edit
ora mi mette HIGH le uscite LOW e viceversa :P
questo s'è fumato qualcosa di pesante
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 08:50 pm
ma se usi gli analogici con l'analogRead devi usare i numeri corrispondenti a quelli analogici (2/3).
non puoi postare il codice?
usi anche altri pin per altre cose?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 09:08 pm
niente non vuole saperne.... da oggi alle tre che provo e niente....
ora mi son accorto che se oscuro la fotoresistenza si accende il led Pin 0 ho cambiato il pin nel programma per far si che ne accenda un altro e accende sempre lo stesso....cè qualcosa di più profondo che non funziona....
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 09:23 pm
anche a me ad un certo punto ha iniziato con il messaggio "Yikes!" e non sono più riuscito a programmarlo.. e me lo sono tenuto com'era, non volevo sbattimenti..
ora vedo se trovo qualcosa del code..
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 09:27 pm
a me ha dato quel errore... bene l'ho subito servito erasando tutto con AvrDude :P
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 09:29 pm

a me ha dato quel errore... bene l'ho subito servito erasando tutto con AvrDude :P

come si fa?

comunque la parte:
Code: [Select]
luce = analogRead(4);
non va bene devi mettere 3 (avendo già usato la porta 2
le porte analogiche sono la 3 e la 2 che corrispondono ai piedini 2 e 3
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 09:35 pm
Code: [Select]

scusa non avevo ancora visto la tua risposta  allora ho fatto così
1°passaggio sempre da terminale....



avrdude -p ATtiny85 -c stk500v1 -b 19200 -P COM9 -v


2°passaggio

Code: [Select]


avrdude -p ATtiny85 -c stk500v1 -b 19200 -P COM10 -U hfuse:w:0xDE:m



Code: [Select]


"J:\arduino-0022\hardware\tools\avr\bin\avrdude.exe" -p t85 -c avrisp -P \\.\COM9 -b 19200 -U lfuse:w:0xE2:m  -C "J:\arduino-0022\hardware\tools\avr\etc\avrdude.conf"


An in quel modo si porta il micro a 0 aggiungendo nel secondo passaggio una lettera che è scritta nel riquadro del prompt e lo si porta ad 8Mhz.....
logicamente per lanciare i comandi devi aprire il tuo prompt e le directory saranno leggermente diverse....
Ho provato a cambiare.. non cambia assolutamente nulla....
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 09:57 pm
non puoi darmi maggiori dettagli sul comportamento anomalo?
c'è anche lo schema elettrico con le varie robe attaccate ai pin?
Perchè non dichiari i pin con delle variabili ?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 10:05 pm
ho tolto la dichiarazione classica per vedere se andava... lo schema con questa maledetta connessione non riesco a metterlo comunque con i 3 pin digitali di out pilota due mosfet IRF540 con uno un led e gli ADC sono collegati uno ad un partitore resistivo fatto con una fotoresistenza e con una resistenza da 10K e l'altro ad un partitore di tensione che legge la batteria dividendo la tensione x4
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 08, 2011, 10:24 pm
Buoni, state facendo un po' di confusione. Intanto vi ricordo che tutte le mie più recenti prove con gli Attiny si basano sul Tiny Core per Arduino prelevabile da qui:
http://code.google.com/p/arduino-tiny/downloads/list

Scaricate tutti e 3 i file: il primo è il core, e vi SERVE  ;); gli altri vi torneranno utili per manipolare gli interrupt.
Ad IDE chiusa, scompattate il primo (il core) in /arduino-00xx/hardware. Alla fine del lavoro quella cartella dovrebbe contenere 3 sottocartelle: arduino, tiny e tools. Gli altri 2 archivi scompattateli nella cartella /libraries della vostra cartella degli sketch (cambia da SO a SO: in Linux è in /home/utente/sketchbook, mentre in Windows è in Documenti/Arduino).
Detto questo la corrispondenza dei piedini con i pin logici è la seguente:
PIEDINO -> PIN
1 -> D5/A0
2 -> D3/A3
3 -> D4/A2
4 -> GND
5 -> D0/PWM0
6 -> D1/PWM1
7 -> D2/A1/INT0
8 -> Vcc

Con il Tiny core se compilate con A0 non vi dà errore.

Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 10:50 pm
Avevo già provato....
non da errore è vero però non me lo uppa nel micro.... e mi si riempie di errori....
Code: [Select]

java.lang.NullPointerException
at processing.app.debug.AvrdudeUploader.getProgrammerCommands(AvrdudeUploader.java:106)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:68)
at processing.app.Sketch.upload(Sketch.java:1603)
at processing.app.Sketch.exportApplet(Sketch.java:1568)
at processing.app.Sketch.exportApplet(Sketch.java:1524)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2293)
at java.lang.Thread.run(Thread.java:619)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 08, 2011, 10:57 pm
Uhm.. ok. Beh, allora usa solo i numeri ma tieni come riferimento lo schema che ti ho detto. E' quello usato dal Tiny Core per la conversione pin/piedino (puoi vederlo tu stesso in /arduino-00xx/hardware/tiny/cores/pin_arduino.c
Il fatto che ti sbarellino le uscite potrebbe dipendere dal fatto che tu ti aspetti di avere HIGH su un pin mentre il TIny ti manda il segnale da un'altra parte  ;)
Title: Re: Giocando con l'Attiny85
Post by: lollotek on Aug 08, 2011, 11:01 pm
ma infatti, anche se il piedino in uscita non è quello che ti aspetti non puoi modificare il circuito per adattarti, oppure ti sembra un comportamento randomico?
io comunque per programmare dall'ide di arduino ho usato i files presenti in questa guida (http://hlt.media.mit.edu/?p=1229)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 08, 2011, 11:04 pm
Ecco, appunto... a proposito di quel link, consiglio di non usarlo dato che il Tiny Core è molto più avanti ed aggiornato. Anzi, se lo avete nel PC, togliete quel progetto: non vorrei che interferisse col Tiny Core in fase di compilazione.

Cmq ripeto: se il segnale esce da un pin piuttosto che da un altro è solo perché si è usata una tabella di riferimento per i pin errata. Fate riferimento a quella che vi ho passato io, è quella usata dal Tiny Core per la conversione.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 11:09 pm
lui usa sempre la stessa entrata e la stessa uscita indipendentemente dal fatto che io cambi qualcosa nel mio codice pare quasi che sia difettoso.... il codice intendo
lui preleva il valore anaalogico dal pin A3 e mi mette High o Low il led che non ha nulla a che fare con la fotoresistenza che in realtà deve solo pilotare out...

Ho provato a toglierlo ma continua a darmi errori e non lo uppa.. domani provo con un altro Pc....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 08, 2011, 11:15 pm
Fai un altro tentativo (non posso essere più preciso perché non ho breadboard libere per provare, vado ad intuito)....

Siccome l'Attiny85 ha solo 1 porta per la gestione dei pin (PORTB), non vorrei che ad esempio A1 si da dichiarare sempre come pin 2, indipendentemente che lo si usi come digitale o analogico.
Quindi analogRead(2) fa la lettura analogica mentre digitalWrite(2) fa la scrittura digitale, ma il tutto sempre sullo stesso piedino fisico.

Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 08, 2011, 11:19 pm
non cambia nulla.....
he he cercherò di sistemare l'errore che mi da il programma...
grazie a tutti comunque notte...
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Aug 09, 2011, 01:30 pm
Ho cambiato PC il problema con l'IDE rimane e con il tiny pure....
Title: Re: Giocando con l'Attiny85
Post by: superlol on Aug 27, 2011, 03:33 pm
riprendo il topic:
volevo iniziare a smanettare anche io con gli attiny 85, in particolare volevo prendere un segnale in PPM ed in base alla sua modulazione e dei valori su eeprom volevo generare una sequenza sui pin liberi (poi vorrei usare anche un ADC con un partitore di tensione per leggere la carica di una batteria).

essendo io (come sapete  XD) un nabbone in questo campo avete messo un articolo sul playground completo o da qualche parte delle linee guida per partire da 0?
Title: Re: Giocando con l'Attiny85
Post by: Federico_Vanzati on Aug 27, 2011, 03:48 pm
Sto sperimentando anch'io in questi giorni...parti da questa guida: http://www.leonardomiliani.com/?p=388

poi per le domande credo che ci sarà Leo72 a rispondere, che ormai sa tutto e di più sui tiny85 :D
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Aug 27, 2011, 04:42 pm
Li mangio a colazione nel latte al posto dei cereali  XD
Quote
Anche il latta vuole essere può Attinoso
:smiley-yell:

Cmq quella guida va bene al 95%. Alcune cose però sono da rivedere.
Ad esempio, la cosa più importante è di usare il Tiny Core, prelevabile da qui
http://code.google.com/p/arduino-tiny/
Al posto delle librerie modificate di Saporetti.

Da quel sito prelevate anche le librerie TinyWire per poter gestire le comunicazioni I2C e le librerie PinChangeInterrupt per poter gestire i PCINT sui pin (gli interrut sui cambi di stato dei pin).
Title: Re: Giocando con l'Attiny85
Post by: superlol on Aug 27, 2011, 04:58 pm

Li mangio a colazione nel latte al posto dei cereali  XD
Quote
Anche il latta vuole essere può Attinoso
:smiley-yell:

Cmq quella guida va bene al 95%. Alcune cose però sono da rivedere.
Ad esempio, la cosa più importante è di usare il Tiny Core, prelevabile da qui
http://code.google.com/p/arduino-tiny/
Al posto delle librerie modificate di Saporetti.

Da quel sito prelevate anche le librerie TinyWire per poter gestire le comunicazioni I2C e le librerie PinChangeInterrupt per poter gestire i PCINT sui pin (gli interrut sui cambi di stato dei pin).

fantastico grazie allora domani inizio a leggere il tutto e settimana prossima ordino i chip  ;)
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 06:43 pm
Salve ragazzi, qualche giorno fa mi sono arrivati degli ATTiny 85, e seguendo la guida di Gioblu (http://www.gioblu.com/tutorials/programmazione/214) ne ho programmato uno conquesto sketch:

Code: [Select]
void setup() {               
  pinMode(0, OUTPUT); 
  pinMode(1, OUTPUT); 
  pinMode(2, OUTPUT); 
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);

}

void loop() {
digitalWrite(0, HIGH);
delay(500);
digitalWrite(1, HIGH);
digitalWrite(0, LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(1,LOW);
delay(500);
digitalWrite(2, LOW);
}


In sostanza sono tre led che lampeggiano uno dopo l'altro!
Il problema è che quando i led dovrebbero essere spenti in realtà non lo sono, sono semplicemente poco illuminati, ma non spenti del tutto! Come mai?
(Su tutti e tre i pin)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Sep 29, 2011, 06:52 pm
Puoi mettere un'immagine del tuo circuito?
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Sep 29, 2011, 06:59 pm
Lo faceva anche a me ma con una bella erasata ed il passaggio ad 8Mhz s'è risolto tutto :D
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:00 pm

Puoi mettere un'immagine del tuo circuito?

http://www.gioblu.com/images/stories/attiny85_3leds.jpg
Senza il pulsante! E con le resistenze da 330 ohm!
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 07:03 pm
Prova, su uno qualsiasi dei tre pin del tiny, a mettere una R da 10K verso GND, c osì capiamo se è un problema di livelli o meno.
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:10 pm

Prova, su uno qualsiasi dei tre pin del tiny, a mettere una R da 10K verso GND, c osì capiamo se è un problema di livelli o meno.

Stesso problema!
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 07:13 pm


Prova, su uno qualsiasi dei tre pin del tiny, a mettere una R da 10K verso GND, c osì capiamo se è un problema di livelli o meno.

Stesso problema!

Allora forse sono sballati i tempi del micro ed in realtà stanno lampeggiando rapidissimamente.
Prova a mandargli un banale blink e vedi se funziona normalmente o è molto veloce

EDIT: o semplicemente modifica questo sketch e lascia un solo led funzionante con delay(1000).
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:15 pm



Prova, su uno qualsiasi dei tre pin del tiny, a mettere una R da 10K verso GND, c osì capiamo se è un problema di livelli o meno.

Stesso problema!

Allora forse sono sballati i tempi del micro ed in realtà stanno lampeggiando rapidissimamente.
Prova a mandargli un banale blink e vedi se funziona normalmente o è molto veloce

E' questo il banale blink!
Cioè i led sono sempre accesi, a bassa intensità, ma appena è il loro turno di accendersi si accendono al massimo della luminosità!
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 07:18 pm
Non te la prendere, la prova serve per capire come funziona un solo pin con quei tempi, tre led in sequenza possono fare scherzi, se provi il classico On-1000-Off-1000 e funziona allora sei nella m..., se invece non va è un punto di partenza, se poi vuoi fare di testa tua tieniti i led accesi, io più di consigliarti prove non posso, se poi mi devo anche giustificare... :smiley-eek-blue:
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:20 pm

Non te la prendere, la prova serve per capire come funziona un solo pin con quei tempi, tre led in sequenza possono fare scherzi, se provi il classico On-1000-Off-1000 e funziona allora sei nella m..., se invece non va è un punto di partenza, se poi vuoi fare di testa tua tieniti i led accesi, io più di consigliarti prove non posso, se poi mi devo anche giustificare... :smiley-eek-blue:

No no scusami non volevo essere arrogante! :)
Avevo comunque già provato! E da lo stesso problema, un secondo illuminato al massimo e il secondo successivo illuminato di meno!
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 07:24 pm
Non c'è bisogno di scusarsi, basta capirci  :)
Se hai un tester, dovresti provare a misurare le tensioni che escono sul pin; nella fase OFF dovresti avere <1V, nella fase ON >3V; se così non è misura bene l'alimentazione del micro, devono essere 5V stabili. Se l'alimentazione è stabile, come ultima ratio dovresti provare a settare i fuses con la riga di AVRDUDE, per essere sicuri che il micro non stia lavorando a fave, tanto per seguire il consiglio di rattuccio, non si sa mai.... :)
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:27 pm

Non c'è bisogno di scusarsi, basta capirci  :)
Se hai un tester, dovresti provare a misurare le tensioni che escono sul pin; nella fase OFF dovresti avere <1V, nella fase ON >3V; se così non è misura bene l'alimentazione del micro, devono essere 5V stabili. Se l'alimentazione è stabile, come ultima ratio dovresti provare a settare i fuses con la riga di AVRDUDE, per essere sicuri che il micro non stia lavorando a fave, tanto per seguire il consiglio di rattuccio, non si sa mai.... :)

Low: 2.38V; High: 4.6V.
Il micro è alimentato dalla board Arduino uno che gli da: 4.61V (mi sembra che il range di alimentazione vada da 3.5V a 5.5V)
Adesso provo con i fuses...
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 07:30 pm
Il problema è evidente, la tensione di LOW è completamente sballata e tale da fornire una quasi adeguata tensione di accensione al led, quindi è normale che si comportino così; prova i fuse ma, se ce l'hai, anche un altro micro.
Un solo dubbio, non ti offendere, ma meglio una domanda idiota che un altro danno: sei sicuro che le R siano da 330 ohm?
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:37 pm

Il problema è evidente, la tensione di LOW è completamente sballata e tale da fornire una quasi adeguata tensione di accensione al led, quindi è normale che si comportino così; prova i fuse ma, se ce l'hai, anche un altro micro.
Un solo dubbio, non ti offendere, ma meglio una domanda idiota che un altro danno: sei sicuro che le R siano da 330 ohm?

Ho provato su tutti e 5 i Tiny85 che ho! Stesso problema! Adesso sto sistemando i fuse secondo la guida di gioblu! Portando anche il clock a 8MHz
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:42 pm
Stesso probema anche regolando i fuses!
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 07:44 pm
Ma le R? Se per caso fossero da 33 ohm avrebbero potuto bruciare le uscite dei micro (spero di no, visto che parli di tutti e 5 =()
Guarda io non ho mai avuto difficoltà con i miei nanetti, ad 1MHz e 5V alimentavano tre led durante la fase di test, poi tutti eliminati, consumavano troppo  ]:D
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 29, 2011, 07:47 pm

Ma le R? Se per caso fossero da 33 ohm avrebbero potuto bruciare le uscite dei micro (spero di no, visto che parli di tutti e 5 =()
Guarda io non ho mai avuto difficoltà con i miei nanetti, ad 1MHz e 5V alimentavano tre led durante la fase di test, poi tutti eliminati, consumavano troppo  ]:D

Mi vergogno quasi a dirlo.... Era la breadboard! XD
Perdonami!
Title: Re: Giocando con l'Attiny85
Post by: menniti on Sep 29, 2011, 08:28 pm
No, che ti devo perdonare? l'importante è risolvere, certo devi averla fatta grossa se ti nascondi dietro la breadboard; ho notato che ogni volta che qualcuno scopre di aver fatto una minch... selvaggia (come si dice più dalle tue parti che dalle mie :D) invece di confessare candidamente l'errore dice che è la breadboard, un pezzo di plastica con qualche striscia di conduttore e qualche centinaio/migliaio di fori, che non potrebbe fare danno nemmeno se lo volesse :smiley-mr-green: a meno che qualcuno non faccia collegamenti a czz sbagliano le connessioni ;)
Ma per me va bene così, inutile esporti, altrimenti questo Topic diventa come quello del game con i coccodrilli che, se non erro  :smiley-mr-green:, era sempre tuo XD XD
Title: Re: Giocando con l'Attiny85
Post by: Xfox on Sep 30, 2011, 01:44 pm

No, che ti devo perdonare? l'importante è risolvere, certo devi averla fatta grossa se ti nascondi dietro la breadboard; ho notato che ogni volta che qualcuno scopre di aver fatto una minch... selvaggia (come si dice più dalle tue parti che dalle mie :D) invece di confessare candidamente l'errore dice che è la breadboard, un pezzo di plastica con qualche striscia di conduttore e qualche centinaio/migliaio di fori, che non potrebbe fare danno nemmeno se lo volesse :smiley-mr-green: a meno che qualcuno non faccia collegamenti a czz sbagliano le connessioni ;)
Ma per me va bene così, inutile esporti, altrimenti questo Topic diventa come quello del game con i coccodrilli che, se non erro  :smiley-mr-green:, era sempre tuo XD XD

Non mi nascondo dietro la breadboard xD I collegamenti erano giusti, e' internamente che è rotta! Cioè c'erano dei contatti fra le tre linee che non dovrebbero essere collegati :)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 10, 2011, 03:57 pm
Rispolvero questo thread per aggiornarvi (direttamente dalle parole del suo sviluppatore) sul core Tiny e l'IDE 1.0.

Come saprete, la nuova IDE cambia alcuni file interni per cui nessuno sketch o libreria scritti per l'attuale core Arduino funziona più se si carica esplicitamente il file WProgram.h, perché questo file non esiste più e viene sostituito dal file Arduino.h.

L'attuale core Tiny (0022, compatibile con l'Arduino IDE 0022) necessita di un semplicissimo fix per continuare a funzionare. Basta creare un file Arduino.h all'interno della cartella cores/tiny contenente la seguente riga:

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

In questo modo si possono compilare nuovamente gli sketch scritti per i micro della famiglia Tiny.

Ah, già che ci sono vi aggiorno sul fatto che l'autore del core Tiny sta riscrivendo molte delle funzioni di gestione dei pin dei Tiny per occupare meno memoria flash, per cui la futura release (probabilmente uscità tra diverso tempo) consumerà meno risorse rispetto all'attuale.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Oct 10, 2011, 04:05 pm
Leo che te sappia la mega può programmare tramite ISP i nanetti ? perchè ho il 2009 impegnato ed il Seeeduino non mi programma i tiny.....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 10, 2011, 04:09 pm
Se lo sketch ArduinoISP è compatibile, sì.
Altrimenti prova con avrdude contenuto nell'IDE di Arduino.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Oct 10, 2011, 04:27 pm
allora probabilmente è incompatibile con il mio mega....
Cè un sistema per compilare il file dall'ide e ricavarne l'.hex? così lo carico con l'altro programmatore...
Title: Re: Giocando con l'Attiny85
Post by: alexdb on Oct 10, 2011, 04:52 pm
ma fra quanto sarà pronta la versione 1.0? è un pezzo che ne sento parlare, ma non ho letto da nessuna parte fra quanto esce...
Title: Re: Giocando con l'Attiny85
Post by: astrobeed on Oct 10, 2011, 04:57 pm

ma fra quanto sarà pronta la versione 1.0? è un pezzo che ne sento parlare, ma non ho letto da nessuna parte fra quanto esce...


E' pronta dal 17/9 quando è stata rilasciata la RC1, la trovi qui (http://code.google.com/p/arduino/wiki/Arduino1).
Title: Re: Giocando con l'Attiny85
Post by: alexdb on Oct 10, 2011, 05:02 pm


ma fra quanto sarà pronta la versione 1.0? è un pezzo che ne sento parlare, ma non ho letto da nessuna parte fra quanto esce...


E' pronta dal 17/9 quando è stata rilasciata la RC1, la trovi qui (http://code.google.com/p/arduino/wiki/Arduino1).


grazie mille! scusate ma in giro non avevo trovato nessun link  :(
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 10, 2011, 06:00 pm

E' pronta dal 17/9 quando è stata rilasciata la RC1, la trovi qui (http://code.google.com/p/arduino/wiki/Arduino1).


@alex:
è una RC, significa Release Candidate. E' più di una beta, è meno di una versione ufficiale. Può avere dei bug, quindi al momento conviene non usarla, anche perché tutti gli sketch aperti che sono stati scritti con la 0022 vengono salvati con una nuova estensione per essere compatibili con la 1.0, poi dopo non li puoi riaprire (a meno di intervento manuale) con la 0022. Inoltre alcune librerie potrebbero essere incompatibili: se leggi le modifiche al linguaggio, ce ne sono state e tante nell'implementazione di diverse funzioni per cui il comportamento potrebbe essere differente rispetto a prima ed i risultati altrettanto diversi.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Oct 10, 2011, 06:16 pm

allora probabilmente è incompatibile con il mio mega....
Cè un sistema per compilare il file dall'ide e ricavarne l'.hex? così lo carico con l'altro programmatore...

?

posso uppare per la prima volta un mio post dopo 2403 messaggi o mi fustigate ? :)
Title: Re: Giocando con l'Attiny85
Post by: alexdb on Oct 10, 2011, 06:28 pm


allora probabilmente è incompatibile con il mio mega....
Cè un sistema per compilare il file dall'ide e ricavarne l'.hex? così lo carico con l'altro programmatore...

?

posso uppare per la prima volta un mio post dopo 2403 messaggi o mi fustigate ? :)


mentre compili lo sketch arduino ISP tieni premuto SHIFT;
sul terminale compaiono un po di info, tra cui il percorso temporaneo del codice compilato..

comunque ti allego l'hex   :D


Title: Re: Giocando con l'Attiny85
Post by: alexdb on Oct 10, 2011, 06:30 pm


E' pronta dal 17/9 quando è stata rilasciata la RC1, la trovi qui (http://code.google.com/p/arduino/wiki/Arduino1).


@alex:
è una RC, significa Release Candidate. E' più di una beta, è meno di una versione ufficiale. Può avere dei bug, quindi al momento conviene non usarla, anche perché tutti gli sketch aperti che sono stati scritti con la 0022 vengono salvati con una nuova estensione per essere compatibili con la 1.0, poi dopo non li puoi riaprire (a meno di intervento manuale) con la 0022. Inoltre alcune librerie potrebbero essere incompatibili: se leggi le modifiche al linguaggio, ce ne sono state e tante nell'implementazione di diverse funzioni per cui il comportamento potrebbe essere differente rispetto a prima ed i risultati altrettanto diversi.

ok :) grazie mille, ero solo un pò curioso per vedere che novità ci fossero  ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Oct 10, 2011, 10:32 pm
An questa mi è nuova O.o
grazie ! :)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 10, 2011, 10:34 pm

An questa mi è nuova O.o
grazie ! :)

Consiglio di visitare il link che ha pubblicato astro e dare una scorza alle modifiche. Sono molte ed alcune anche radicali.
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Oct 10, 2011, 10:37 pm
Ma intendevo del tener premuto lo shift :P:P
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 10, 2011, 10:40 pm
Tu "intendevi" ma il tuo post è finito dopo un altro, senza citazioni non sapevo a cosa ti riferivi  ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Oct 10, 2011, 10:42 pm
Pardon ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Nov 02, 2011, 04:22 pm
Oggi ho finalmente terminato il regolatore di carica per pannelli solari e programmando il Tiny con i Tiny cores dopo la modifica scritta da leo funziona tutto perfettamente,
Programmando il chippettino con il Luigino 328 di Astrobeed ho con gioia scoperto che non serve mettere ne condensatori ne altro per impedire l'auto reset, Astro è per via dell'aggiunta del PIC onboard che non si autoresetta ?
Title: Re: Giocando con l'Attiny85
Post by: astrobeed on Nov 02, 2011, 04:26 pm

Programmando il chippettino con il Luigino 328 di Astrobeed ho con gioia scoperto che non serve mettere ne condensatori ne altro per impedire l'auto reset, Astro è per via dell'aggiunta del PIC onboard che non si autoresetta ?


Si il PIC onboard controlla l'autoreset attivandolo solo quando vuoi programmare Arduino e gestisce la comunicazione seriale collegando TX e RX alla MCU o al FTDI come necessario, cioè puoi programmare Arduino anche se c'è qualcosa collegato alla seriale.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 02, 2011, 04:44 pm

Oggi ho finalmente terminato il regolatore di carica per pannelli solari e programmando il Tiny con i Tiny cores dopo la modifica scritta da leo funziona tutto perfettamente,

Sono contento per te  :D

Quote

Programmando il chippettino con il Luigino 328 di Astrobeed ho con gioia scoperto che non serve mettere ne condensatori ne altro per impedire l'auto reset, Astro è per via dell'aggiunta del PIC onboard che non si autoresetta ?

Come ti ha detto Astro, la Luigino ha quella interessantissima funzione, che puoi attivare/disattivare come vuoi. Una figata!  ;)
Title: Re: Giocando con l'Attiny85
Post by: ratto93 on Nov 02, 2011, 04:53 pm
Si si ricordo che astro ci aveva spiegato come funzionava , domenica 23 ma non avevo capito che faceva lo stesso con ISP è davvero moolto comoda come cosa :)

Infatto ora monto gli strip ed un ponte per attivarla e disattivarla senza problemi :)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 02, 2011, 04:56 pm
Sì, difatti io li ho messi tutti e 3, compresi un jumperino per lo Smart-reset sempre montato sopra  ;)
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 03, 2011, 06:05 pm
Scusate la domanda banale, dove ordinate Attiny85? Non lo trovo. O sbaglio nome per cercarlo? (ho usato Attiny85). Vorrei iniziare a giocarci anche io  XD
Title: Re: Giocando con l'Attiny85
Post by: alexdb on Nov 03, 2011, 06:19 pm
http://www.ebay.it/sch/i.html?_nkw=attiny+85&_sacat=0&LH_PrefLoc=2&_odkw=attiny85&_osacat=0&_trksid=p3286.c0.m270.l1313
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 03, 2011, 06:26 pm
Gioblu li aveva ad un prezzo molto conveniente: al momento non sono disponibili, chissà se gli arrivano a breve.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Nov 03, 2011, 06:33 pm
Oppure da RS:
http://it.rs-online.com/web/p/microcontrollori/6962339/
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 03, 2011, 07:20 pm
Da RS sono un po' cari.
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 03, 2011, 07:35 pm
Grazie 1000, continuo a seguirvi da dietro le quinte... XD
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 04, 2011, 06:29 pm
Stavo leggendo la guida di LEONARDOMILIANI.com e non mi è chiara una cosa:
all'inizio si parla di aggiustare i fuse:

Quote
Per far ciò è necessario usare un programmatore ISP esterno: io ho utilizzato con
successo l'USBtinyISP di Adafruit ma qualsiasi altro programmatore supportato da
avrdure va più che bene.


Questa programmazione iniziale la posso fare in qualche modo usando arduino uno? Tipo usando il connettore ISP e/o componenti vari? O serve per forza un programmatore esterno?
Vorrei arrivare a delegare all' ATtiny85 il compito di gestire il display 16x2 che ho, riducendo i pin dell'arduino uno impegnati a quelli necessari per la sola trasmissione seriale. :smiley-eek-blue:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 04, 2011, 06:56 pm
La guida l'ho scritta io.
Quell'affermazione si riferisce al voler impostare il micro ad 8 MHz. Di fabbrica arrivano a 1 MHz, se questa frequenza è sufficiente per i tuoi progetti non devi toccare nulla.

Detto questo, preciso anche con un "aggiornamento" che l'operazione si può fare anche con un Arduino usato come programmatore ISP con lo sketch ArduinoISP.

Arriviamo ora al tuo display. Se è un display parallelo, difficilmente riuscirai a gestirlo con l'Attiny85 perché un display compatibile HD44780 necessita di almeno 6 fili, a cui devi sommare 2 fili per la connessione I2C. Arrivi quindi ad 8.
Ma con l'Attiny85 non ce la fai: hai 8 pin, da cui devi togliere i 2 pin dell'alimentazione, il pin di reset, i 2 pin per l'I2C ed arrivi ad avere solo 3 pin liberi.
Io per gestire un LCD ho usato un Attiny84: ha 14 piedini, di cui 11 disponibili come I/O.
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 04, 2011, 07:20 pm
Grazie, mi sta insegnando molto la tua guida. XD

Quindi, a prescindere dall'uso, posso usare l'Uno per portare l'ATtiny85 ad 8 MHz, seguendo le istruzioni della guida. Giusto?

Per il display in effetti è come dici tu un parallelo, preso da robotitaly per giocarci su. Allora serve l'84, la mia domanda è: vale lo stesso quanto scritto sull'85 per i MHz o essendo diverso cambiano anche i parametri?  Oppure lo uso com'è e lo programmo tramite Arduino Uno ?

Chiarito cosa serve,  il prossimo passo è capire come programmarlo per la gestione del display, che vorrei mostrasse (per adesso) i valori letti dai sensori ultrasuoni e IR del mio robottino arduino.
Ma questo sarà appunto il prossimo passo (sono autodidatta...  :smiley-red:).
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 04, 2011, 07:27 pm

Grazie, mi sta insegnando molto la tua guida. XD

Qui trovi la versione aggiornata:
http://www.gioblu.com/tutorials/programmazione/214
Ci sono anche le novità su come usare l'Arduino come programmatore per i fuse.

Quote

Quindi, a prescindere dall'uso, posso usare l'Uno per portare l'ATtiny85 ad 8 MHz, seguendo le istruzioni della guida. Giusto?



Quote

Per il display in effetti è come dici tu un parallelo, preso da robotitaly per giocarci su. Allora serve l'84, la mia domanda è: vale lo stesso quanto scritto sull'85 per i MHz o essendo diverso cambiano anche i parametri?  Oppure lo uso com'è e lo programmo tramite Arduino Uno ?

Valgono le stesse, identiche cose. Devi solo cambiare il tipo di micro nei parametri di avrdude, da "-p t85" a "-p t84".

Quote

Chiarito cosa serve,  il prossimo passo è capire come programmarlo per la gestione del display, che vorrei mostrasse (per adesso) i valori letti dai sensori ultrasuoni e IR del mio robottino arduino.
Ma questo sarà appunto il prossimo passo (sono autodidatta...  :smiley-red:).

Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 04, 2011, 08:03 pm
Quote
Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.


L'idea era (primaditutto limitata non conoscendo le varie possibilità) quella di vedere le letture senza dover essere collegato al pc. Adesso che mi hai messo la pulce nell'orecchio...
Può il tiny occuparsi (cosa che fa l'arduino uno adesso) tramite la libreria ultrasonic di rilevare la distanza e mandarla all'arduino uno per i calcoli vari e al display per la visualizzazione?
Può in alternativa gestire il compound eye e relativi movimenti dei servi?
Può in alternativa gestire tramite l' LM239D i motori dc?

Dico in alternativa perchè non so quantificare la potenza di calcolo/velocità che ho a disposizione, se facesse tutto meglio...
Mi rendo conto che ad ogni domanda cambia l'architettura del progettino ma è tutto in continua evoluzione, anzi se avete altri suggerimenti o link ben vengano.
Al momento il robottino con la sua LIPO è autonomo e funziona "benino" (vedi video anche se mal fatto  http://arduino.cc/forum/index.php/topic,76264.0.html). Adesso cerco di imparare sviluppandolo / migliorandolo / ottimizzandolo etc...
Title: Re: Giocando con l'Attiny85
Post by: alexdb on Nov 04, 2011, 08:11 pm

Quote
Ma l'Attiny84 lo usi solo per pilotare il display LCD con dati provenienti da un altro micro tramite I2C oppure legge il sensore via I2C in autonomia?
Non ho capito questo punto. Se è il primo caso, devi farti un protocollo di trasmissione fra il "master" che spedisce i dati e l'Attiny84 "slave" che riceve i dati e li visualizza, nel secondo caso invece sei avvantaggiato.


L'idea era (primaditutto limitata non conoscendo le varie possibilità) quella di vedere le letture senza dover essere collegato al pc. Adesso che mi hai messo la pulce nell'orecchio...
Può il tiny occuparsi (cosa che fa l'arduino uno adesso) tramite la libreria ultrasonic di rilevare la distanza e mandarla all'arduino uno per i calcoli vari e al display per la visualizzazione?
Può in alternativa gestire il compound eye e relativi movimenti dei servi?
Può in alternativa gestire tramite l' LM239D i motori dc?

Dico in alternativa perchè non so quantificare la potenza di calcolo/velocità che ho a disposizione, se facesse tutto meglio...
Mi rendo conto che ad ogni domanda cambia l'architettura del progettino ma è tutto in continua evoluzione, anzi se avete altri suggerimenti o link ben vengano.
Al momento il robottino con la sua LIPO è autonomo e funziona "benino" (vedi video anche se mal fatto  http://arduino.cc/forum/index.php/topic,76264.0.html). Adesso cerco di imparare sviluppandolo / migliorandolo / ottimizzandolo etc...


ma a questo punto se devi fare tutte quelle cose usa un atmega328 in standalone! in pratica è il microcontrollore dell'arduino che una volta finito il progetto lo usi da solo e risparmi l'arduino...
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 04, 2011, 08:27 pm
Si si è vero che c'è anche questa possibilità però non mi bastano i pin con 1 328 solo...
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 04, 2011, 11:34 pm
Prima devi capire se la libreria è compatibile con il Tiny84.
Devi cioè verificare che non usi pin inesistenti sul Tiny, interrupt/timer non presenti, che riesca a starci nella memoria ma, soprattutto, che funzioni.

Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 05, 2011, 05:12 pm
No, prima devo capire ancora come funziona una libreria e come si modifica... :(
Così sto facendo il passo più lungo della mia gamba, mi mancano troppe nozioni ancora per continuare.
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 07, 2011, 04:02 pm
@Leo72
ho trovato gli ATtiny 84 e 85 in 2 versioni: a 10 MHz o 20 MHz. Credo di capire che per andare a 20 ( o 10) ho bisogno di componenti aggiuntivi (quarzo etc) , ma li posso usare anche così senza niente (magari a velocità ridotta)?  Oppure devo prendere solo i max 10 MHz come da guida? :~
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 07, 2011, 04:19 pm
Prendi quelli da 20 MHz. Anche questi possono andare a 1 o 8 MHz senza componenti aggiuntivi. Se poi hai bisogno di maggior potenza, basta aggiungere un quarzo esterno.
Title: Re: Giocando con l'Attiny85
Post by: MatteoG on Nov 07, 2011, 04:20 pm
Ok,grazie, sempre gentile.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 06, 2012, 12:16 pm
Faccio riemergere questo topic cercando come al solito aiuto. Vorrei fare delle prove di trasmissione RF con gli ATtiny85 e in questa discussione http://arduino.cc/forum/index.php?topic=80942.0 ho visto che modificando opportunamente la libreria VirtualWire è possibile farlo. Questo comporta il fatto di impostare i fuses per usare il micro con quarzo esterno 16MHz. Ho provato a ricavarmeli con fuse calc http://www.engbedded.com/fusecalc/ ma i valori che trovo sono diversi da quelli contenuti nella board.txt creata dal tipo del link. E' sufficiente che li setto come nella boards.txt e cioè low_fuses=0xFF, high_fuses=0xD7, extended_fuses=0xFF? Mi appello alla vostra saggezza..
Grazie.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 06, 2012, 12:28 pm
Quote
E' sufficiente che li setto come nella boards.txt e cioè low_fuses=0xFF, high_fuses=0xD7, extended_fuses=0xFF

Sì, questi vanno bene. Puoi usare per il fuse Alto anche il valore $DF, che a differenza di $D7 non preserva il contenuto della EEPROM durante la flashatura del micro.

Per il fuse Esteso, prova con $FF oppure con il suo complementare $01. Il fuse esteso è un po' particolare, alcuni micro accettano il valore diretto (ossia 0 per 0 e 1 per 1) dei bit oppure il valore inverso (ossia 0 per impostare 1 e viceversa), dipende dal micro. Se programmando i fuse vedi che ti restituisce l'errore, prova l'altro valore.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 06, 2012, 12:53 pm
Grazie Leo!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 06, 2012, 04:55 pm

Grazie Leo!

Prego ma... funzionano?  :smiley-sweat:
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 06, 2012, 05:54 pm
Intanto sto raccogliendo nozioni, quando metterò in piedi una mezza basettina ti saprò dire. Se ce la faccio in settimana faccio due prove con la breadboard. Tutto nasce dalla richiesta di un mio amico che mi stressa perchè gli costruisca un radiocomando per pilotare la sua macchina del fumo. Ho pensato quindi agli attiny+moduli radio Aurel visto che ne ho una decina. Userei 2 pin in ingresso per 2 canali, 1 in output per il modulo radio tx e un altro output per led di segnalazione trasmissione. Piú o meno stessa cosa per rx con aggiunta di transistor + relè per chiudere il pulsante attivazione fumo.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 06, 2012, 07:46 pm
Alcune cose:
1) tra i pin che userai ti troverai il pin di reset, che è un pin un po' più "debole" degli altri in quanto a segnale elettrico, secondo datasheet.
2) come ricevi i dati? Via seriale? Ricordati che l'Attiny non gestisce la seriale in HW e devi usare la SoftwareSeriale, che però blocca il codice in ricezione. La NewSoftSerial in ricezione NON funziona perché non è compatibile con l'Attiny85.

Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 07, 2012, 11:00 am
1) Adesso che mi ci fai pensare, su delle prove che avevo fatto mi ricordo che c' era un pin che sembrava più debole. Grazie di avermelo ricordato. Bhè potrei evitare di usare il pin di RESET tanto nel conto dei pin 2(input)+2(output)+2(alimentazione)=6 pin usati, ne avanzerei ancora 2. Oppure lo potrei usare come input. ***
2) Per ricevere i dati utilizzo un modulino rx radio 433MHz. Vorrei appunto provare la libreria VirtualWire modificata come ha fatto l' utente sul post http://arduino.cc/forum/index.php?topic=80942.0 per vedere se riesco effettivamente a trasmettere e ricevere lo stesso dato. Alla fine del post ha scritto che con 2 Attiny85 la libreria funziona.

*** che scemo nella mia equazione ho dimenticato i due pin del quarzo   :smiley-mr-green:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 07, 2012, 11:29 am
Tieni a mente un altro problema. Per usare il pin di reset devi disattivare questa funzione con i fuse. Ma ciò comporta che dopo la sua disattivazione NON puoi più flashare il micro né ripristinare il reset senza usare un programmatore ad alta tensione (12V). L'operazione non è impossibile (in rete c'è uno schema di un programmatore H/V per ripristini di emergenza di chip briccati) però devi tenerne conto.

Domanda: ma usare un Tiny84 (14 pin)? Avresti 9 linee I/O, tolti i pin dell'alimentazione (2), quelli del quarzo esterno (2) e quello di reset (1). L'ingombro rispetto al Tiny85 sarebbe di poco superiore.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 07, 2012, 12:01 pm
Cavolo sto pin di RESET ora diventa il mio problema ]:) . Per fortuna che me lo hai fatto presente se no chissà quanto tempo ci perdevo! L' idea di usare un 85 era perché li avevo già a disposizione, senza stare a riordinare materiale. Per quello che devo fare mi basta comunque un canale, per cui potrei eliminare proprio il pin di RESET e far fare tutto alla logica RX (vedi schema sotto). Eventualmente se mi dovesse servire un altro canale con qualche trick (tipo doppio click o pressione più lunga del pulsante) potrei spedire un' altra informazione. 
               
                START <-----------------------------------------------                     
                    |                                                                 |
                    |              no                                               |
                Dato RX  ------------------------------------------->|
               sì  |                                                                  |
                    |                    no                                          |
   Sto già sparando il fumo? ------> Spara fumo ----->|
                    |                                                                  |
                    |sì                                                               |
          Blocca fumo -------------------------------------------->| 
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jan 07, 2012, 12:37 pm
Se non hai problemi di implementazione e ti trovi un banale SN7400, 01, 06, 14, usa due porte in serie al segnale e lo amplifichi in tensione e corrente; o al limite usa un TR, tenendo conto che devi invertire poi tu la logica del pin.
Se è solo "debole" risolvi senza problemi.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 07, 2012, 12:45 pm
Sì sarebbe sperimentabile anche questa via, ma mi sa che il pin di RESET non lo disabilterò..non vorrei trovarmi incasinato dopo per la riprogrammazione.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jan 07, 2012, 01:01 pm
Scusami, devo essermi espresso malissimo, sempre che tu abbia risposto a me :)
Io NON parlo di disabilitare ma semplicemente di potenziare il pin, e quindi usarlo come tutti gli altri, solo integrando un componente che permetta di superare le limitazioni di questa "debolezza" che ancora non ho capito in cosa consiste, ecco perché non sono sicuro che il mio suggerimento sia idoneo.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 07, 2012, 02:50 pm

Scusami, devo essermi espresso malissimo, sempre che tu abbia risposto a me :)

No no sei stato chiarissimo, è un metodo da tenere in considerazione solo che Leo ha scritto:

Tieni a mente un altro problema. Per usare il pin di reset devi disattivare questa funzione con i fuse.

Quindi il dubbio è questo, devo comunque disabilitare il RESET per poter usare questo pin come IN/OUT o posso comunque utilizzarlo con la coscienza di non avere il massimo della potenza?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 07, 2012, 03:20 pm
Vedo di far chiarezza, perché penso di aver capito di cosa stiate parlando entrambi.

1) di default il pin di reset è configurato come RESET per cui NON può essere usato come pin di I/O
2) per poterlo usare come normale pin di I/O bisogna (leggi "SI DEVE") programmare i fuse per disattivare il circuito di reset ed attivare quello di I/O - vedi però punto 4)
3) siccome il pin di reset deve tollerare voltaggi di 12V quando il micro viene programmato ad alto voltaggio, il circuito elettrico interno è più debole di quello presenti sugli altri pin. Il datasheet da pag. 189 mostra infatti che la corrente che può generare o assorbire è inferiore rispetto a quella degli altri pin.
4) una volta programma come I/O, non puoi più inviare nessun tipo di sketch tramite la procedura ISP usando un comune Arduino ma ti serve un programmatore ad alta tensione per azzerare i fuse né puoi più resettare il micro ma devi per forza ogni volta staccare/riattaccare l'alimentazione.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 07, 2012, 04:04 pm
Bene, ora è proprio chiaro. Quindi mi sa che lascio il RESET a fare quello per cui è stato preposto di dafault.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jan 07, 2012, 04:52 pm

Bene, ora è proprio chiaro. Quindi mi sa che lascio il RESET a fare quello per cui è stato preposto di dafault.

+1, mi ero incasinato anch'io, sorry.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 10, 2012, 12:18 pm
Riesumo questo post perché forse adesso abbiamo una NewSoftSerial compatibile in ricezione sia sui Tiny85 che sui Tiny84.
Allo stato attuale resta per la NewSoftSerial la limitazione della frequenza minima di 8 MHz.

Dunque, è farina del mio sacco al 50% dato che la modifica per il Tiny85 l'avevo già fatta quasi del tutto, mi era mancato il tempo di vedere come fare per i Tiny84, poi ho trovato questo (http://arduino.cc/forum/index.php/topic,85238.0.html) in cui era stata fatta per i Tiny84. Stamani avevo una mezz'oretta per riguardare il codice, e ciò che avevo fatto per il Tiny85 era quasi esatto, poi osservando l'altro codice ho capito come sistemare un paio di cose che mi erano rimaste volanti... et voilà! Ecco cosa fare.

1) aprite il file NewSoftSerial.cpp della NewSoftSerial con un editor di testo
2) cercato intorno alla riga 40 il blocco di codice che inizia con // Abstractions for maximum portability between processors
3) sostituitelo con il seguente:
Code: [Select]
// Abstractions for maximum portability between processors
// These are macros to associate pins to pin change interrupts
#if !defined(digitalPinToPCICR) // Courtesy Paul Stoffregen
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)NULL))
#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1))
#define digitalPinToPCMSK(p)    (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)NULL))))
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14)))
#elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || (__AVR_ATtiny84__)
#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 10) ? (&GIMSK) : ((uint8_t *)NULL))
#define digitalPinToPCICRbit(p) (((p) <= 2) ? 5 : 4)
#define digitalPinToPCMSK(p)    (((p) <= 2) ? (&PCMSK1) : (((p) <= 10) ? (&PCMSK0) : ((uint8_t *)NULL)))
#define digitalPinToPCMSKbit(p) (((p) <= 2) ? (p) : (((p) - 10) * -1))
#elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || (__AVR_ATtiny85__)
#define digitalPinToPCICR(p)    (((p) >= 0 && (p) <= 5) ? (&GIMSK) : ((uint8_t *)NULL))
#define digitalPinToPCICRbit(p) 5
#define digitalPinToPCMSK(p)    (((p) >= 0 && (p) <= 5) ? (&PCMSK) : ((uint8_t *)NULL))
#define digitalPinToPCMSKbit(p) (p)
#else
#define digitalPinToPCICR(p)    ((uint8_t *)NULL)
#define digitalPinToPCICRbit(p) 0
#define digitalPinToPCMSK(p)    ((uint8_t *)NULL)
#define digitalPinToPCMSKbit(p) 0
#endif
#endif


Adesso compilate e provate perché.... non ho avuto tempo di verificare che quello per il Tiny85 funzioni al 100%. Io ho usato una versione modificata del BlinkWithoutDelay mettendo un serial.available() per controllare se ci sono dei byte in arrivo e non mi ha bloccato l'esecuzione, con il led che continua a blinkare. Stasera faccio delle prove di trasmissione reale, se qualcun altro vuol farle al mio post ben venga.

Ecco il codice di test che ho provato ad uploader:
Code: [Select]

#include <NewSoftSerial.h>
NewSoftSerial mySerial(0, 1);
const int ledPin =  3;      // the number of the LED pin
int ledState = LOW;          
long previousMillis = 0;      
long interval = 1000;      

void setup() {
 pinMode(ledPin, OUTPUT);      
 mySerial.begin(9600);
}

void loop()
{
 unsigned long currentMillis = millis();
 if (mySerial.available()) {
     for (byte i=0; i<3; i++) {
         digitalWrite(ledPin, HIGH);
         delay(250);
         digitalWrite(ledPin, LOW);
         delay(250);
     }
 }
 if(currentMillis - previousMillis > interval) {
   previousMillis = currentMillis;  
   ledState^=1;
   digitalWrite(ledPin, ledState);
 }
}
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jan 10, 2012, 01:43 pm
Leo, ma queste librerie non hanno una collocazione, non potresti fare opera pia e metterla a disposizione su quel sito (p.es.) da dove scarichiamo il core dei tiny? Così la scarichiamo e basta.
Mi confermi che (salvo ulteriore test) questa libreria ora funziona, nel senso che non si blocca più in rx (mi pare fosse lì l'inghippo) ma continua ad avere il limite che a 1MHz (o comunque <8MHz) non funziona?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 10, 2012, 02:26 pm

Leo, ma queste librerie non hanno una collocazione

In che senso? Non capisco...

Quote

, non potresti fare opera pia e metterla a disposizione su quel sito (p.es.) da dove scarichiamo il core dei tiny? Così la scarichiamo e basta.

Ma al sito del core Tiny non ho accesso.

Quote

Mi confermi che (salvo ulteriore test) questa libreria ora funziona, nel senso che non si blocca più in rx (mi pare fosse lì l'inghippo) ma continua ad avere il limite che a 1MHz (o comunque <8MHz) non funziona?

A me non si bloccava, però devo sperimentarla per bene con una trasmissione reale. Resta il limite degli 8 MHz ma questo è un limite dato dal fatto che la seriale ha dei tempi da rispettare e l'implementazione, essendo SW, non può essere mai veloce come una seriale HW per cui hai una frequenza minima. Modificarla per farla andare con chip ad 1 MHz non è un problema, ma poi i tempi ricadono in un intervallo dove i valori errati sono molto alti, ergo diventa inusabile.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Jan 10, 2012, 08:22 pm


Grazie Leo!

Prego ma... funzionano?  :smiley-sweat:

Aggiorno la situazione e confermo che con lfuse:0xff, hfuse:0xd7, efuse:0xff funziona tutto. Mi sono un attimo inceppato poiché prima ho scritto i fuse e poi ho provato a scrivere il programma dentro al tiny senza averci messo il quarzo per farlo girare. Ovviamente non riuscivo ad uploadare lo sketch e pensavo di aver già bruciato 2 Attiny85!  :). Non ho molto approfondito la programmazione ISP..pensavo fosse Arduino a dare clock, data, etc..
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jan 10, 2012, 08:37 pm


Leo, ma queste librerie non hanno una collocazione

In che senso? Non capisco...

scusami, mancava il "?" -->ma queste librerie non hanno una collocazione? (riferendomi al sito della frase successiva)

Quote

Ma al sito del core Tiny non ho accesso.

insomma da qualche parte dove sia sempre scaricabile, anche su tuo sito, cos'hai fatto per la lib RTC?
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Jan 10, 2012, 09:09 pm
erano un po' di giorni che non venivo a fare un giro sul forum :)
ho appena visto la reply #377 di Leo, ma non ho capito... hai risolto il roblema e funziona così? adesso non posso provare ma magari nei prossimi giorni faccio qualche altro test ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 10, 2012, 10:21 pm
@Mike:
la libreria ha una sua collocazione. Quando dico "1) aprite il file NewSoftSerial.cpp della NewSoftSerial con un editor di testo" do per scontato che la si abbia già scaricata ed installata sul proprio computer.  ;)
Cmq sto provvedendo ad una revisione della mia guida perché ormai è datata (ha 8 mesi) e di info aggiunte ce ne sono tante. Vedrò di far eun mega pacchetto in cui infilarci dentro anche tutte le lib modificate.

@ER:
"sulla carta" il problema è risolto. Con dei test fatti così, velocemente, il codice non si pianta più. Resta da verificare l'effettivo funzionamento della lib, cioè se oltre a non bloccarsi riceve anche  :smiley-sweat:
Ma non so quando posso provarla, sono un po' in crisi col tempo, in questi giorni
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jan 10, 2012, 10:59 pm

@Mike:
la libreria ha una sua collocazione. Quando dico "1) aprite il file NewSoftSerial.cpp della NewSoftSerial con un editor di testo" do per scontato che la si abbia già scaricata ed installata sul proprio computer.  ;)
Cmq sto provvedendo ad una revisione della mia guida perché ormai è datata (ha 8 mesi) e di info aggiunte ce ne sono tante. Vedrò di far eun mega pacchetto in cui infilarci dentro anche tutte le lib modificate.

Lo so Leo, però tu l'hai modificata e testata, perché far fare a tutti la tua setssa manovra (scarica, apri, modifica, salva) col rischio di fare qualche casino), quando a te basta linkarla da qualche parte e permette a tutti con un clic di averla bell'e pronta? Sai come la penso in merito; ottima l'idea di aggiornare la Guida ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jan 10, 2012, 11:33 pm
Difatti andrà tutto nel megapacchetto.
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Jan 12, 2012, 08:09 pm
ok quando ho un po' di tempo provo ;) , magari provando a non fare errori... :smiley-sweat:
grazie! ;)
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 09, 2012, 07:53 pm
Salve ragazzi
scusate se vi tedio con questa richiesta, ma ho iniziato da qualche giorno a giocare con i tiny85,ho letto buona parte dei messaggi sul forum e seguito le guide su gioblu (grazie leo!) oggi mi e' arrivato finalmente il tiny85 ed ho tentato di farlo comunicare con Arduino uno usato come programmatore ISP, credo di essere riuscito a caricare  il bootloader, ma quando provo a caricare uno sketch (il semplicissimo blinker col pin0) mi rende il seguente errore;

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): unknown response=0x12
-----
dove sbaglio??
Valerio
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 09, 2012, 10:58 pm
Sui Tiny non puoi aver caricato un bootloader semplicemente perché quelli allegati al core Tiny sono "finti" bootloader. Altro non sono che file vuoti, che servirebbero (uso il condizionale) per poter programmare i fuse usando l'IDE. A me personalmente la cosa non è mai riuscita, per cui ho deciso di usare sempre avrdude da terminale, molto più semplice e veloce.

Detto questo, l'errore che ricevi può essere dovuto a errori di connessioni: ricontrolla i collegamenti.

Che bootloader avevi cercato di caricare?
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 08:41 am
Buon giorno Leo  e grazie per la risposta.
Mi sono espresso male, ho messo in atto la procedura descritta sui siti citati (http://hlt.media.mit.edu/?p=1695   http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85  )  , per settare il tiny ad 8 mhz, in seguito avrei voluto procedere al caricamento di uno sketch di prove (quello consigliato da te nel sito http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85 ), ma mi sono piantato.
In pratica, collegando il tiny ad arduino come isp, sono riuscito ad avere in risposta ok (a parte l'errore che hai segnalato anche tu di cui non tenere nota) dopo la procedura di "burn bootloader". dopodiche', tolto il condensatore, avrei dovuto ottenere un tiny pronto per l' upload di un  semplice sketch di prova (io ho anche preparato un circuitino su multiforo  che ospita i tre led previsti nel tuo circuito), ma ottengo soltanto quell'errore.Secondo te come mi devo comportare? (per controllare ho anche collegato il tiny direttamente su una breadboard per evitare eventuali falsi contatti/errori di circuito
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 10, 2012, 09:00 am
Mi parli di "togliere il condensatore". Quindi hai usato il condensatore infilato nei pin dell'Arduino per disabilitare l'autoreset della scheda, giusto? Ma in questo caso devi lasciarlo anche per poter programmare i Tiny usando sempre la tecnica ISP.

Voglio tornare un attimo sulla questione del bootloader. Ripeto, non devi mettere un bootloader perché semplicemente l'operazione non va a buon fine. Tant'è che nella mia guida sul sito di Gioblu non ne ho parlato proprio perché non funziona.

Quindi, ricapitoliamo:
1) ricarica lo sketch ArduinoISP sul tuo Arduino
2) metti il condensatore anti-autoreset
3) collega il Tiny
4) imposta il clock interno del Tiny usando direttamente avrdude da terminale come scritto nella mia guida
5) carica lo sketch del lampeggio dei 3 led
6) invialo al micro

Tutto questo senza togliere, a partire dal punto 2), il condensatore anti-autoreset dall'Arduino. E vediamo che errori ricevi.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 09:24 am
Ok Leo gentilissimo, adesso devo uscire, nel primo pomeriggio ESEGUO! grazie a dopo
Title: Re: Giocando con l'Attiny85
Post by: skaxxo on Feb 10, 2012, 10:29 am
Sto pensando di comprarmi un attiny85, sembra carino.
Non ho letto tutte le 25 pagine di discussione ma ciò che mi preme capire se è compatibile con la ide arduino (caricherei, poi, lo sketch con USBasp o USBtinyISP) o bisogna fare qualcosa modifica al suo interno.
C'è bisogno del bootloader per caso?

Grazie
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 10, 2012, 10:39 am
Devi scaricarti il core Tiny da inserire nell'IDE per poter programamre i Tiny85 e Tiny84 tramite l'Arduino.
Non serve bootloader.

http://www.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85
Title: Re: Giocando con l'Attiny85
Post by: ulver85 on Feb 10, 2012, 11:27 am
i tiny 85 e sopratutto 84 sono una grande ed economica alternativa per piccoli progetti, tra l'altro il loro uso con arduinoISP è veramente molto semplice, anche io ho seguito la guida su gioblu per integrare i core nell'ide di arduino, l'unica cosa a cui bisogna stare attenti è la lista di funzioni compatibili con i tiny:

# pinMode()
# digitalWrite()
# digitalRead()
# analogRead()
# analogWrite()
# shiftOut()
# pulseIn()
# millis()
# micros()
# delay()
# delayMicroseconds()
# SoftwareSerial

altre funzioni sono disponibili con librerie esterne come softwareservo ecc.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 10, 2012, 11:58 am
Le funzioni sono limitate perché limitato è il core (parlo del core di silicio, non del core software) dei Tiny. Ad esempio, non avendo una seriale in hardware non hanno la gestione della comunicazione seriale con la funzione Serial. ecc...
Title: Re: Giocando con l'Attiny85
Post by: skaxxo on Feb 10, 2012, 01:31 pm
Aggiorniamo il primo post in modo tale da mettere i punti salienti dell'attiny85? grazie  XD
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 04:34 pm
niente da fare, non conosco avrdude e non riesco a fargli digerire il file per ottenere i 8mhz... mi restituisce questo:
localhost:tools valerio$ ./avrdude -P /dev/cu.usbmodem26211 -C ./avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200
-bash: ./avrdude: No such file or directory

se chiamo avrdude il programma risponde :

localhost:tools valerio$ avrdude
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>
        ecc.....

dove sbaglio??
ho provato a mandare la stringa dei comandi nella finestra "serial monitor" del IDE di Arduino e mi risponde cosi:
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: stk500_recv(): programmer is not responding

consigli??
grazie valerio
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 10, 2012, 05:41 pm
I consigli sono quelli della mia guida  ;)
Devi aprire un terminale all'interno della cartella che contiene avrdude distribuito con l'IDE di Arduino, nel mio caso
/home/leo/Documenti/Arduino/hardware/tools

Lì trovi sia avrdude che avrdude.conf, che è il file dei parametri dei vari micro che avrdude usa per "dialogare" con il programmatore.
Inoltre sbagli porta: /dev/cu.usbmodem26211 è la porta a cui hai connesso l'Arduino? Di solito è qualcosa tipo /dev/ttyACM0 per l'Arduino UNO e /dev/ttyUSB0 per l'Arduino 2009. Quindi, ricapitoliamo:

1) fai i collegamenti e collega l'Arduino
2) spostati nella suddetta cartella
3) aprici un terminale
4) dai:
Code: [Select]
./avrdude -P /dev/ttyACM0 -C ./avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200
Controlla (magari aprendo l'IDE) che la porta a cui è collegato l'Arduino sia giusta

Devi flashare i fuse correttamente. Se non ci riesci, posta l'errore.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 08:08 pm
Grazie ancora Leo per la tua pazienza, credo di aver capito .... il problema e' che io nella cartella che dici tu, non ho nulla.... il programma avr non c'e'.
Dove lo trovo? ho istallato per l'ennesima volta l'IDE di Arduino prelevata direttamente in dmg dal sito ufficiale (questo!) ma i file che servono dove li trovo?
Nella cartella che sta in documenti e che ho associato alla IDE dal menu preferenze, ci sono sempre e solo i vari file dei miei codici, ma dentro tools non ho nulla.
Per chiarezza posto la foto della cartella.
---
Per la seriale, invece, si chiama proprio cosi' perche' Arduino e' collegato attraverso una usb di un hd esterno.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 10, 2012, 09:14 pm
Ciao radiojam,
può essere che nelle varie versioni di IDE l' avrdude venga cambiato di posizione, per esempio su IDE della versione Linux è dentro /hardware/tools mentre nella versione Windows è in /hardware/tools/avr/bin. Ora ..nella versione MAC non so dove lo abbiano messo, prova con una ricerca..
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 09:32 pm
Ciao  Devon grazie delle info ,
accidenti manca sempre qualcosa..... adesso che ho reinstallato per la ennesima volta la IDE (la 1,0) ho cercato nel pacchetto ed ho copiato tutti i file della cartella tools nella cartella di Arduino in documenti (come da immagine nel  post precedente) ed ho trovato il file in      ..... /hardware/tools/avr/bin
ma il file di configurazione non c'e' , infatti mi risponde :
localhost:bin valerio$ ./avrdude -P /dev/cu.usbmodem26221 -C ./avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200
avrdude: can't open config file "./avrdude.conf": No such file or directory
avrdude: error reading system wide configuration file "./avrdude.conf"

ce ne e' uno con quel nome in ..... /hardware/tools/avr/etc

ma e' una caccia al tesoro??
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 10, 2012, 09:37 pm

ma e' una caccia al tesoro??

:smiley-yell:

ce ne e' uno con quel nome in ..... /hardware/tools/avr/etc

Sì, o copi quel file nella cartella che contiene anche avrdude oppure specifichi tutto il percorso quando dai la riga di comando
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 09:55 pm
Ok allora ho aggiunto il percorso di avrdude (quello originale della ATMEL che nel frattempo tra le mille prove ho installato - va bene o crea anche questo dei problemi??) nel PATH, e mi sono spostato nella cartella dove c'e' il file .conf

risultato:
localhost:etc valerio$ avrdude -P /dev/cu.usbmodem26221 -C ./avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200
error at ./avrdude.conf:332 unrecognized character: "w"

grrrr!
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 10, 2012, 10:36 pm
Io ho questo file avrdude.conf. Penso sia lo stesso sia per Win che per IOS. Copialo dentro alla cartella che contiene avrdude e prova a  rilanciare il comando in questo modo:
./avrdude -P /dev/ttyACM0 -C -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200 oppure come faccio io in Windows:
./avrdude -p ATtiny85 -c stk500v1 -b 19200 -P /dev/ttyACM0 -U lfuse:w:0xE2:m
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 10, 2012, 10:42 pm
@Radionajm:
avevo dato per scontato che stessi usando Linux. D'altronde anche il Mac è sempre un SO *nix.

PS:
la mia guida si basa sulla versione 0022 dell'IDE e del core Tiny. Di entrambi c'è la versione 1.0 ma io non l'ho usata perché le modifiche che ho suggerito nel corso del tempo alle varie lib accessorie non so se poi funzionano ancora.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 11:01 pm
Bene ragazzi, ecco la situazione.
Dopo aver scaricato il file gentilmente messo a disposizione da Devon e collocato nella cartella ......./hardware/tools/avr/bin  dove risiede l'eseguibile di avrdude, ho lanciato il comando ..... puf errore...... quindi tra le tante prove ho cambiato la porta usb dove e' collegato Arduino, modificato di conseguenza la seriale nella config della IDE e finalmente dando lo stesso comando da terminale finalemnte ottengo questo:

localhost:bin valerio$ ./avrdude -p ATtiny85 -c stk500v1 -b 19200 -P /dev/cu.usbmodem431 -U lfuse:w:0xE2:m

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.12s

avrdude: Device signature = 0x1e930b
avrdude: reading input file "0xE2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.04s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xE2:
avrdude: load data lfuse data from input file 0xE2:
avrdude: input file 0xE2 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.04s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

localhost:bin valerio$

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Credo di esserci riuscito!!!
finalemente!

almento il tiny85 e'  ad 8 mhz
grazie ....... continua
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 11:05 pm
..... seguito

Allora, stacco il condensatore
stacco Arduino
chiudo la IDE

Riattacco Arduino
metto il condensatore
Parto con la IDE

controllo la porta seriale
carico il codice di Leo per i tre led

------
risultato:

Binary sketch size: 1270 bytes (of a 8192 byte maximum)
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: stk500_recv(): programmer is not responding


ma porkkkkkk!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 10, 2012, 11:06 pm
Una domanda: quando dici che hai cambiato porta all'Arduino, intendi la porta fisica a cui hai agganciato l'Arduino al PC oppure la porta logica passata ad avrdude?

Poi scrivi: "controllo la porta seriale". Che vuol dire? Che stai facendo?
Se apri la porta seriale non potrai programmare via ISP, disturbi la comunicazione.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 11:11 pm
tutte e due, cioe' ho passato il cavo usb su una usb diretta del mac e di conseguenza e' cambiato l'indirizzo della seriale relativa e naturalmente ho cambiato anche quello nello script
infatti prima (quando la usb utilizzata e' quella del HDesterno) il mac la chiamava       dev/cu.usbmodem26221


adesso la chiama dev/cu.usbmodem431

Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 10, 2012, 11:15 pm
Quote


Poi scrivi: "controllo la porta seriale". Che vuol dire? Che stai facendo?
Se apri la porta seriale non potrai programmare via ISP, disturbi la comunicazione.


controllo che sia apparsa nel menu "serial port" della IDE
perche' quando stacco Arduino da detto menu scompare.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 10, 2012, 11:57 pm
Controlla che il condensatore sia collegato bene, se ti ha programmato i fuses dovrebbe fare anche il resto
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 12:01 am
Se usando avrdude da terminale riesci a programmare il Tiny usando l'Arduino mentre dall'IDE ricevi un errore di "programmer is not responding" cì+ qualche operazione che tu fai con l'IDE che disturba la programmazione.

La tecnica funziona perché altrimenti non riusciresti a programmare via terminale. "Programmer is not responding" è indicativo del fatto che l'Arduino non viene inizializzato come dovrebbe. Può essere o perché si attiva l'autoreset o perché la porta è errata o perché non hai selezionato il Tiny nella lista delle schede (e quindi non hai modificato il file boars.txt).
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 08:49 am
Non credo dipenda dal condensatore, e' piu' probabile che sia a causa di settaggi sbagliati. seguendo passo passo cio' che mi suggerite, sono tornato sul file board.txt che riporto qui

ERRORE====== HO PUBBLICATO IL PEZZO SBAGLIATO ====== HO CORRETTO ADESSO SCUSATE!!!===

attiny85-8.name=ATtiny85 (internal 8 MHz clock)
attiny85-8.bootloader.low_fuses=0xe2
attiny85-8.bootloader.high_fuses=0xdf
attiny85-8.bootloader.extended_fuses=0xff
attiny85-8.upload.maximum_size=8192
attiny85-8.build.mcu=attiny85
attiny85-8.build.f_cpu=8000000L
attiny85-8.build.core=arduino:arduino
attiny85-8.build.variant=tiny8

...... ho copiato solo la parte relativa al tiny85 che e' quello che mi fa dannare in questo momento.
come vedete, non c'e' la parte che segnala Leo nella guida:
Quote

AGGIORNAMENTO: bisogna eseguire una modifica al file /tiny/boards.txt, che non mi sono ricordato di segnalare prima. Nel file menzionato tutte le voci xxxxxxxx.upload.using=pololu vanno commentate aggiungendo il carattere "#" all'inzio della riga e decommentate (togliendo il carattere "#" iniziale) le righe xxxxxxxxxx.upload.using=arduino:arduinoisp


che dite, la inserisco a mano cosi???  
attiny85.upload.using=arduino:arduinoisp

ma gli altri parametri vanno bene??

Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 09:40 am
Mi fate una cortesia:
mi zippate la vostra cartella tiny completa, che io sostituiro' direttamente alla mia. voglio vedere se e' questo che blocca!
grazie
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 11, 2012, 10:00 am
Io ti posto la mia, però ti avverto che è un pò incasinata  :smiley-roll-sweat: visto che avevo creato altre board e avevo fatto esperimenti, sicuramente quella di mastro Leo è più ordinata.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 10:17 am
L'errore è questo:
Code: [Select]

attiny85-8.build.core=arduino:arduino


Tu stai dicendo di compilare usando il core di Arduino, non il core Tiny.
Questa è la voce che ho io nel file /hardware/tiny/boards.txt per il Tiny85 a 8 MHz:

Code: [Select]
###########################################################################

attiny85at8a.name=ATtiny85 @ 8 MHz (ArduinoISP)
attiny85at8a.upload.using=arduino:arduinoisp
attiny85at8a.upload.maximum_size=8192
attiny85at8a.bootloader.low_fuses=0xE2
attiny85at8a.bootloader.high_fuses=0xD7
attiny85at8a.bootloader.extended_fuses=0xFF
attiny85at8a.bootloader.path=empty
attiny85at8a.bootloader.file=empty85at8.hex
attiny85at8a.bootloader.unlock_bits=0xFF
attiny85at8a.bootloader.lock_bits=0xFF
attiny85at8a.build.mcu=attiny85
attiny85at8a.build.f_cpu=8000000L
attiny85at8a.build.core=tiny


Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 10:25 am
niente da fare... grazie, ma ci rinuncio
compro un programmatore usb e fank.... "arduino as isp"
qualche consiglio x programmare gli attiny ?'
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 10:30 am
@DevonMiles:
mi pare dal nome del file che tu stai ancora usando il core di Saponetti e non il core Tiny.

@radiojam:
guarda che l'errore riguarda ciò che stai facendo nell'IDE e non nella tecnica, la tecnica funziona: la programmazione dei fuse ne è una conferma. Quindi a livello di collegamenti tu sei a posto, stai però sbagliando con l'IDE.

Dovresti specificare:
1) che core Tiny hai scaricato (metti il link)
2) dove lo hai scompattato (la cartella precisa)
3) quale file boards.txt hai modificato (percorso)
4) che voci usi nei menu dell'IDE: board selezionata, porta, ecc
5) sei hai provato con la voce che ti ho dato io perché la tua, oltre a quel problema di core, non aveva come hai fatto notare tu la selezione del programmatore quindi NON poteva funzionare in alcun modo
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 11, 2012, 10:47 am

@DevonMiles:
mi pare dal nome del file che tu stai ancora usando il core di Saponetti e non il core Tiny.

Sì Leo mi sa che hai ragione, il fatto è che ho un gran casino dentro al pc, comunque è installato anche il nuovo tinycore.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 10:52 am
Bene, allora se vuoi un consiglio togli la cartella del core di Saponetti (dovresti averla in sketchbook/libraries) così da eliminare dal menu dell'IDE anche le sue voci altrimenti potresti fare confusione durante la selezione della scheda e scegliere quel core.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 11, 2012, 11:44 am
Ho veramente un casino, ho tolto l' attiny45_85 però mi trovo anche arduino-extras e arduinotiny. Che versioni di core sono?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 11:46 am
Non lo so   :P

E dove ce l'avresti queste cartelle?
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 11, 2012, 11:57 am
Cavolo ho fatto queste operazioni tempo fa, in maniera confusionaria e senza sapere esattamente cosa facevo..è per questo che ora mi trovo con un pacco di roba. :smiley-roll-blue: Senza contare i vari IDE. Premetto che sto usando Win XP con IDE 21(mi ci trovo bene con questo). Le cartelle sono nelle contenute in una sottocartella hardware che a sua volta risiede dove ho tutti gli sketch.
..\Arduino\Pippo\Pippo.pde
              \Pluto\Pluto.pde
              \Minnie\Minnie.pde
              \hardware\arduinotiny
                            \arduino-extras
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 12:04 pm
Intanto ti consiglio di passare all'IDE 0022/0023 perché contiene molti bugfix rispetto alla 0021.
Detto questo, credo che arduino-extras sia questo
http://www.avr-developers.com/corefiles/index.html
Ma non ho capito a cosa serva e cos'abbia di diverso rispetto all'IDE.
Arduinotiny forse lo hai rinominato tu rispetto a "tiny" e potrebbe essere il core Tiny. Ma non ne ho la certezza, non potendo vedere la cartella. Contiene  forse una cartella denominata /cores/tiny? Se sì, è il core Tiny.
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 11, 2012, 12:29 pm
Si chiama proprio arduinotiny anche dentro cores, chissà dove l' ho pescata. Boh..va bhe per il momento resto così, appena ho tempo faccio un backup, aggiorno l' IDE e faccio un pò d' ordine nei cores. Comunque grazie.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 03:03 pm


@radiojam:
guarda che l'errore riguarda ciò che stai facendo nell'IDE e non nella tecnica, la tecnica funziona: la programmazione dei fuse ne è una conferma. Quindi a livello di collegamenti tu sei a posto, stai però sbagliando con l'IDE.

Dovresti specificare:
1) che core Tiny hai scaricato (metti il link)
2) dove lo hai scompattato (la cartella precisa)
3) quale file boards.txt hai modificato (percorso)
4) che voci usi nei menu dell'IDE: board selezionata, porta, ecc
5) sei hai provato con la voce che ti ho dato io perché la tua, oltre a quel problema di core, non aveva come hai fatto notare tu la selezione del programmatore quindi NON poteva funzionare in alcun modo


Buon pomeriggio ragazzi e grazie del tempo che continuate a dedicarmi.
@Leo
ne sono cosciente! Il problema e' tutto nella istallazione del programma IDE e dei relativi file di configurazione.
Partendo con ordine, tanto ho tutto il tempo che voglio, nel negozio sotto casa il programmatore non lo hanno (e quando mai!) quindi prima che mi arrivi campa cavallo! (ps mi pare che non lo abbiano neppure da futuranet, vi risulta? - peccato, e' a solo una mezzoretta da qui, ci avrei fatto un salto)

@Leo ti rispondo con ordine
0) sto utilizzando un mac intel con macos 10.6.8
1) ho scaricato da questo link  http://code.google.com/p/arduino-tiny/downloads/list         tutti e tre i file zippati che ci sono  esubito qui ho il primo problema: l'istallazione di IDE (ho scaricato un po' tutte le versioni citate, ma adesso ho su la 1.0 -l'ultima-) l'istallazione dicevo, non crea nessuna cartella, mi trovo il programma Arduino, con la sua bella icona celeste, che parte anche se non viene trasportato nella cartella Applicazioni (come di solito si deve fare ogni nuova istallazione su mac). E basta. quando entro per la prima volta ed eseguo il programma, definisco io la cartella dove tenere i file dei vari sketch, ed io ho scelto la cartella appunto chiamata Arduino, costruita ad hoc, dentro Documenti.

Dentro questa nuova cartella, non c'e' nulla. Sono io ad andarci a mettere i vari file .ino (se voglio)
Quindi, dove metto il contenuto della cartella segnalata (   " il contenuto di arduino-tiny all'interno della cartella /arduino-0022/hardware " ) ?
Io ho pensato di metterlo in questa  cartella che ho creato io, ma mi sa' che qui nasce il primo problema! (e' cosi' vero???!!!)
Si mentre scrivo capisco che qui c'e' da ragionare..... allora ricontrollo la cartella che contiene il Programma IDe ... click col destro e appare una finestra con  "controlla contenuto pacchetto" (mai vista prima), ok vediamo cosa c'e' .......
allego foto dell'albero
per non sapere bene che fare continuo con i tentativi, copia ANCHE qui il contenuto della cartella ( quello che sarebbe dovuto andare qui " ...... il contenuto di arduino-tiny all'interno della cartella /arduino-0022/hardware " ).
Creo la cartella ....../Documents/Arduino/libraries e vi metto dentro il restante cntenuto degli altri due files che ho scaricato dai link segnalato prima (http://code.google.com/p/arduino-tiny/downloads/list).
Provo di nuovo .... dovrebbe essere ok adesso.... ma nulla di fatto ancora!
dannazione!



Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 03:48 pm

......
3) quale file boards.txt hai modificato (percorso)

A parte che i file boards.txt che ho trovato all'interno delle cartelle che ho scaricato, hanno tutti i parametri corretti (arduinoisp al posto di pulou), comunque io ho controllato tutti quelli che mi sono venuti a tiro

ce ne e' uno in ..../.../Documenti/Arduino/hardware/boards.txt
uno in   ..../.../Documenti/Arduino/hardware/arduino/boards.txt
uno in ..../.../Documenti/Arduino/hardware/tiny/boards.txt



4) che voci usi nei menu dell'IDE: board selezionata, porta, ecc
vedi immagine allegata

5) sei hai provato con la voce che ti ho dato io perché la tua, oltre a quel problema di core, non aveva come hai fatto notare tu la selezione del programmatore quindi NON poteva funzionare in alcun modo

Ok ho sostituito pari pari il codice che hai postato tu  dentro ogni file boards.tx (i tre che ho segnalato sopra
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 03:59 pm
Vi aggiortno anche sulle altre prove che ho fatto:
Considerato che prima mi sono accorto di poter entrare dentro il "pacchetto" Arduino (deve essere una psecie di file compattato che si scompatta al momento della chiamata dell'eseguibile (mah!), bene, comunque ho visto che all'interno delle cartelle si trovano le medesime che abbiamo creato nella cartella Documenti/Arduino/ , cioe' i vari tiny e tools tools/avr ecc... con dentro i medesimi file , cioe' dentro si trova ad esempio il file boards.txt nelle stesse cartelle che sono anche il Documenti/Arduino, ho pensato che questa totale duplicazione faccia piu' casino che altro ( per fare ancora degli esempi i files degli sketch classici blink ecc. sono anche qui.
Allora ho cancellato tutti i file dalla cartella Documenti/Arduino, lasciandola vuota.
ho modificato (o meglio controllato ) i file boards.txt dentro ilpacchetto e ridato la via al test

collegare scheda arduino
partenza della ide
collegamento del condensatore
caricamento del programma dei tre led
UPLOAD

stesso errore

avrdude: stk500_recv(): programmer is not responding

bo!!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 04:09 pm
Uhm. Allora, secondo me c'è un errore di fondo, e cioè che hai un bel casino  :P
Troppa roba sovrammessa, poi è normale che non funzioni niente. Ad esempio, la board che ti ho dato io è corretta ma va per l'IDE 0022 e per il core Tiny 0022. Ma tu stai usando l'1.0, che funziona in un'altra maniera.

Poi è normale che cliccando sull'icona di Arduino questo parta in qualunque parte del computer tu l'abbia dato che non è un'applicazione vera e propria, ossia un file binario, ma è semplicemente un programma scritto in Java: basta aprirlo con un qualunque editor per appurarsene. Quindi cliccando su di esso non fai altro che richiamare la macchina di Java, ecco perché parte ovunque esso sia  ;)

Allora, facciamo una cosa. Prendi e cancella TUTTO quello che hai: ovviamente tutto TRANNE la tua cartella /sketchbook, che contiene i tuoi programmi.

Dopo di ciò, riscarica l'IDE di Arduino in versione 1.0 e scompattala da qualche parte.

Poi riscarica il core Tiny da quella pagina: per ora, prendi solo il primo file, ossia il core, e tralascia il resto. Al momento il resto non serve, ti creerebbe solo confusione.

Ora scompatta il core Tiny e copia le cartelle che contiene, che devono essere "tiny" e "tools", dentro alla cartella /arduino-1.0/hardware

Non devi modificare il file /arduino-1.0/hardware/tiny/boards.txt mettendo arduinoisp al posto di pololu perché nel core Tiny 1.0 è già fatto di suo.

Ora riprova.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 06:04 pm
Dunque:

ho cancellato tutto.
scaricato e scompattato il file della IDE 1,0
spostato nella cartella Documenti /Arduino
poi ho preso i file Tiny dal link di cui sopra

al momento di copiarli dentro il "pacchetto" Arduino nesce la prima differenza che incontro:
Dentro il pacchetto c'e' solola cartella Contents dentro c'e' Resources e MacOS
dentro MacOS solo  1 file
dentro Resources ci sono alcuni files e la cartella Java
dentro Java finalmente trovo la cartella hardware insieme ad altre 6 cartelle (tot 7) tra le quali libraries e tools
dentro hardware ci sono due cartelle arduino e tools (ancora una!)
qui comincio a copiare la cartella Tiny dal file appena scaricato
mentre per tools ho fatto prima la prova di sovrascrivere la cartella scompattata dal file scaricato (quello di Tiny)
e quando faccio partitre la IDE non funziona nulla.
Allora ho rifatto tutto fino qui (partendo dallo scarico di nuovo da capo! ;)
e invece di sovrasciver la cartella tools sono andato a vedere dentro le differenze tra le due (quella del file Tiny e quella originale che si porta dietro la IDE di arduino=

nella originale ci sono un sacco di cose in piu'

quindi decido di vedere fino in fondo le ramificazioni della cartella che ho scaricato della Tiny e ci trovo un unico file dentro in fondo a un albero piuttosto lungo.
(allego immagine del medesimo punto ma della cartella di IDE arduino originale)
il file mi sembra identico e si chiama eeprom.h stessa lunghezza - e dentro mi sembra uguale, ma a scanso di equivoci copio il nuovo (quello scaricato del pacchetto Tiny sopra il veccio ( quello della IDE)

Risultato:
Non cambia! purtroppo stesso errore di sempre
chiedo venia, ma mi sento negato.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 11, 2012, 07:06 pm
Considerato che vi  annoio con i miei problemi di imbranataggine, vorrei almeno spiegarvi cosa dovrebbe uscire fuori dalla programmazione del Tiny85.
Ho deciso di costruire un sistema di scatto per macchine reflex ad alta velocita' che intervenga alla presenza di un animale nel raggio di azione del sensore.Questo per fare delle foto naturalistiche ad animali selvatici, quindi difficilmente avvicinabili nella maniera tradizionale. Il Tiny dovrebbe far scattare la macchina fotografica al passaggio / presenza di un animale. Per questo ho pensato di utilizzare un sensore commerciale per antifurto che ho trovato alla recente fiera di Casale Monferrato per 3 euro, ha bisogno di 12 volt di alimentazione, ma ha abbastanza (credo) spazio al suo interno per contenere la schedina del Tiny con quel po' di elettronica che serve. Un regolatore di tensione per alimentare il Tiny e un paio di optoisolatori o due bt149 per gestire lo scatto (che si ottiene mandando a terra  i contatti della presa di comando esterna della reflex. dovrei farcela! e' un peccato utilizzare Arduino per una cosetta cosi' dove ho necessita' di 1 porta in ingresso e 2 uscite. penso che il Tiny faccia al caso mio. Speriamo di riuscire a farne la programmazione - comunque ho ordinato il programmatore usbtinyisp, a scanso di equivoci! 10 euro su ebay, manco c'e paragone coi tre giorni di combattimento con la isp di Arduino! :)
Comunque adesso e' diventata una sfida al mio amor proprio. Cavolo devo riuscirci, a costo di riesumare un pc windows (e' il colmo, pensare a windows per risolvere in problema!!)
Ragazzi grazie  buon fine settimana
Valerio
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 11, 2012, 10:55 pm
Non mi annoi, però sarei curioso di sapere cosa c'è che non va. Siccome io uso Linux e seguendo la procedura che ti ho descritto ho sempre risolto i problemi anche di chi aveva Windows, mi viene da pensare che la versione dell'IDE per Mac che scarichi abbia cartelle differenti per cui tu non riesci a ritrovare le cose dove dovrebbero essere.

Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 12, 2012, 12:56 am
Eh si Leo, infatti da subito ho notato differenze tra quanto recita la guida e la disposizione delle cartelle sul mio computer, hai visto la foto allegata all ' ultimo messaggio, dove si vedono tutte le cartelle che il programma scompattato crea da se' , sono tutte diverse da quelle a cui fai riferimento tu. C vorrebbe qualche utente mac che lo ha già affrontato questo problema, o un po' di tenacia ancora, poi aggiorniamo la guida anche per i mac. Io più di postare tutte le mie esperienze non so cosa altro fare.
Domani tenterò  di istallare la 0022 per vedere se con quella versione cambia il risultato. Poi vi aggiorno.
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 12, 2012, 01:07 am

(e' il colmo, pensare a windows per risolvere in problema!!)

guarda che probabilmente il prossimo passo della mela morsa marcia e' di chiuderti l'accesso a file e cartelle.
Su ifone e ipadde gia' lo fa, visto che si trova bene, lo fara' anche sul pc  :)
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 12, 2012, 01:15 am
L unica cosa che potranno fare sara' tentare di chiudere..... Io non conosco nessuno che abbia un iPhone o un Ipad che non lo abbia anche già sbloccato.!
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 12, 2012, 09:22 am
e secondo te ti sembra normale che una persona compra un computer e la casa produttrice gli blocca accesso a file e cartelle.
Ti sembra normale dover sbloccare perdendo la garanzia ?
Le mele sono ormai in mano a tutti io vedo muratori casalinghe prostitute
Ti assicuro che il 90 % delle mele non sono sbloccate e questo e un affossamento del tentativo di crescita delle persone
Title: Re: Giocando con l'Attiny85
Post by: astrobeed on Feb 12, 2012, 09:34 am

e secondo te ti sembra normale che una persona compra un computer e la casa produttrice gli blocca accesso a file e cartelle.


iPhone e iPad non sono dei computer, sono degli oggetti finalizzati per una ben precisa applicazione, sono bloccati per evitare che l'utente faccia qualche casino, possiamo dire la stessa cosa di Android dove non hai i permessi di root e se li applichi con un qualche exploit invalidi la garanzia.
Che poi sugli iCosi apple abbia blindato troppo, p.e. l'impossibilità di utilizzare il bluetooth come ci pare, è vero, ma chi compra Apple lo sa in anticipo e non mi pare che Apple sia in crisi di vendite visto che la gente fa file di ore per acquistare i vari i Cosi.
Non vi piace la filosofia di Apple ? Benissimo non comprate gli iCosi, non appena le vendite calano drasticamente saranno loro i primi a cambiare strategie di mercato e filosofia dei loro device.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 12, 2012, 10:54 am
Io sono del parere che la Mela sbaglia a chiudere i suoi dispositivi ma... la Mela fa anche bene a vietare l'accesso disinvolto al sistema dato che il livello di conoscenza informatica delle persone sta mediamente calando a causa proprio alle interfacce grafiche che hanno abituato la gente a cliccare su un disegnino (che ci "vendono" come icona, anche se l'icona è un santino in legno della chiesa ortodossa) per compiere un'operazione, allontanando la gente dal terminale e quindi dal dover imparare le cose prima di poterle fare.

Grazie (ironicamente parlando) a Windows e al MacOS siamo non solo abituati a qualcuno (il SO) che le cose le fa al posto tuo ma anche nell'impossibilità nonché incapacità di poter risolvere manualmente un problema se questo si presenta. Quante volte sento dire che per sistemare una periferica che su Windows fa i capricci bisogna installare e disinstallare i driver decine di volte, riavviare non so quante volte ecc...??
Quando magari sarebbe bastato aprire un terminale e sistemare le cose a mano? Ma ormai nessuno lo sa più fare né hai la possibilità di farlo, grazie alla politica di Windows di cancellare del tutto il substrato DOS in nome dell'evoluzione tecnologica! Bell'evoluzione, se poi una periferica che non vuol andare mi costringe a riavviare 10 volte il computer!

Fine OT.
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 12, 2012, 11:08 am
perche' fine ot ?

parliamo senza essere fanboy di questo o di quello, e quindi la discussione e' interessate

su android io ho sempre avuto un file browser, la partizione del sistema operativo e' bloccata, diciamo anche giustamente (pero' darei un tool ufficiale per accedervi), mentre sulle mele non c'e' proprio o sbaglio ?

non posso scattare delle foto e poi fisicamente arrivare al file e modificarlo

questo cosa mai dovrebbe proteggere, on si puo' accettare una chiusura del genere

qui parliamo di NON poter fare una cosa banalissima del genere:
- Scattare delle foto
- Metterle tutte in una sola cartellina chiamata arduino camp
- Zippare la cartellina
- spedirla a chicchessia via BT via Wi-Fi direct, ecc ecc


facendo il jailbreak, posso farlo ? (lo chiedo perche' non lo so) se nemmeno con lo sblocco posso fare una cosa del genere siamo all'assurdo
Title: Re: Giocando con l'Attiny85
Post by: menniti on Feb 12, 2012, 11:41 am
Test, è OT perché in questo Topic si gioca con gli ATtiny85, non con la mela muzzicata, se poi incidentalmente un utente usa un MAC per fare le operazioni non significa che si debba mettere in piedi qui una discussione; apri un nuovo Topic e mordiamo tutti :D
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 12, 2012, 12:17 pm
fatto http://arduino.cc/forum/index.php/topic,91574.0.html  :)
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Feb 12, 2012, 01:35 pm
Risolto ragazzi, finalmente!
Vi ringrazio dell'assistenza prestata, ho finalmente risolto la sfida con me stesso.
I problemi che ho incontrato utilizzando il mac e la procedura prodotta das Leo72  si possono riassumere cosi':
il mac quando scompatta il programma IDE di arduino lo mantiene come "pacchetto" e non ti permette di aggiungere o togliere file di configurazione al "pacchetto" salvo entrarci dentro attraverso la voce " visualizza contenuto pacchetto" che si trova facendo click col destro sull'icona del programma.
Non e' pero' necessario entrarvi dentro in quanto,  a me,  ha funzionato semplicemente aggiungendo la cartella hardware e la cartella libraries dentro lo sketchbook che io ho sistemato nella cartella Documenti/Arduino (ma ognuno lo puo' mettere dove vuole, credo!). Dentro la cartella hardware e la cartella libraries ho copiato pari pari i file previsti dalla guida senza modificare nulla, poiche nei files aggiornati che si trovano al link segnalato non hanno bisogno di modifiche.
Spero di essere utila a qualcuno che come me utilizza mac per fare funzionare il programmatore.
Ho pubblicato il video del Tiny all'opera con il programma dei tre led di Leo
Grazie a tutti
http://youtu.be/jGpgpKTAHzw
Title: Re: Giocando con l'Attiny85
Post by: DevonMiles on Feb 12, 2012, 01:45 pm
Bene! benvenuto nel club..attendiamo di vedere le foto che scatterai quando avrai completato il tuo progetto!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 12, 2012, 03:02 pm
@radiojam:
sono un bischero perché non mi è passato per la testa neanche lontanamente di suggerirti di usare la cartella /hardware dentro a /sketchbook pensando che il Mac, essendo un SO di tipo *unix, funzionasse come Linux  :smiley-sweat:
Beh, sono contento che tu abbia risolto, ed userò la tua esperienza per la prox release della mia guida che sto aggiornando in questi giorni.
Title: Re: Giocando con l'Attiny85
Post by: cgs64 on Feb 14, 2012, 10:58 pm
@leo72: scusami, quante volte può essere programmato un ATTiny ? (Mi sono scrollato tutti i posts ma non ne ho trovato riferimento, sicuramente ci sarà nel datasheet, ma non l'ho trovato  :smiley-red: !)

http://www.atmel.com/Images/doc2586.pdf (http://www.atmel.com/Images/doc2586.pdf)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 14, 2012, 11:02 pm
La flash interna degli atmel è data per 10.000 riscritture (vale anche per gli atmega328 degli arduino)
Title: Re: Giocando con l'Attiny85
Post by: cgs64 on Feb 15, 2012, 02:51 pm
@leo72:  ARGHHHHHHHH, ne ho già consumate 1.534 ! ..... me ne rimangono solo 8.466  =( =( =( =( .. circa  :smiley-mr-green:
(Parlo dell'arduino ovviamente, con i TINY non ho ancora cominciato  :smiley-fat: :smiley-sleep: )

GRAZIE
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 16, 2012, 01:31 pm
Ho aggiornato la mia guida per la programmazione degli Attiny (http://www.leonardomiliani.com/?p=435) con l'IDE di Arduino. La guida, riveduta e corretta, illustra i passaggi necessari per implementare il supporto agli Attiny25/45/85, Attiny24/44/84 e Attiny2313 nell'IDE di Arduino mediante l'uso del core Tiny.
Presenta inoltre tutte le modifiche da apportare alle librerie NewSoftSerial e TinyWire per renderle compatibili con tutti gli Attiny citati.
Include inoltre degli sketch di esempio per iniziare a programmare gli Attiny.

Alla guida sono allegati tutti i suddetti file già pronti e modificati affinché chi non ha la voglia o le conoscenze per modificarli in proprio possa semplicemente copiarli sul proprio sistema.

La guida è attualmente scritta per la versione 0022 dell'IDE e del core Tiny. A breve seguirà la guida per l'accoppiata IDE/Tiny in versione 1.0.
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 16, 2012, 02:41 pm
hai fatto un lavoro eccelso,
sto seguendo anche l'altro topic dove hai modificato la tinywire per l'84. ho letto che funziona sulla ide1.0

non ho usato ancora tiny, sarebbe l'occasione giusta per imparare e testare l'uso del nuovo ide
devo decidere un progetto da seguire, ho un display i2c che aspetta, ma devo prima vedere di farlo funzionare, non c'e' una libreria gia' fatta, come controller usa ST7032

p.s. perche' non la chiami Guida per ide 0.23 ? di certo funziona tutto anche sulla nuova
p.s.2 hai mai tentato di usare la VirtualUSB su attiny85 ?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 16, 2012, 03:35 pm

hai fatto un lavoro eccelso,
sto seguendo anche l'altro topic dove hai modificato la tinywire per l'84. ho letto che funziona sulla ide1.0

Grazie  :P

Quote

non ho usato ancora tiny, sarebbe l'occasione giusta per imparare e testare l'uso del nuovo ide

Io adesso adopero molto il Tiny84, mi sono accorto che nella maggior parte dei casi basta ed avanza.

Quote

devo decidere un progetto da seguire, ho un display i2c che aspetta, ma devo prima vedere di farlo funzionare, non c'e' una libreria gia' fatta, come controller usa ST7032

L'autore della TinyWire mi pare abbia anche fatto una versione della libreria LiquidCrystal_I2C per il Tiny85, ma non so che driver supporta.

Quote

p.s. perche' non la chiami Guida per ide 0.23 ? di certo funziona tutto anche sulla nuova

Per coerenza con la versione del core Tiny usato, che è lo 0022. Alla fine, l'unica differenza di rilievo fra la 0022 e la 0023 è solo il bootloader, per cui se uno come me che ha tutto funzionante con la 0022 non ha senso passare alla 0023.

Quote

p.s.2 hai mai tentato di usare la VirtualUSB su attiny85 ?

No. Però volevo provare la Vusb su un Tiny2313. Non provo neanche con il Tiny85 per via del fatto che il clock deve essere preciso a 12 MHz ed usare un oscillatore moddato non mi assicurerebbe risultati certi.
Ho cmq fatto qualcosa di simile, presto avrete notizie  :P
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 16, 2012, 03:39 pm
grazie delle risposte  :)
Title: Re: Giocando con l'Attiny85
Post by: cgs64 on Feb 17, 2012, 12:23 am
Grande LEO, sarà una ottimo "filo di arianna" per iniziare ad usare i Tiny.  ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 17, 2012, 11:47 am
Ho aggiornato la guida perché mi ero dimenticato di inserire le modifiche alla libreria TinyWireS. Adesso credo che non manchi nulla.
http://www.leonardomiliani.com/?p=435
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 17, 2012, 11:59 pm
presa,
Leo ma perche' non fai un topic apposito ?
>In modo che chi la segue puo' postare li'
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 18, 2012, 12:26 am
Per non disperdere le informazioni su millemila discussioni sparse qua e là. Se ci hai fatto caso, sul 1° post di questo thread ho inserito il link alla guida. Così chi cerca consigli su come programmare l'Attiny arriva a questo thread, dove ci sono una miriade di informazioni utili per chi ha voglia di leggerselo, molte delle cose che col tempo ho scoperto su questi chip.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Feb 27, 2012, 09:31 pm
Ciao, mi sto per addentrare nella programmazione degli attiny, e nel farlo innanzitutto ringrazio Leo per la guida. GRAZIE!

dopodichè, partendo dalla prima fase (comprarli..) ho notato dell'esistenza della versione /V e chiaritemi se ho capito bene, leggendo il datasheet, differiscono dall'altra solo per la max frequenza raggiungibile e per la possibilità dei /V di lavorare a 1,8V (4MHz).
Giusto?

detto questo volevo prendere un pò di 85 e di 84 da provare, li ho trovati su RS, ora li cerco anche sui soliti spaccini su ebay e vedo chi mi conviene.
La domanda è se vado tranquillo a prendere la versione /V o se c'è altro che non ho notato.

Grazie.

@Leo:
Pensi di portare avanti anche la guida per Arduino IDE 1.0 ?

Grazie!

Davide.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 28, 2012, 06:13 pm
Dipende che vuoi farci.
Le versioni /V lavorano con una tensione minima di alimentazione di 1,8V ma hanno il limite sulla max frequenza a 10 MHz.
Se pensi di usare solo l'oscillatore interno, la cosa ti farà poca differenza perché potrai farli funzionare solo a 1 o 8 MHz.

Se pensi di usare clock maggiori, ti consiglio di cercare le più recenti revisioni "A" dei micro. Su RS trovi Attiny84A che hanno il core PicoPower per cui hanno i benefici della revisione "V" (basse tensioni) ma con i vantaggi del core standard (possibilità di avere max 20 MHz).

Riguardo all'IDE 1.0 credo che le modifiche da apportare alla guida siano minime ma non ho il tempo materiale per rivederla a breve. Dovrei ricontrollare tutte le librerie esterne per cui il lavoro non è molto ma c'è da farlo, e di tempo nell'immediato non ne ho molto.

Inoltre devo capire se l'IDE 1.0 influisce negativamente sulla dimensione degli sketch anche nel caso del core Tiny, se così fosse non vedo il motivo di passare alla 1.0 quando attualmente la 0022 va più che bene per questi microcontrollori.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Feb 28, 2012, 08:45 pm
Grazie. alla fine ho trovato questi che costavano meno dei /v su RS : http://cgi.ebay.it/ws/eBayISAPI.dll?ViewItem&item=310380032231&ssPageName=ADME:L:OU:IT:1123
ne ho presi una decina. Quattro li userò subito per leggere delle celle di carico e inviare via rs485. Per cui, anche se alla fine ho preso quelli "full optional", penso che andare oltre i suoi 8MHz interni non mi serve proprio.

Capisco il problema, va bene li programmerò dalla 022. ma ho letto qualche post fa che va uguale con la 023 o sbaglio?

Ciao, Davide.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 28, 2012, 10:16 pm
Tra la 0022 e la 0023 cambia solo la versione del bootloader e del firmware del 16U2 inclusi nell'IDE ed il supporto per Windows per la nuova UNO R3.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Feb 29, 2012, 02:17 pm
Ho un problemuccio con un atTiny45....
Non riesco in nessun modo a vedere un'entrata analogica! Comando un display 3x7 seg con 3 74hc595 in cascata (uso 3 pin come output), e fino qua nessun problema, ma anche (s)cambiando i pin di input/output, gli imput li vedo solo come 0 o 1... mi son perso in un bicchier d'acqua o mi sfugge qualcosa?
Grazie!

Dimenticavo: un grazie a Leo per la guida!!!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 29, 2012, 03:41 pm
Non è che ti sei "perso" nei pin?
Attento che hanno una distribuzione diversa, fra digitali e analogici.
Come hai collegato il tutto?
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Feb 29, 2012, 04:02 pm
0-1-2 output, 3 e/o 4 input, e in input ho solo o 0 o 1. 2-3-4 output, 0 e 1 input, stessa cosa... questi numeri corrispondono a PB0->pin5, PB1->pin6, PB2->pin7..... così, insomma:

(http://www.solarbotics.com/assets/images/28904/28901-pinout_pl.jpg)

azzarola, vedo ora questa immagine:

(http://provideyourown.com/wordpress/wp-content/uploads/attiny45_85pinout1.png)

faccio altre prove, come sempre faccio le cose in fretta e mi perdo....

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 29, 2012, 04:32 pm
La piedinatura mappata dal core Tiny è questa:
Code: [Select]

// ATMEL ATTINY45 / ARDUINO
//
//                           +-\/-+
//  Ain0       (D  5)  PB5  1|    |8   VCC
//  Ain3       (D  3)  PB3  2|    |7   PB2  (D  2)  INT0  Ain1
//  Ain2       (D  4)  PB4  3|    |6   PB1  (D  1)        pwm1
//                     GND  4|    |5   PB0  (D  0)        pwm0
//                           +----+
Title: Re: Giocando con l'Attiny85
Post by: testato on Feb 29, 2012, 05:36 pm
tutte e 3 le immagini dicono la stessa cosa  :)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Feb 29, 2012, 05:55 pm
Ho messo la mappatura del core Tiny, così com'è riportata in esso, a fugare ogni dubbio.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Feb 29, 2012, 06:32 pm
Risolto, io consideravo tutti i pin come input o output, e una lettura analogica sui pin 5 e 6 è impossibile....
Ancora grazie!
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 01, 2012, 01:46 pm
Scusate se disturbo ancora...
Mi è arrivato stamane un attiny2313, per cui avevo gia predisposto una board, con quarzo 16mhz, connettore isp, e pure seriale.....
Problema1: come lo programmo usando arduino come isp?
Problema2: come scritto sopra ho la seriale, gli collego un convertitore ->ttl (che funziona senza problemi con una board 'luigino' con un 328), ma sempre con l'ide di arduino non posso fare nulla, ho a disposizione il 2313 a 1 o 8mhz
Problema3: no basta, i 2 sopra bastano per ora....
Grazie!


.....tolgo il quarzo???....

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 01, 2012, 04:30 pm

Scusate se disturbo ancora...
Mi è arrivato stamane un attiny2313, per cui avevo gia predisposto una board, con quarzo 16mhz, connettore isp, e pure seriale.....
Problema1: come lo programmo usando arduino come isp?

Con la solita tecnica: colleghi 5V al pin Vcc, GND al pin GND, poi il pin 10 al pin di reset, ed i pin 11/12/13 rispettivamente ai pin MOSI/MISO/SCK dell'Attiny2313. Il core Tiny mette già a disposizione alcune board nel file boards.txt. Se ti manca quella con la frequenza a 16 MHz, devi crearla tu. Ma ricordati di programmare prima i fuse per il clock esterno. Se ti mancano i fuse, puoi usare questo tool online:
http://www.engbedded.com/fusecalc/

Quote

Problema2: come scritto sopra ho la seriale, gli collego un convertitore ->ttl (che funziona senza problemi con una board 'luigino' con un 328), ma sempre con l'ide di arduino non posso fare nulla, ho a disposizione il 2313 a 1 o 8mhz

Come sopra. Devi programmare i fuse.

Quote

Problema3: no basta, i 2 sopra bastano per ora....
Grazie!

Bene.

Quote

.....tolgo il quarzo???....

Boh. Dipende da te.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 01, 2012, 05:30 pm


Con la solita tecnica: colleghi 5V al pin Vcc, GND al pin GND, poi il pin 10 al pin di reset, ed i pin 11/12/13 rispettivamente ai pin MOSI/MISO/SCK dell'Attiny2313. Il core Tiny mette già a disposizione alcune board nel file boards.txt. Se ti manca quella con la frequenza a 16 MHz, devi crearla tu. Ma ricordati di programmare prima i fuse per il clock esterno. Se ti mancano i fuse, puoi usare questo tool online:
http://www.engbedded.com/fusecalc/


Si, ma per usare la solita tecnica tra le board del core tiny non c'è nulla riguardo al 2313 "w/arduino as ISP"..... la board a 16mhz l'ho creata, cambiando solo i nomi, e la frequenza....ma suppongo non sia sufficente!

Programmare i fuse va un pò oltre le mie capacità...dal link per calcolarli non ci ho capito proprio nulla!!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 01, 2012, 05:48 pm
Ho rielaborato la board partendo dalla 2313 ad 8 MHz.

Code: [Select]

###########################################################################

attiny2313at16.name=ATtiny2313 @ 16 MHz

attiny2313at16.upload.using=arduino:arduinoisp
attiny2313at16.upload.maximum_size=2048

attiny2313at16.bootloader.low_fuses=0xFF
attiny2313at16.bootloader.high_fuses=0x9F
attiny2313at16.bootloader.extended_fuses=0xFF
attiny2313at16.bootloader.path=empty
attiny2313at16.bootloader.file=empty2313at8.hex

attiny2313at16.bootloader.unlock_bits=0x3F
attiny2313at16.bootloader.lock_bits=0x3F

attiny2313at16.build.mcu=attiny2313
attiny2313at16.build.f_cpu=16000000L
attiny2313at16.build.core=tiny


I fuse dovrebbero essere:
Low $FF
High $9F
Ext $FF
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 01, 2012, 06:02 pm
Provato, avrdude mi restituisce sempre

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

....faccio altri controlli sui miei collegamenti, ma in teoria è tutto a posto....

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 01, 2012, 06:30 pm
Io ho flashato un 2313 un paio di settimane fa e tutto ha funzionato perfettamente, quindi escludo problemi di core.

Carica prima lo sketch ISP.
La piedinatura è allegata qui sotto.  Collegamenti da fare:
Pin Arduino -> Pin 2313
10 -> 1
11 -> 17
12 -> 18
13 -> 19
5V -> 20
GND -> 10

Poi stacchi l'alimentazione e metti il quarzo (con i suoi condensatori) sui pin 4 e 5 del micro.
Poi devi flashare i fuse usando la stessa tecnica descritta nella mia guida ma cambiando solo il tipo di micro (ed i fuse ovviamente).
Poi chiudi l'IDE e metti la board nel file /hardware/tiny/boards.txt e salvi.
Ricolleghi l'alimentazione, riapri l'IDE ed a questo punto dovresti poter programmare il micro.

EDIT:
mi ero scordato la piedinatura.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 01, 2012, 06:43 pm

Io ho flashato un 2313 un paio di settimane fa e tutto ha funzionato perfettamente, quindi escludo problemi di core.

Carica prima lo sketch ISP.
La piedinatura è allegata qui sotto.  Collegamenti da fare:
Pin Arduino -> Pin 2313
10 -> 1
11 -> 17
12 -> 18
13 -> 19
5V -> 20
GND -> 10

Poi stacchi l'alimentazione e metti il quarzo (con i suoi condensatori) sui pin 4 e 5 del micro.
Poi devi flashare i fuse usando la stessa tecnica descritta nella mia guida ma cambiando solo il tipo di micro (ed i fuse ovviamente).
Poi chiudi l'IDE e metti la board nel file /hardware/tiny/boards.txt e salvi.
Ricolleghi l'alimentazione, riapri l'IDE ed a questo punto dovresti poter programmare il micro.

EDIT:
mi ero scordato la piedinatura.


Carico lo sketch ISP su arduino
La piedinatura la conosco, ho gia il connettore sul pcb  ... devo farlo su bredboard?
...e qua mi son perso.... scusami, ma sono zuccone!!

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 01, 2012, 07:26 pm
Non capisco questa frase: "devo farlo su bredboard?"
Il Tiny2313 va sulla breadboard, con il suo quarzo, collegato all'Arduino con lo sektch ISP caricato. A questo punto fai i passaggi illustrati.
Title: Re: Giocando con l'Attiny85
Post by: testato on Mar 01, 2012, 07:43 pm
si, ma lui ha scritto che ha gia' preparato una pcb con icsp, quindi no, non sei obbligato a farlo su una breadboard. se la tua pcb e' atta bene puoi programmare direttamente su di essa
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 01, 2012, 08:30 pm

si, ma lui ha scritto che ha gia' preparato una pcb con icsp, quindi no, non sei obbligato a farlo su una breadboard. se la tua pcb e' atta bene puoi programmare direttamente su di essa


Infatti.... comunque non sono ancora riuscito, la stringa di comando ad avrdude è corretta, ma esce regolarmente l'errore 'not in sync' e 'protocol error'....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 01, 2012, 10:12 pm
Ah, scusa. Non avevo capito questa cosa.
Allora vuol dire che c'è qualcosa che da noia al processo. Cos'hai collegato sui pin del 2313 interessati alla programmazione?
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 02, 2012, 01:10 am

Ah, scusa. Non avevo capito questa cosa.
Allora vuol dire che c'è qualcosa che da noia al processo. Cos'hai collegato sui pin del 2313 interessati alla programmazione?


credo nulla..... questo è lo schema, con anche la seriale (collegabile a connettore)

(http://utenti.database.it/ivan/tmp/AT-Tiny2313.jpg)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 02, 2012, 09:03 am
Mi pare tutto a posto (a parte che ti sei dimenticato il condensatore ceramico di disaccoppiamento da 0.1uF tra i pin Vcc e Gnd del micro, fa sempre bene metterlo  :P ).

Ricapitoliamo:
1) l'Attiny2313 ti è arrivato nuovo di fabbrica, comprato da uno store serio tipo RS o simili, quindi siamo sicuri che di suo andava ad 1 MHz (così sono i micro che Atmel distribuisce)

2) ha messo l'Attiny2313 nel circuito e creato la board virtuale nel file /hardware/tiny/boards.txt come ti ho detto.

3) Fatto questo hai usato avrdude da terminale ed hai riprogrammato i fuse del micro per usare il quarzo esterno, e l'operazione è andata a buon fine

4) aperta l'IDE ed inviato lo sketch, hai ricevuto dall'IDE l'errore di "out of synch"

Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 02, 2012, 09:49 am

Mi pare tutto a posto (a parte che ti sei dimenticato il condensatore ceramico di disaccoppiamento da 0.1uF tra i pin Vcc e Gnd del micro, fa sempre bene metterlo  :P ).

Ricapitoliamo:
1) l'Attiny2313 ti è arrivato nuovo di fabbrica, comprato da uno store serio tipo RS o simili, quindi siamo sicuri che di suo andava ad 1 MHz (così sono i micro che Atmel distribuisce)

2) ha messo l'Attiny2313 nel circuito e creato la board virtuale nel file /hardware/tiny/boards.txt come ti ho detto.

3) Fatto questo hai usato avrdude da terminale ed hai riprogrammato i fuse del micro per usare il quarzo esterno, e l'operazione è andata a buon fine

4) aperta l'IDE ed inviato lo sketch, hai ricevuto dall'IDE l'errore di "out of synch"




1) si, nuovo da un venditore 'baya' tedesco
2) si!
3) No, sono usciti un pacco di errori, mi pare 'protocol' e 'synch'
4) si

Nota: qualcosa ho ottenuto, messo il 2313 nudo sulla bredboard, arduino ISP, ho inviato uno sketch (board 2313 @1mhz), non ho avuto errori, e lo sketch gira (solo sulla bredboard, semplice sketch dove alterno accesi 2 led). Almeno ho la certezza che il 2313 funziona.... ora devo controllare per bene il mio pcb, visto che se gli monto il 2313 non va nulla!
Per provare ho tolto il quarzo dal pcb e ho lasciato i condensatori....potrebbero creare problemi?

Ti ringrazio ancora per la disponibilità, ora tempo permettendo faccio altre prove!

PS: il condensatore da 0.1 c'è, appena a sx del 7805....
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 02, 2012, 09:56 am

1) si, nuovo da un venditore 'baya' tedesco

Era per capire se era "vergine". Spesso sulla Baya appunto (ecco perché chiedevo se era di uno store "serio") si trovano chip che NON sono vergini ma già programmati: se è impostato per usare un quarzo esterno e tu non glielo metti, il micro non funziona: non parte né lo sketch né accetta il dialogo con avrdude

Quote

2) si!

Bene.

Quote

3) No, sono usciti un pacco di errori, mi pare 'protocol' e 'synch'

Ecco, qualcosa c'è.

Quote

4) si

Come sopra.

Quote

Nota: qualcosa ho ottenuto, messo il 2313 nudo sulla bredboard, arduino ISP, ho inviato uno sketch (board 2313 @1mhz), non ho avuto errori, e lo sketch gira (solo sulla bredboard, semplice sketch dove alterno accesi 2 led). Almeno ho la certezza che il 2313 funziona.... ora devo controllare per bene il mio pcb, visto che se gli monto il 2313 non va nulla!

Beh, questo mi pare tagli la testa al toro... se su breadboard riesci a programmarlo e su PCB no, c'è qualcosa sul PCB che non va. Ricontrolla le saldature, magari hai un falso contatto. Se il PCB lo hai fatto tu, controlla di avere tutte le piste a posto e di non avere microponti fra una pista ed un'altra.

Quote

Per provare ho tolto il quarzo dal pcb e ho lasciato i condensatori....potrebbero creare problemi?

Se il micro è impostato per usare l'oscillatore interno, no. Diversamente non va.

Quote

Ti ringrazio ancora per la disponibilità, ora tempo permettendo faccio altre prove!

PS: il condensatore da 0.1 c'è, appena a sx del 7805....

Credevo "appartenesse" al regolatore di tensione, di solito se ne mette una coppia anche su In e Out dell'LM7805 per eliminare disturbi ad alta frequenza. Il C di disaccoppiamento si monta invece vicinissimo ai pin Vcc e Gnd del micro. Io difatti lo disegno sempre attaccato al pin Vcc proprio per ricordarmi che poi deve stare lì.  :D
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 02, 2012, 01:09 pm
Trovato il problema.... la resistenza da 10k tra pin1 e +5, era in realtà verso gnd..... tagliata la pista e collegata al posto giusto, riesco a mandare le sketch al 2313 montato sul pcb tramite arduino ISP.....
Ora vedrò per il clock, ma sicuramente le procedure ora andranno a buon fine!

Nota: la dislocazione dei pin input/output è un pò 'strana'....
Per l'ide arduino, il pin0 corrisponde a PD0 (pin2 del 2313), pin1 al PD1 (pin3), ma poi si 'salta'
ide arduino pin4-> PD2  (pin6 2313)
                pin5-> PD3 (pin7)
..........
                pin11->PD6 (pin14)
                pin12->PB0 (pin15)
                pin13->PB1 (pin16)
........
ecc...

Ora mi faccio uno schemino, in rete non ne ho trovati......

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 02, 2012, 03:02 pm

Trovato il problema.... la resistenza da 10k tra pin1 e +5, era in realtà verso gnd..... tagliata la pista e collegata al posto giusto, riesco a mandare le sketch al 2313 montato sul pcb tramite arduino ISP.....

Bene.

Quote

Ora vedrò per il clock, ma sicuramente le procedure ora andranno a buon fine!

Sicuramente! Con la R di pull-down tenevi costantemente in reset il micro.

Quote

Nota: la dislocazione dei pin input/output è un pò 'strana'....
(...)
Ora mi faccio uno schemino, in rete non ne ho trovati......

A parte che te l'avevo allegato in uno dei miei precedenti post:
http://arduino.cc/forum/index.php/topic,56772.msg710060.html#msg710060
cmq se apri il file /hardware/tiny/cores/tiny/pins_arduino.c trovi le mappature di tutti i micro supportati dal core Tiny.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 02, 2012, 06:09 pm
Quote

A parte che te l'avevo allegato in uno dei miei precedenti post:
http://arduino.cc/forum/index.php/topic,56772.msg710060.html#msg710060
cmq se apri il file /hardware/tiny/cores/tiny/pins_arduino.c trovi le mappature di tutti i micro supportati dal core Tiny.


La piedinatura l'avevo, il problema è, ad esempio, dall'ide di arduino scegliere un pin....
#define LedPin, 12
il pin12 per l'ide, corrisponde al PB0 del 2313, pin15....
....e una tabella simile non mi pare ci sia in giro...
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 02, 2012, 06:10 pm
E' in quel file che ti ho segnalato. Lì trovi le corrispondenze tra pin digitali/analogici e piedini fisici dei micro.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 02, 2012, 06:30 pm

E' in quel file che ti ho segnalato. Lì trovi le corrispondenze tra pin digitali/analogici e piedini fisici dei micro.


L'ho gia detto che sono un zuccone...

Code: [Select]
// On the Arduino board, digital pins are also used
// for the analog output (software PWM).  Analog input
// pins are a separate set.

// ATMEL ATTINY2313
//
//                   +-\/-+
//      (D 17) PA2  1|    |29  VCC
// RX   (D  0) PD0  2|    |19  PB7 (D  16)
// TX   (D  1) PD1  3|    |18  PB6 (D  15)
//      (D  2) PA1  4|    |17  PB5 (D  14)
//      (D  3) PA0  5|    |16  PB4 (D  13)*
// INT0 (D  4) PD2  6|    |15  PB3 (D  12)*
// INT1 (D  5) PD3  7|    |14  PB2 (D  11)*
//      (D  6) PD4  8|    |13  PB1 (D  10)
//     *(D  7) PD5  9|    |12  PB0 (D  9)
//             GND 10|    |11  PD6 (D  8)
//                   +----+
//
// * indicates PWM port
Title: Re: Giocando con l'Attiny85
Post by: skalash on Mar 02, 2012, 08:17 pm
Salve a tutti sono nuovo da queste parti e visto che l'argomento erano gli attiny85 vi chiedo velocemente se per programmare gli attiny è necessaria per forza la IDE 0022  non c'è modo di usare la 1.0?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 02, 2012, 11:01 pm
Puoi usare l'IDE 1.0 con il core Tiny 1.0 ma molte delle modifiche che ho segnalato nella mia guida alle librerie di arduino per adattarle all'uso sui Tiny potrebbero non essere più valide.

Ancora non ho avuto il tempo di dare un'occhiata a tutto e verificare le cose per la nuova versione.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Mar 07, 2012, 04:35 pm
Leo, una stupidagine:
sulla guida, la dove dici di modificare NewSoftSerial.cpp in realtà è NewSoftSerial.h.

Ciao!

p.s. per ora ho solo caricato il blink con 3 LED e va, per cui anche per me tutto OK.
Ora mi preparo una schedina, dove leggo una cella di carico e invio su rs485, per cui dovrò usare la Newsoftserial modificata.
Grazie ancora per la guida.

Davide.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 07, 2012, 07:03 pm

Leo, una stupidagine:
sulla guida, la dove dici di modificare NewSoftSerial.cpp in realtà è NewSoftSerial.h.

Ciao!

Un qui-pro-quo  ;)
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Mar 07, 2012, 10:31 pm
Ciao,
sto cercando una cosa simile a questa:
(http://tinkerlog.com/wordpress/wp-content/uploads/2010/08/DSC_0084.jpg)

Purtroppo nel negozio online non la vendono più. (http://store.tinkerlog.com/store/index.php?main_page=products_all&zenid=7daff9926822709312e800a644ec9959)

Conoscete qualcosa di simile?
Mi serve per poter implementare un RTC con batteria e un modulo per il segnale DCF77, tutto comandato dal Tiny che a sua volta dialogherà con un Arduino fornendo data e ora.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 07, 2012, 10:44 pm
Vista l'esiguità dei componenti, potresti assemblare tu qualcosa su una 1000fori, mi pare più economico.
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 08, 2012, 05:37 pm
Ho ancora problemi con gli attiny, in questo caso un attiny44....
Costruita la board per fare le prove, i pin sono mappati correttamente, ho provato su una barra da 10 led a farli accendere in sequenza e tutto va bene (l'undicesimo, D10, è sulla board, e va bene)!
I problemi sono con gli input....

// ATMEL ATTINY84 / ARDUINO
//
//                           +-\/-+
//                     VCC  1|    |14  GND
//             (D  0)  PB0  2|    |13  AREF (D 10)
//             (D  1)  PB1  3|    |12  PA1  (D  9)
//                     PB3  4|    |11  PA2  (D  8)
//  PWM  INT0  (D  2)  PB2  5|    |10  PA3  (D  7)
//  PWM        (D  3)  PA7  6|    |9   PA4  (D  6)
//  PWM        (D  4)  PA6  7|    |8   PA5  (D  5)        PWM
//                           +----+

Dall'ide di arduino, coi pin D8-D9-D10 piloto 3 display 7 segmenti (passando per 3 74hc595), e qua tutto bene....
Rilevo 2 temperature ponendo in input dall'ide i pin D3 e D4 (PA7 e PA6, pin fisici dell'attiny 6 e 7), e l'input ce l'ho su D6 e D7 (PA4-PA3, pin fisici 9-10)......

Ho pure provato a mettere l'array di display su D5 D6 D7, e le cose cambiano, ma sempre in modo assurdo..... Se pongo in input D1, leggo su D9, input su D2, leggo su D8....

Qualche idea?

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 08, 2012, 10:51 pm
La mappatura digitale non è uguale a quella analogica. Se leggi delle temperature userai i pin come analogici, quindi la mappatura cambia. PA1 è A1 che è D9, torna con ciò che ti accade.
analogRead(1) legge dal piedino fisico 12 mentre digitalRead(1) legge dal piedino fisico 3

Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 09, 2012, 01:19 am
Quindi....
-tutti pin (da 1 a 13 tranne il 4 che è il reset), possono essere output digitali o input digitali (e lo sono, provato)!
-Da PA0 a PA7 (pin fisici da 13 a 6) possono anche essere input analogici

ma.... esempio

#define ledpin 1
#define sensepin 1

void setup(){
pinMode(ledpin, OUTPUT);
pinMode(sensepin, INPUT);
}

void loop(){
//........
}

è come scrivere

void setup(){
pinMode(1, OUTPUT);
pinMode(1, INPUT);
}


Capito, basta puntare agli ingressi analogici con

#define sensePin A1

...forse ho definitivamente capito!
Grazie!

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 09, 2012, 06:35 am
Tutti i pin digitali sono sempre input e output. In più alcuni hanno anche funzionalità di input analogico: questo però non vale per tutti i micro e per tutti i pin, devi fare riferimento al datasheet.

Non fare #define con i pin analogici, essi sono già costanti predefinite, non hai bisogno di dichiararli 2 volte, oltretutto creando confusione. Dichiara i pin digitali come const, è più corretto.

Quindi... NO a cose del genere:
Code: [Select]

#define pinA 1
#define pinB A1


Sì a cose del genere:
Code: [Select]
const byte pinA=1;
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Mar 09, 2012, 07:31 pm
Ciao, domandina:
un ATtiny85 alimentato con 5VDC, da nuovo ha l'Aref settato a Vin (5Vdc)?

e aggiungo: si usa anche con l'attiny
"analogReference(INTERNAL);" per settare l'Aref a 1,1V?
e questo è indipendente da Vin, giusto? (cioè, se alimento a 5, o a 3,3V..)

EDIT: e aggiungo un'altra domandina ina ina..
se imposto l'Aref a 1,1V (sempre se si può su ATtiny85..) cosa succede se per pochi secondi arrivano su un pin analogico diciamo 1,5V?
Sto cercando di tarare una cella di carico, quindi mi serve sapere quanto posso spingermi al limite per aumentare la risoluzione.

Grazie, Davide.

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 09, 2012, 11:04 pm
Sì, anche il Tiny85 ha il riferimento interno a 1,1V. Ed anche a 2,56V
Questi dovrebbero essere i valori richiamabili:
Code: [Select]
  ADC_Reference_VCC                             = B000,
  ADC_Reference_External                        = B001,
  ADC_Reference_Internal_1p1                    = B010,
  ADC_Reference_Reserved_1                      = B011,
  ADC_Reference_Internal_2p56                   = B110,
  ADC_Reference_Internal_2p56_Bypass_Capacitor  = B111

Ho copia-e-incollato direttamente da un file del core, non ho mai provato il riferimento interno sui Tiny. Di default usa quello esterno.
Se setti il riferimento interno, questo è indipendente dalla tensione di alimentazione. Non so la tollerenza però, visto che ha un riferimento a 2,56V, prova ad usare quello al posto di quello da 1,1V.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Mar 09, 2012, 11:19 pm
Grazie Leo delle info. non sapevo della seconda opzione a 2,56. Il fatto è che alimentando la cella di carico con 5V (ho quelli..) in uscita al massimo, giocando con il trimmer di taratura, riesco ad ottenere 2,5V, ma penso che più mi avvicino a questi 2,5V, più la linearità ne risente. (non ho prove, ma solo supposizione logica..)
Indi per cui mi sa che prima provo con l'1,1V. comunque la granularità rimane sempre di 1,1 / 1024, quindi se taro l'operazionale per avere con 100Kg circa 1V dovrei avere una buona risoluzione da 0 a 100Kg. Se non erro 100/1024 = 0,097 Kg, cioè a palmoni diciamo un etto. in realtà meno, perchè dovrei contare che zero peso ce l'ho a 0,2V e che 1,1V all'incirca corrisponde a diciamo 120Kg. quindi la risoluzione di 1024 punti diciamo (sempre a palmoni..) che vale per 140Kg di range, quindi 140/1024=0,136. La risoluzione è nella peggiore delle ipotesi di un etto e mezzo. Va benissimo per il mio scopo.

Ehm..scusate ragionavo a voce alta...
Grazie, Davide.
Title: Re: Giocando con l'Attiny85: problemi di upload
Post by: l1q1d on Mar 11, 2012, 06:32 pm
Ciao a tutti, sto tentando inutilmente da tempo di programmare un tiny85 utilizzando un arduino 1 come programmer.

Ho collegato tutti i contatti e messo un condensatore da 10 uF tra il reset e il ground. Il risultato però è:
Code: [Select]
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny85 -cstk500v1 -P/dev/tty.usbmodem621 -b19200 -Uflash:w:/var/folders/ly/j3j2tl4j6rn9xgd_z_lrwcnr0000gn/T/build8828345856879671919.tmp/Blink_tiny.cpp.hex:i

avrdude: Version 5.11, compiled on Sep  2 2011 at 18:52:52
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/mfm/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/tty.usbmodem621
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20]
avrdude: Send: 0 [30]   [20]
avrdude: Send: 0 [30]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
         AVR Part                      : ATtiny85
         Chip Erase delay              : 4500 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : possible i/o
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     6     4    0 no        512    4      0  4000  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6    32    0 yes      8192   64    128  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
avrdude: Send: A [41] . [80]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [02]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [81]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [01]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [82]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [12]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [98]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
avrdude: Send: A [41] . [84]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [85]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [86]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [87]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [89]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: Send: A [41] . [81]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [01]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [82]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [12]
avrdude: Recv: . [10]
avrdude: Send: B [42] . [14] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] @ [40] . [02] . [00] . [00] . [00]   [20] . [00]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: Send: P [50]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding



per la cronaca uso un mac con lion. Qualche idea?
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 11, 2012, 09:21 pm
Sto tentando di cambiare i fuse dell'Attiny85 seguendo le vostre specifiche:
Usando Arduino Uno come isp, collegato alla breadboard, IDE Arduino 1.0 con il comando:

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

risposta:
avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude done.  Thank you.

la porta seriale è quella giusta, il problema è sempre IDE 1.0 ??
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 11, 2012, 10:06 pm
@liquid:
il tuo problema mi pare che risieda nell'impossibilità di comunicare con l'Arduino come programmatore ("programmer is not responding"). Non conosco il Mac, hai mai programmato via ISP un micro su breadboard prima?

@amario:
il tuo pare invece un problema di sincronismo quindi un problema software che potrebbe risiedere nella comunicazione dello sketch ArduinoISP verso il micro target o verso il PC. Prova mettendo l'Optiboot 4.4 sul 328 dell'Arduino.
Title: Re: Giocando con l'Attiny85
Post by: l1q1d on Mar 11, 2012, 10:16 pm
Purtroppo non ho mai provato a usare arduino come isp per altri micro, domani provo da windows su macchina virtuale e vedo se ho lo stesso problema. In quel caso idee?
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 11, 2012, 10:37 pm
Grazie leo per la risposta, il 328 ha l'optiboot, la scheda è una UNO Rev.3 e con la stessa configurazione avevo caricato il bootloader su 328 ed ha funzionato senza problemi, ho usato però lo sketch Tinyisp, perché mi ha funzionato correttamente solo con quello.  :|
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 11, 2012, 10:41 pm
@liquid:
Volevo capire se era un problema riconducibile ai Tiny oppure all'Arduino in sé.
Prova anche usando lo sketch TinyISP allegato alla guida di Testato da usare al posto dell'ArduinoISP
http://arduino.cc/forum/index.php/topic,88546.0.html
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 12, 2012, 08:29 am
Ho riprovato questa volta ho usato ArduinoISP dell'IDE 1.0 e ha funzionato, non so perché avevo provato con Tinyisp, forse perché quando ho caricato il bootloader su 328 funzionava solo con quello.
Conclusione con ARDUINO UNO Rev3, IDE 1.0 , ArduinoIsp, Attiny85 su breadboard con :
PIN ATTINY85 PIN ARDUINO
4                   GND
8                   +5V
1                   10
5                   11
6                   12
7                   13
fuse modificati correttamente:

C:\Users\mario\Desktop\Arduino\arduino-1.0\hardware\tools\avr\bin>avrdude -P COM
23 -C avrdude.conf -U lfuse:w:0xe2:m -p t85 -c stk500v1 -b 19200

avrdude: please define PAGEL and BS2 signals in the configuration file for part
ATtiny85
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.13s

avrdude: Device signature = 0x1e930b
avrdude: reading input file "0xe2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.12s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xe2:
avrdude: load data lfuse data from input file 0xe2:
avrdude: input file 0xe2 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.04s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.
:D  :D  :D  :D  :D  :D  :D  :D
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 12, 2012, 09:04 am
Quindi, ricapitoliamo.

Con ARDUINO IDE 1.0:
- lo sketch ArduinoISP funziona per programmare i Tiny in standalone ma NON funziona con gli Atmega328
- lo sektch TinyISP funziona con gli Atmega328 ma NON funziona con i Tiny?

Curioso... Bisognerebbe avere altre verifiche.
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 12, 2012, 09:14 am
Da quanto mi risulta è così, attendo anch'io altre conferme  :smiley-roll:
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 13, 2012, 09:57 am
Programmazione Attiny85:
Configurazione come precedente lato hardware.
Software Tinyisp, con ArduinoIsp non funziona.
Board: ATtiny85 @ 8 MHz  (internal oscillator; BOD disabled)
Programmer : Arduino as Isp
Sketch:
Code: [Select]
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
  Attiny85
  This example code is in the public domain.
*/

void setup() {               
  // initialize the digital pin as an output.
  // Pin 0 has an LED connected on most Attiny85:
  pinMode(0, OUTPUT);     
}

void loop() {
  digitalWrite(0, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(0, LOW);    // set the LED off
  delay(1000);              // wait for a second
}


il blink è corretto, circa 1 secondo

A voi le consclusioni.
Title: Re: Giocando con l'Attiny85
Post by: dalubar on Mar 13, 2012, 10:17 pm
Quote

Con ARDUINO IDE 1.0:
- lo sektch TinyISP funziona con gli Atmega328 ma NON funziona con i Tiny?


Io programmo senza problemi ATtiny84 e 85 con TinyISP...

EDIT: con ArduinoISP ottengo sempre "out sync" sia con il 328 che con gli ATtiny

Preciso che io eseguo l'operazione di trasferimento direttamente da IDE 1.0 (anche il burn del Bootloader per cambiare i fuse), senza mai usare il comando avrdude da shell.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 13, 2012, 10:45 pm
Uhm... c'è una bella casistica.. che però si contraddice  :smiley-sweat:
Bisognerebbe a questo punto postare la configurazione del proprio sistema, cominciando dalla versione dell'IDE e del core Tiny usati, il modello di Arduino, la versione del bootloader montata sull'Arduino, lo sketch ISP usato, il tipo di SO usato e le versioni dei tool della toolchain Avr, altrimenti non ne veniamo fuori
Title: Re: Giocando con l'Attiny85
Post by: testato on Mar 13, 2012, 10:50 pm
in piu' c'e' anche il discorso SO, perche' su linux come tu stesso hai detto, la toolchain e' diversa.

io non ho ancora Attiny a disposizione quindi non posso provare, posso solo confermare quanrto esposto nella mia guida, e cioe' che arduinoisp.ino, quindi ide1.0, su windows non funziona, testato con 328P e con 8A, mentre il tinyisp.ino funge
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 13, 2012, 10:53 pm
@testato:
sì, ho specificato di... specificare l'SO proprio perché la versione per Windows include la toolchain mentre quella per Linux no.
Title: Re: Giocando con l'Attiny85
Post by: testato on Mar 13, 2012, 11:00 pm
non avevo letto bene  :)
resta assurdo il comportamento del team su questa questione, cioe' arduinoisp non funziona UFFICIALMENTE, perche' l'autore di tinyisp mi ha assicurato di aver avvertito il team, e non lo sistemano.
che strano  :smiley-roll-sweat:
Title: Re: Giocando con l'Attiny85
Post by: dalubar on Mar 13, 2012, 11:20 pm
Do' il mio contributo:

Configurazione funzionante testata su ATMega328 e modelli ATtiny84/85:









Versione IDE:1.0
Core tiny:arduino-tiny-0100-0012 (ma anche altre versioni)
Modello Arduino:Uno
Versione bootloader:??? (cmq quella originale di Arduino UNO)
Sketch ISP:TinyISP di Testato
Sistema Operativo:Window 7
Toolchain:avr-gcc 4.3.2; binutils-avr 2.19; avr-libc 1.6.4

Title: Re: Giocando con l'Attiny85
Post by: testato on Mar 13, 2012, 11:38 pm
Bootloader: che versione di ArduinoUNO hai ?

ci sono 3 release, le prime due hanno il 4.0 e la UNOr3 ha il 4.4

Toolchain: avendo windows e' fissa, integrata nell'installazione, oppure l'hai installata a parte ?

grazie del test  :)
Title: Re: Giocando con l'Attiny85
Post by: dalubar on Mar 14, 2012, 12:00 am
Bootloader: ho la prima release di UNO quindi di certo sarà la versione 4.0.

Toolchain: credo sia irrilevante. Nel senso che ho usato per mesi senza problemi quella fissa, integrata nell'installazione dell'IDE 1.0, solo qualche giorno fa' ho installato l'ultima versione di WinAVR (che cmq aveva le stesse versioni pubblicate sopra) ma solo per i motivi spiegati nel post:
http://arduino.cc/forum/index.php/topic,96135.0.html (http://arduino.cc/forum/index.php/topic,96135.0.html)

Prego, è un piacere collaborare :-)
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 14, 2012, 08:24 am
Per precisare, S.O. da me usato Windows 7 64bit ultimate, IDE 1.0 , Arduino UNO Rev.3, Tinyisp di Testato, libreria da http://code.google.com/p/arduino-tiny/ ultima release
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 14, 2012, 09:50 am
@dalubar:
le versioni dei tool della toolchain non sono indifferenti. Ci sono diversi bug sulle versioni recenti e su SO come Linux te ne accorgi molto più che con Windows, dato proprio che sono strumenti in continuo aggiornamento rispetto alla versione statica distribuita con l'IDE.

@testato:
credo che la questione Optifix dimostri la lentezza con cui certe scelte sono prese dal team. C'è voluto 1 anno esatto prima di rilasciare un bootloader che funzionasse con lo sketch ArduinoISP (dal settembre 2010, mese in cui uscì l'Arduino UNO, fino all'anno successivo, quando hanno iniziato a vendere l'Arduino UNO R3). E non parliamo del fatto che quel bootloader non solo aveva il problema con l'ArduinoISP ma anche il bug, ben più grave, relativo agli sketch di dimensioni maggiori di 30K.
E' un po' come quando qualche mese fa chiesi perché non allegavano anche all'IDE per Linux la toolchain ufficiale Atmel e lo stesso Massimo mi rispose che erano i team di sviluppo delle distribuzioni che non volevano. Mi pare une specie di scaricabarile. Mio personalissimo punto di vista.
Title: Re: Giocando con l'Attiny85
Post by: testato on Mar 15, 2012, 07:20 pm
non sapevo del primo parto lungo essendo meno di un anno che frequento
interessante concetto  :)
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 15, 2012, 08:30 pm
Come detto qui:
http://arduino.cc/forum/index.php/topic,96135.15.html

ho modificato avrdude.conf aggiungendo nelle sezioni Attiny84 e Attiny85
pagel = 0xB3;
  bs2 = 0xB4;     

non esce più il warning del pagel caricando gli sketch su Attiny85    XD
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Mar 17, 2012, 04:23 pm
ciao Leo, tempo fa avevo sentito che avevi risolto i problemi sulla connessione seriale in ricezione per i tiny, ma non l'ho ancora provato :smiley-sweat: funziona?
sono stato un po' assente dal forum ultimamente, ho visto che hai messo un link con una cartella con tanta bella roba sui tiny, c'è già dentro la libreria per la seriale aggiornata? grazie! ;)
Title: Re: Giocando con l'Attiny85
Post by: l1q1d on Mar 18, 2012, 07:46 pm
Configurazione funzionante su mac:
board: arduino 1
ide: 1.0
programmer: tinyisp

e per velocizzare il flashing ho fatto un bel programmer con una millefori  :smiley-mr-green:

Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 18, 2012, 11:15 pm

ciao Leo, tempo fa avevo sentito che avevi risolto i problemi sulla connessione seriale in ricezione per i tiny, ma non l'ho ancora provato :smiley-sweat: funziona?
sono stato un po' assente dal forum ultimamente, ho visto che hai messo un link con una cartella con tanta bella roba sui tiny, c'è già dentro la libreria per la seriale aggiornata? grazie! ;)

Funziona tutto. Se scarichi l'ultima versione della guida dal mio sito (www.leonardomiliani.com sez. arduino) ci sono tutte le modifiche per far funzionare correttamente I2C e Seriale sui Tiny.
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Mar 20, 2012, 07:48 pm
Avete provato se con la nuova toolchain di ATMEL si possono programmare i tiny con ArduinoISP?
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 21, 2012, 12:30 am

Avete provato se con la nuova toolchain di ATMEL si possono programmare i tiny con ArduinoISP?


Si, provato con attiny85, 84 e 44!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 21, 2012, 06:36 am


Avete provato se con la nuova toolchain di ATMEL si possono programmare i tiny con ArduinoISP?


Si, provato con attiny85, 84 e 44!


Quale toolchain hai usato, quella scaricata dal sito Atmel, quella costruita con lo script di Avrfreaks o quella distribuita con l'IDE 1.0.1RC? Su che SO?
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 21, 2012, 08:58 am

Quale toolchain hai usato, quella scaricata dal sito Atmel, quella costruita con lo script di Avrfreaks o quella distribuita con l'IDE 1.0.1RC? Su che SO?


Sito Atmel, funziona sia con la 0.22 che 0.23, Windows 7 x64..... provata con la 0.22 anche su un netbook con XP pro, tutto ok con un attimy84.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 21, 2012, 09:01 am
Ah, ma tu hai Windows. Quindi l'hai sostituita semplicemente a quella contenuta nell'IDE, giusto?
Title: Re: Giocando con l'Attiny85
Post by: ivan64 on Mar 21, 2012, 09:03 am

Ah, ma tu hai Windows. Quindi l'hai sostituita semplicemente a quella contenuta nell'IDE, giusto?


Esatto!
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Mar 24, 2012, 09:09 am

Configurazione funzionante su mac:
board: arduino 1
ide: 1.0
programmer: tinyisp

e per velocizzare il flashing ho fatto un bel programmer con una millefori  :smiley-mr-green:




Ciao Liquid, hai risolto il problema con un programmatore USBTiny, ho capito bene?
Anche io ho combattuto parecchio con un mac, arduino, IDE 1.0, ed i Tiny85 da programmare, se vai indietro nelle pagine vedi quanto ho tribolato!!
Volevo dirti che ho risolto, utilizzando Arduino as ISP, utilizzando la IDE 0022, quella che viene proposta nella maggior parte delle guide, mentre con la 1.0, non sono mai andato da nessuna parte!
Ciao
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Mar 24, 2012, 11:01 am


ciao Leo, tempo fa avevo sentito che avevi risolto i problemi sulla connessione seriale in ricezione per i tiny, ma non l'ho ancora provato :smiley-sweat: funziona?
sono stato un po' assente dal forum ultimamente, ho visto che hai messo un link con una cartella con tanta bella roba sui tiny, c'è già dentro la libreria per la seriale aggiornata? grazie! ;)

Funziona tutto. Se scarichi l'ultima versione della guida dal mio sito (www.leonardomiliani.com sez. arduino) ci sono tutte le modifiche per far funzionare correttamente I2C e Seriale sui Tiny.

ok grazie mille! ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 24, 2012, 11:49 am

Ciao Liquid, hai risolto il problema con un programmatore USBTiny, ho capito bene?
Anche io ho combattuto parecchio con un mac, arduino, IDE 1.0, ed i Tiny85 da programmare, se vai indietro nelle pagine vedi quanto ho tribolato!!
Volevo dirti che ho risolto, utilizzando Arduino as ISP, utilizzando la IDE 0022, quella che viene proposta nella maggior parte delle guide, mentre con la 1.0, non sono mai andato da nessuna parte!
Ciao

E' venuto fuori che lo sketch ArduinoISP contenuto nell'IDE 1.0 non funziona come programmatore ISP c'è un thread aperto da Testato per la soluzione. Personalmente non uso questa versione perché a me la 0022 va perfettamente, compreso lo sketch ArdunoISP.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Mar 24, 2012, 02:23 pm
Ciao Leo buon giorno,
e grazie ancora per l'aiuto che mi hai fornito in passato. Si appunto, ho avuto modo di riprovare per conferma in un secondo tempo ed e' chiaro che la IDE 1.0 non va bene per programmare ISP via Arduino, mentre la 0022 funziona senza problemi, ho fatto diverse prove anche con il mega328 ed ha funzionato sempre, confermo.
Ho invece il  problema di utilizzare avrdude con il mac, non mi ricordo piu' come avevo fatto per passare l'istruzione da finestra di terminale al tiny85 per settarlo ad 8mhz. la programmazione tramite IDE mi funziona, carico i vari sketch senza problemi, ma il tiny85 mi e' rimasto a 1mhz.

P.S. possibile che la velocita' sia veramente ridotta di 1/8? mi spiego meglio, come mai l'istruzione    ** dalay (1000) **  ci impiega 8 secondi ad essere eseguita?  che stranezza e'? forse e' perche' ho utlizzato per la programmazione la board  AT tiny 85 @ 8 mhx BOD disabled ? dovrei utilizzare la voce  @ 1 mhz ?? 
- mentre scrivo naturalmente mi rispondo da me : fai una prova e vedi da solo la soluzione, pirla!
ok ma lo posto ugualmente questo mess, in quanto potrebbe essere utile a qualcuno che fa la stessa cosa che ho tentato di fare io!
vi postero' cosa ho scoperto cambiando la voce di board!
saluti a tutti  e buon divertimento
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 24, 2012, 02:42 pm
Nella mia guida ci sono i parametri da passare ad avrdude per impostare i fuse dell'Attiny85 per mandarlo a 8 MHz.
Se compili uno sketch per un micro ad 8 MHz e lo esegui su un micro a 1 MHz, è normale che poi i tempi non siano corretti: i timing del codice vengono impostati per una frequenza che non corrisponde a quella reale.
Title: Re: Giocando con l'Attiny85
Post by: radiojam11 on Mar 24, 2012, 03:00 pm
Si confermo dopo la prova sperimentale, programmando con la board alla giusta velocita', le istruzioni vengono eseguite nei tempi regolari, cioe' per esempio dalay (1000) dura veramente 1 secondo.
bene, altra cosa che ho imparato!
definito questo, non ho neppurel'esigenza di passare ad 8 mhz, tanto le cose che deve fare per i miei progetti sono molto piu' lente!, nell'ordine di millisecondi, quindi ci sto' dentro anche a 1 mhz.
grazie
Title: Re: Giocando con l'Attiny85
Post by: amario57 on Mar 24, 2012, 05:09 pm
Ho provato a programmare Attiny85 con IDE 1.01.-rc1 aggiornato con l'ultimo compilatore Atmel come da post
http://arduino.cc/forum/index.php/topic,96976.0.html
funzionante correttamente nelle prove "normali"
usando il nuovo sketch ArduinoIsp mi ritorna l'errore:
In file included from c:..../arduino/arduino-1.0.1-rc1/hardware/tools/avr/lib/gcc/../../avr/include/util/delay.h:46,
                 from c:....../arduino/arduino-1.0.1-rc1/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:39,
                 from C:\........\arduino-1.0.1-rc1\hardware\tiny\cores\tiny\/wiring_private.h:32,
                 from C:\........\arduino-1.0.1-rc1\hardware\tiny\cores\tiny\WInterrupts.c:37:
c:............/arduino-1.0.1-rc1/hardware/tools/avr/lib/gcc/../../avr/include/math.h:426: error: expected identifier or '(' before 'double'
c:............/arduino-1.0.1-rc1/hardware/tools/avr/lib/gcc/../../avr/include/math.h:426: error: expected ')' before '>=' token

i punti nel path è per semplificare

Per curiosità, ho ripristinato il compilatore originale e la programmazione con ArduinoIsp funziona correttamente, quindi è solo un problema della patch del compilatore.
Importante è il fatto che hanno corretto ArduinoIsp, quindi non c'è bisogno con questa versione di usare TinyIsp.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Mar 24, 2012, 05:16 pm
TinyISP era appunto una versione sistemata per funzionare con la 1.0.
La 1.0.1 riporta nel changelog il fix allo sketch ArduinoISP, quindi non è più necessario usare TinyISP.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Apr 06, 2012, 10:34 am

TinyISP era appunto una versione sistemata per funzionare con la 1.0.
La 1.0.1 riporta nel changelog il fix allo sketch ArduinoISP, quindi non è più necessario usare TinyISP.

Ma TinyISP con 1.0 serviva solo per i Tiny o si poteva usare anche per gli altri micro? Poco fa un utente (a cui ho consigliato di scaricarsi la ArduinoISP101LM  ;)) mi ha scritto "Programmo con facilità che definirei "scandalosa" e a diverse frequenze di clock: ATtiny85, ATtiny84, ATMega328, ATMega1284".

Lo stesso utente mi ha dato una notizia che ignoravo: da quanto mi risulta noi no siamo riusciti a variare i fuses dei tiny da IDE, forse a motivo dei bootloader finti del core; lui sostiene che con la 1.0, inviando il bootloader (stessa tecnica ISP del 328P) programma tranquillamente i fuses dei tiny; conferme? qualcuno può aggiungere approfondimenti per favore?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 06, 2012, 01:23 pm

Ma TinyISP con 1.0 serviva solo per i Tiny o si poteva usare anche per gli altri micro?

Veramente credo che quello sketch si chiamasse TinyISP per dire che era "ridotto" rispetto all'ArduinoISP, non che fosse destinato a programmare gli Attiny. Difatti Testato lo aveva avuto da un utente del forum internazionale ed era una rielaborazione dell'ArduinoISP per aggirare il problema che la versione allegata alla 1.0 non funzionava.

Quote

Poco fa un utente (a cui ho consigliato di scaricarsi la ArduinoISP101LM  ;)) mi ha scritto "Programmo con facilità che definirei "scandalosa" e a diverse frequenze di clock: ATtiny85, ATtiny84, ATMega328, ATMega1284".

Ma riferito a quale sketch? TinyISP o ArduinoISP101LM?

Quote

Lo stesso utente mi ha dato una notizia che ignoravo: da quanto mi risulta noi no siamo riusciti a variare i fuses dei tiny da IDE, forse a motivo dei bootloader finti del core; lui sostiene che con la 1.0, inviando il bootloader (stessa tecnica ISP del 328P) programma tranquillamente i fuses dei tiny; conferme? qualcuno può aggiungere approfondimenti per favore?

Non confermo e non smentisco (sono ancora mezzo arrocchettato di salute per poter mettermi a spippolare coi micro, oggi) però la cosa ha una sua logica, se pensi che con la 1.0 è cambiato il modo in cui l'IDE interagisce con avrdude.
Title: Re: Giocando con l'Attiny85
Post by: menniti on Apr 06, 2012, 01:28 pm
Riferito a TinyISP

Sarebbe una gran cosa quando confermerai..... forse ciò che mi convincerebbe a cercare di far funzionare l'1.0.1-rc1 :smiley-sweat:
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 06, 2012, 01:35 pm
Credo che la facilità con cui il tipo programma i vari micro non dipenda dallo sketch usato (d'altronde, quello è un firmware che risiede sull'Arduino) ma proprio dalla versione dell'IDE. Dalla 1.0 hanno cambiato la gestione degli MCU rendendola più snella: l'IDE è più slegata dall'hardware rispetto alle versioni precedenti, che bene o male erano incentrate sull'Arduino e basta.
Title: Re: Giocando con l'Attiny85
Post by: testato on Apr 06, 2012, 02:11 pm
calcolando che con la ide 1 si caricano ufficialmente micro senza bootloader, sarebbe ottimo che gestisse i fuse.
Diventerebbe tutto piu' user friendly, poter caricare lo sketch su un micro vergine modificandogli anche i fuse in un solo colpo.

e' da testare  :)
Title: Re: Giocando con l'Attiny85
Post by: menniti on Apr 06, 2012, 03:45 pm

calcolando che con la ide 1 si caricano ufficialmente micro senza bootloader, sarebbe ottimo che gestisse i fuse.
Diventerebbe tutto piu' user friendly, poter caricare lo sketch su un micro vergine modificandogli anche i fuse in un solo colpo.

e' da testare  :)

No, aspetta, a me ha spiegato e mi pare di averlo specificato, che lui cambia i fuse caricando il bootloader, che io ricordo essere una specie di file finto, poi carica gli sketch, tutto via ISP esattamente come facciamo con il 328P.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Apr 06, 2012, 08:40 pm
Ciao! leggendo sul datasheet dell'ATtiny85, a pag.127, sta scritto chre si può usare il riferimento interno per gli ADC sia di 1.1V che di 2.56V! (pensavo solo l'1.1..)
ovviamente mi serve quello a 2.56...
si abilita sempre con:
analogReference(INTERNAL2V56);     ?

altra domanda, una volta settato a 1.1V, o a 2.56V, se per sbaglio arrivano su un pin analogico 5V, cosa mi devo aspettare? brucio il convertitore? no, ma mi arriva un valore inaspettato?

grazie..
p.s. lo chiedo perchè non ho modo di provare...
Title: Re: Giocando con l'Attiny85
Post by: testato on Apr 06, 2012, 08:45 pm


calcolando che con la ide 1 si caricano ufficialmente micro senza bootloader, sarebbe ottimo che gestisse i fuse.
Diventerebbe tutto piu' user friendly, poter caricare lo sketch su un micro vergine modificandogli anche i fuse in un solo colpo.

e' da testare  :)

No, aspetta, a me ha spiegato e mi pare di averlo specificato, che lui cambia i fuse caricando il bootloader, che io ricordo essere una specie di file finto, poi carica gli sketch, tutto via ISP esattamente come facciamo con il 328P.

capisco, diciamo che io sto' aggiungendo un carico  :)
cioe' che caricando il bootloader si programmino i fuse e' normale, almeno per i micro ufficiali, e quindi non mi mereaviglierei che funzionasse anche con attiny, mentre il test che conviene fare e' se con la ide 1 abbiano inserito al possibilita' di programmare i fuse durante il caricamento del solo sketch.
Prima non era possibile, pero' il tutto era giustificato dal fatto che ufficialmente il sl sketch non era gestibile, ora che e' diventato ufficiale potrebbe essere che funziona, o cmq si potrebbe pensare di chiederne l'implementazione.
E' da testare sia con 328P che attiny  (ho preso un paio di 85 ed un 2313)

p.s. mi sono fornito dal tua amico leccese, e' stato veloce e professionale, l'avvocato l'ho chiamato ugualmente perche' mi ha mandato dei PCF8574P invece dei PCF8574AP
scherzo, anzi gliel'ho fatto presente ed ha detto che correggera' subito il sito  :) ringraziandomi
Title: Re: Giocando con l'Attiny85
Post by: menniti on Apr 06, 2012, 08:55 pm

altra domanda, una volta settato a 1.1V, o a 2.56V, se per sbaglio arrivano su un pin analogico 5V, cosa mi devo aspettare? brucio il convertitore? no, ma mi arriva un valore inaspettato?

alla prima domanda non so rispondere, ma immagino di sì; a questa ti dico che forse non bruci il micro visto che lo stai alimentando a 5V (ma mi piacerebbe la conferma di qualcuno che ha approfondito la cosa), se non lo bruci ottieni semplicemente 1023, nessun valore inaspettato; ovviamente meglio mettere un partitore in modo da sfruttare tutta la scala per il riferimento settato, altrimenti che vantaggio ne avresti?

@ Test: visto che lavori con la 1.0 ovvio che aspettiamo i tuoi risultati, se avrai tempo e modo di fare qualche prova; riguardo il mio amico (diciamo che io non ci compro più da un bel po', l'ho sponsorizzato perché è serio e vedo che continua ad esserlo :)), mi fa piacere che stai notevolmente migliorando il tuo self-control :D, ma dimmi: che diff c'è tra i due modelli?
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Apr 06, 2012, 10:14 pm


altra domanda, una volta settato a 1.1V, o a 2.56V, se per sbaglio arrivano su un pin analogico 5V, cosa mi devo aspettare? brucio il convertitore? no, ma mi arriva un valore inaspettato?

alla prima domanda non so rispondere, ma immagino di sì; a questa ti dico che forse non bruci il micro visto che lo stai alimentando a 5V (ma mi piacerebbe la conferma di qualcuno che ha approfondito la cosa), se non lo bruci ottieni semplicemente 1023, nessun valore inaspettato; ovviamente meglio mettere un partitore in modo da sfruttare tutta la scala per il riferimento settato, altrimenti che vantaggio ne avresti?

Allora, intanto grazie, se qualcuno ne sa di più dica la sua.
hai ragione sul fatto che se supero la soglia il risultato rimane 1023. La mia prova è questa: come spiego in un altro post uso una cella di carico amplificata con INA128, e taro l'INA con un trimmer in modo da avere in uscita da 200mV a 1V circa (questo usando l'Aref INTERNO da 1.1V..), ma la taro su un carico che prevedo sia il mio massimo.
La domanda l'ho fatta perchè se nelle prove supero il mio carico massimo arrivo a mandargli anche 1.5V. ...ebbene ho provato (per ora l'unico riscontro che ho è un LED attaccato ad un pin digitale dell'ATtiny85 da far lampeggiare più o meno veloce) e una volta superata la soglia il LED continua a lampeggiare con la stessa frequenza.

Ora rimane la possibilità o meno di settare l'Aref Interno a 2,56V, perchè ho provato con INTERNAL2V56, ma sembra non funzionare..
idee?
Title: Re: Giocando con l'Attiny85
Post by: testato on Apr 07, 2012, 12:26 am
x menny: cambia l'indirizzo i2c, quindi finche' devi progettare da zero un circuito non ci sono problemi, ma se lo avessi dovuto usare per una riparazione non avrebbe funzionato
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Apr 07, 2012, 02:26 am
sul datasheet ho trovato solo questo:
The voltage reference for the ADC may be selected by writing to the REFS[2:0] bits in ADMUX.
The VCC supply, the AREF pin or an internal 1.1V / 2.56V voltage reference may be selected as
the ADC voltage reference.
ma non ho idea di come si faccia..
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 07, 2012, 06:38 am

Ciao! leggendo sul datasheet dell'ATtiny85, a pag.127, sta scritto chre si può usare il riferimento interno per gli ADC sia di 1.1V che di 2.56V! (pensavo solo l'1.1..)
ovviamente mi serve quello a 2.56...
si abilita sempre con:
analogReference(INTERNAL2V56);     ?

Sì, è già integrato nel core. Solo una precisazione.
Questa opzione prevede l'utilizzo di un C da 0.1uF sul pin AREF, che è il piedino fisico n°5. Ci sarebbe anche un'altra opzione, ossia l'uso del riferimento interno a 2,56V ma senza il condensatore esterno però, non so perché, tale opzione è commentata nel codice, quindi inutilizzabile.
Però attenzione ad una cosa. Il datasheet, a pagina 138, riporta sotto ad una tabellina che per usare il riferimento a 2,56V il micro deve essere alimentato a 3V.

Quote

altra domanda, una volta settato a 1.1V, o a 2.56V, se per sbaglio arrivano su un pin analogico 5V, cosa mi devo aspettare? brucio il convertitore? no, ma mi arriva un valore inaspettato?

grazie..
p.s. lo chiedo perchè non ho modo di provare...

Credo che se rimani all'interno del range di tolleranza del micro (quindi non gli "spari" ad esempio 12V!  :P) otterrai solo un valore di 1023.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on Apr 07, 2012, 02:10 pm


Ciao! leggendo sul datasheet dell'ATtiny85, a pag.127, sta scritto chre si può usare il riferimento interno per gli ADC sia di 1.1V che di 2.56V! (pensavo solo l'1.1..)
ovviamente mi serve quello a 2.56...
si abilita sempre con:
analogReference(INTERNAL2V56);     ?

Sì, è già integrato nel core. Solo una precisazione.
Questa opzione prevede l'utilizzo di un C da 0.1uF sul pin AREF, che è il piedino fisico n°5. Ci sarebbe anche un'altra opzione, ossia l'uso del riferimento interno a 2,56V ma senza il condensatore esterno però, non so perché, tale opzione è commentata nel codice, quindi inutilizzabile.
Però attenzione ad una cosa. Il datasheet, a pagina 138, riporta sotto ad una tabellina che per usare il riferimento a 2,56V il micro deve essere alimentato a 3V.

Credo che intenda di almeno 3V. l'ho letto anche da qualche altra parte sul datasheet..ma non ricordo dove..
però invece non ho capito bene ciò che dici. Il condensatore, sul datasheet, lo consigliano per rendere più precisi i 2,56V, OK. Però tu parli di un'altra possibilità senza il condensatore, che però non si può fare.. che vuol dire? che con il condensatore non si usa il codice commentato?
cmq, ora ho un attimo di tempo e riprovo con (INTERNAL2V56), perchè ieri sembrava non funzionare..
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Apr 07, 2012, 06:29 pm
Io mi attengo a quanto ho trovato nel codice del core Tiny ed a quanto ho letto sul datasheet,.

1) nel core Tiny le righe per attivare il reference interno a 2,56V senza condensatore sono commentate, per cui non puoi, senza modifiche, farlo con un semplice analogReference(qualcosa):
Code: [Select]
// An alternative for INTERNAL2V56 is (6) ...
// 1 1 0 Internal 2.56V Voltage Reference without external bypass capacitor, disconnected from PB0 (AREF)(1).


2) a pag. 138 del datasheet dell'Attinyx5 c'è uno schema in cui per ai riferimenti a 2,56V c'è una nota:
Quote
The device requries a supply voltage of 3V in order to generate 2.56V reference voltage.


Altro non so. Non ho sperimentato l'AREF interno. Potresti provare e darci un po' di risultati.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 09, 2012, 08:32 pm
Leo, ho una domanda per te che sicuramente sei quello che ha smanettato di più con l'ATtiny..
Se io uso l'oscillatore esterno, quei 2 pin me li gioco? a me serve leggere due pin analogici, e dei tre presenti, due sono quelli Xtal.
non si possono più usare? confermi?

Grazie.
Per il discorso del riferimento interno, alla fine sto usando quello a 1.1V, quindi per ora non ho potuto provarei 2.56V.

Davide.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 09, 2012, 08:58 pm
Eh sì. E' come sugli Atmega. Impostando un clock esterno, perdi quei 2 pin. Ma perché, 8 MHz non ti bastano?
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 09, 2012, 09:41 pm
avoja! solo che ho paura che tra l'imprecisione degli 8 MHz di 4 attiny85 e quella degli 8MHz di un 328P tutti in RS485 potrei perdermi qualcosa..

paura infondata?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 09, 2012, 09:48 pm
Paura infondata. Quando dialoghi con la seriale, hai un margine di tolleranza rispetto al valore nominale della velocità specificata.

Ti chiedo: ti sei mai preoccupato per la presenza di un identico risonatore ceramico sull'Arduino UNO? Eppure col PC avrai anche dialogato a 57600 bps, no? E non hai perso un bit, o mi sbaglio?  :P
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 02:53 am
eccomi finalmente con un pò di prove fatte....e domande varie..
allora, dialogando tramite i SN75176 (RS485) a 9600baud qualche pacchetto lo perde, ma stra-trascurabili.
Ho una prima domanda riguardo l'utilizzo della NewSoftSerial (nel caso specifico con le modifiche per l'ATtiny..):
Ma lavora solo alle velocità standard?
lo chiedo perchè su quel bel sito con le varie velocità supportate dagli ATmel, mi dice che con l'oscillatore a 8MHz, avrei tutta una serie di velocità esatte, tipo 10000baud per capirci, ma se provo ad aprire una mySerial.begin(10000); le due non si vedono per niente.

l'Altra domanda invece  è ancora più difficile:
Ho il sistema che dialoga, con tanto di protocollo, checksum ecc.. a 9600baud, usando per le letture analogiche il reference default di 5V..
se provo ad impostare analogReference(x) provando x= INTERNAL,INTERNAL1V1 o INTERAL2V56, la trasmissione seriale non va più...
L'unica cosa che mi è venuta in mente dopo tantissime prove, è il pin Aref, che sull'ATtiny85 è il 5, o D0, che io uso come pin Tx della NewSoftSerial.
Sarà qui il problema? Come si fa a disabilitare il pin Aref dell'ATtiny? qualcosa del genere?

Sul reference di analogReference() trovo questo:
Quote
Warning

If you're using an external reference voltage (applied to the AREF pin), you must set the analog reference to EXTERNAL before calling analogRead(). Otherwise, you will short together the active reference voltage (internally generated) and the AREF pin, possibly damaging the microcontroller on your Arduino board.

Alternatively, you can connect the external reference voltage to the AREF pin through a 5K resistor, allowing you to switch between external and internal reference voltages. Note that the resistor will alter the voltage that gets used as the reference because there is an internal 32K resistor on the AREF pin. The two act as a voltage divider, so, for example, 2.5V applied through the resistor will yield 2.5 * 32 / (32 + 5) = ~2.2V at the AREF pin.
c'entra qualcosa?

Grazie, Davide.
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 18, 2012, 09:34 am
Ti rispondo per l'ultima parte. Il pin ARef funziona così:
Di default sul pin hai la tensione di alimentazione, che l'ADC usa come riferimento
Se lo setti come "internal" su quel pin ti vieni a trovare 1,1V, cioè il riferimento interno, molto preciso, per l'ADC
Se lo setti come "external" quel pin diventa un ingresso e gli devi applicare la tensione di riferimento per l'ADC.

Se setti il riferimento dell'ADC per tensioni inferiori a quella di alimentazione (1,1 - 3,3V, p.es.) poi ai pin analogici DEVI applicare segnali che NON superino tale soglia, altrimenti fai fuori l'ADC del micro.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 10:07 am

Ti rispondo per l'ultima parte. Il pin ARef funziona così:
Di default sul pin hai la tensione di alimentazione, che l'ADC usa come riferimento
Se lo setti come "internal" su quel pin ti vieni a trovare 1,1V, cioè il riferimento interno, molto preciso, per l'ADC
Se lo setti come "external" quel pin diventa un ingresso e gli devi applicare la tensione di riferimento per l'ADC.

Se setti il riferimento dell'ADC per tensioni inferiori a quella di alimentazione (1,1 - 3,3V, p.es.) poi ai pin analogici DEVI applicare segnali che NON superino tale soglia, altrimenti fai fuori l'ADC del micro.
:smiley-eek-blue: :smiley-eek-blue: Scusami Michele, ma quando tempo fa chiesi questa cosa tu mi hai risposto non preoccuparti che al massimo ti riporta sempre 1024 ?!?! ...e ch l'importante (ovviamente) era non superare i 5V.
Cmq, per evitare problemi, e ovviamente per logica, se setto a 1,1V cercho di non superarli...

Quindi ho il dubbio: sull'Attiny, da come dici tu, mi viene da pensare che non posso fare letture analogiche mentre invio dati su questo pin (ricordo che lo sto usando come TX della Seriale..), è così?
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 18, 2012, 10:28 am
Dab, non mi attribuire nefandezze :smiley-eek-blue:
Se lavori con l'ADC a 5V e gliene arrivano 5,1-5,2 non succede nulla e leggi 1023 esattamente come per i 5V; ma se gli appioppi 6-7 volt il 1023 lo leggerai per mezzo secondo, poi l'ADC si rompe.
Il discorso, in modo proporzionale vale per tensioni più ridotte: se imposti il riferimento a 1,1 o 3,3V NON puoi mandare segnali a 5V.

Questo pin NON ti serve per le letture analogiche ma solo per il riferimento esterno, se lo setti come tale; in tal caso penso che non possa più funzinare come pin digitale D0, mi pare ovvio. Se non tocchi proprio l'analogReference (quindi lo lasci nella condizione di default) il pin funziona da digitale e non ti dovrebbe creare problemi.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 10:40 am

Dab, non mi attribuire nefandezze :smiley-eek-blue:
Se lavori con l'ADC a 5V e gliene arrivano 5,1-5,2 non succede nulla e leggi 1023 esattamente come per i 5V; ma se gli appioppi 6-7 volt il 1023 lo leggerai per mezzo secondo, poi l'ADC si rompe.
Il discorso, in modo proporzionale vale per tensioni più ridotte: se imposti il riferimento a 1,1 o 3,3V NON puoi mandare segnali a 5V.
ok. in effetti tu dicevi ciò:
Quote from: Michele Menniti
Quote
Quote from: dab77 on April 06, 2012, 07:40:30 PM
altra domanda, una volta settato a 1.1V, o a 2.56V, se per sbaglio arrivano su un pin analogico 5V, cosa mi devo aspettare? brucio il convertitore? no, ma mi arriva un valore inaspettato?

alla prima domanda non so rispondere, ma immagino di sì; a questa ti dico che forse non bruci il micro visto che lo stai alimentando a 5V (ma mi piacerebbe la conferma di qualcuno che ha approfondito la cosa), se non lo bruci ottieni semplicemente 1023, nessun valore inaspettato;

mentre Leo suggeriva:
Quote
Credo che se rimani all'interno del range di tolleranza del micro (quindi non gli "spari" ad esempio 12V!  smiley-razz) otterrai solo un valore di 1023.



Quote from: Michele Menniti

Questo pin NON ti serve per le letture analogiche ma solo per il riferimento esterno, se lo setti come tale; in tal caso penso che non possa più funzinare come pin digitale D0, mi pare ovvio. Se non tocchi proprio l'analogReference (quindi lo lasci nella condizione di default) il pin funziona da digitale e non ti dovrebbe creare problemi.
e se metto analogReference(INTERNAL); a questo pin che gli succede?
mi sa proprio che rifaccio le schede con i 328P... sarebbe perfetto l'84, ma per ora non li ho.

Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 10:50 am
Invece mi sono riletto ciò che suggeriva Leo qui:


Ciao! leggendo sul datasheet dell'ATtiny85, a pag.127, sta scritto chre si può usare il riferimento interno per gli ADC sia di 1.1V che di 2.56V! (pensavo solo l'1.1..)
ovviamente mi serve quello a 2.56...
si abilita sempre con:
analogReference(INTERNAL2V56);     ?

Sì, è già integrato nel core. Solo una precisazione.
Questa opzione prevede l'utilizzo di un C da 0.1uF sul pin AREF, che è il piedino fisico n°5. Ci sarebbe anche un'altra opzione, ossia l'uso del riferimento interno a 2,56V ma senza il condensatore esterno però, non so perché, tale opzione è commentata nel codice, quindi inutilizzabile.
Però attenzione ad una cosa. Il datasheet, a pagina 138, riporta sotto ad una tabellina che per usare il riferimento a 2,56V il micro deve essere alimentato a 3V.


Vado a rileggermi il datasheet e provo anche col condensatore tra Aref e GND. Qualcuno sa spiegarmi a che serve?
Grazie Davide.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 11:03 am
mmm, mi sa che non è la soluzione, sul datasheet ho trovato questo:
Quote
Optionally the internal 2.56V voltage reference may be decoupled
by an external capacitor at the AREF pin to improve noise immunity.

il che vuol dire (come immaginavo) che serve solo a dare una pulita alla tensione di riferimento.
Cmq, ci metto un secondo e lo provo.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 11:04 am
Premetto una cosa. La "bibbia" è sempre il datasheet. Me lo sono andato a rileggere.
In più ho spulciato nel core Tiny.

Dunque, riassumo:
analog reference su DEFAULT: non viene toccato nulla, viene usato Vcc come riferimento ed il pin AREF lo si può continuare ad usare come pin normale.
INTERNAL o INTERNAL1V1: per il core sono identici, ed impostano il reference interno a 1,1V.
EXTERNAL attiva il riferimento su AREF.
INTERNAL2V56: devi obbligatoriamente usare un condensatore di disaccoppiamento. Altro obbligo è quello di usare una tensione di alimentazione di 3V, così dice il datasheet.

Esisterebbe un'altra modalità, ossia la INTERNAL2V56 senza obbligo di condensatore su AREF, ma questa è disattivata di default nel core Tiny, non so perché.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 11:11 am
Grazie per aver ricontrollato Leo. riguardo il problema che ho usando l'INTERNAL a 1,1V ti viene in mente niente?

EDIT:
Allora, ho messo per prova il condensatore ceramico da 0,1uf tra Aref(pin 5) e GND.
non gli cambia niente. nel senso che se imposto analogReference(INTERNAL) la seriale non viene letta. Praticamente, la schedina slave con le letture analogiche riceve bene la seriale, perchè il LED di controllo mi lampeggia bene. poi questa dovrebbe ritrasmettere la lettura di due porte analogiche. con analogReference(INTERNAL) il master non riceve il pacchetto corretto.
forse INTERNAL aggiunge dei ritardi?
Poi analogReference l'ho dichiarato nel setup, è giusto?

mannaggia..
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 11:24 am
No. Bisognerebbe avere un oscilloscopio e vedere se, attivando il riferimento interno, cambia qualcosa a livello di... livelli sul pin Aref.

La tabella a pag. 138 del datasheet riporta le impostazioni del reference e del pin AREF. In alcune modalità tale pin viene disconnesso (=possibilità di usarlo come pin normale): curiosamente tale cosa non è precisato con il riferimento a 1V1 interno.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 11:37 am
un oscillo ce l'ho, il DSO quad.. dovrebbe bastare.
come suggerisci di misurare? il pin 5 lo posso triggerare sulla sua trasmissione mentre invia dati, ma penso che in quel caso sia HIGH e basta..
oppure faccio uno sketch ad hoc per vedere l'influenza dell'analogReference? magari posso dichiarare l'analogReference nel loop, dandogli un abbondante delay per assestarsi?
Title: Re: Giocando con l'Attiny85
Post by: menniti on May 18, 2012, 11:39 am
oggi parlo da solo, tanto per cambiare....

Questo pin NON ti serve per le letture analogiche ma solo per il riferimento esterno, se lo setti come tale; in tal caso penso che non possa più funzionare come pin digitale D0, mi pare ovvio. Se non tocchi proprio l'analogReference (quindi lo lasci nella condizione di default) il pin funziona da digitale e non ti dovrebbe creare problemi.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 11:41 am
MIke, oggi parli da solo ma leggi anche da solo  ;)
Dab ha detto che il pin AREF gli viene isolato anche usando il reference interno a 1V1. Secondo il datasheet tale riferimento non dovrebbe alterare il funzionamento del piedino 5 perché l'AREF, sempre secondo il datasheet, viene agganciato all'ADC solo in determinate condizioni, quelle specificate dalla tabella di pag. 138. Però dab dice invece che anche con il reference interno perde la funzionalità del piedino come pin digitale
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 12:01 pm
allora, prima prova, con questo sketch:
Code: [Select]
void setup() {
  pinMode(1, OUTPUT);
}

void loop() {
  analogReference(INTERNAL);
  digitalWrite(1, HIGH);              // accende un Led, giusto per vedere che il codice va..
  analogRead(A2);                       // ho aggiunto delle letture (reali) così da impegnare un minimo l'ADC..
  delay(1000);
  analogReference(DEFAULT);
  digitalWrite(1, LOW);
  analogRead(A3);
  delay(1000);
}


Ho messo il DSO in lettura sul piedino 5 (Aref) e, sorpresa delle sorprese... calma piatta. Non si muove di pezza da zero.
ora provo ad usare il pin D0 (sempre Aref, piedino 5)

@Menniti, tranquillo, leggo tutto quello che scrive chiunque qui, ognuno può dire la cosa giusta al momento giusto, anche un novellino, figuriamoci tu!
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 12:23 pm
Ora con questo Codice:
Code: [Select]
#include <NewSoftSerial.h>
#include <icrmacros.h>

NewSoftSerial ser(2, 0);   // 0 è il pin Tx che combacia con Aref.

void setup() {
  pinMode(1, OUTPUT);
  ser.begin(9600);
}

void loop() {
  analogReference(INTERNAL);
  digitalWrite(1, HIGH);
  analogRead(A2);
  delay(500);
  spedisci();
  delay(500);
  analogReference(DEFAULT);
  digitalWrite(1, LOW);
  analogRead(A3);
  delay(500);
  spedisci();
  delay(500);
}

void spedisci() {
  ser.print("vedemosefunziona!");
}


ottengo questo:

che non cambia da un reference all'altro..
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 12:34 pm
1a cosa:
la tua prima prova allora conferma il datasheet, ossia che il riferimento interno a 1V1 non aggancia l'ADC al pin AREF per cui possiamo escludere questo

2a cosa:
la tua seconda prova ci dice che la NewSoftSerial prende il controllo del pin. Ma non specificando il reference per l'ADC (ossia lasciando quindi quello di default, che è Vcc), quindi togliendo le righe di codice seguenti:
Code: [Select]
  analogReference(INTERNAL);
  digitalWrite(1, HIGH);
  analogRead(A2);
  delay(500);
  spedisci();
  delay(500);
  analogReference(DEFAULT);

sul pin 0 hai una lettura diversa con il DSO oppure hai lo stesso grafico di questo?
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 12:46 pm
Avevo provato senza mettere nessuna dichiarazione, e il risultato era uguale.
Invece guarda un pò che ho scoperto? anzi, aiutami ad interpretare.
Allora, i titoli delle immagini spiegano la situazione. Il codice è il mio protocollino, e c'è la richiesta da parte del master (Segnale Giallo) due volte allo slave giusto, due volte ad un altro per ora scollegato.
Il segnale Blu è la risposta. Le due sonde praticamente sono collegate ai pin Rx e Tx dell'Attiny85.
L'unica differenza tra i due è che usando ref=1,1V la conferma del Master arriva prima (segnale Giallo dopo il Blu). Quindi io ne dedurrei che usando il riferimento interno l'ADC ci mette meno tempo, potrebbe essere?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 12:52 pm
Il circuito è lo stesso, se guardi il diagramma a blocchi vedi che in pratica il riferimento è solo un blocco dal quale l'ADC preleva la tensione per comparare quella letta.

Una domanda: non è che hai fatto il passaggio al reference 1V1 dopo aver fatto la lettura con quello di default?
Se vedi le tabelle sul datasheet, la prima lettura non solo è inaccurata ma è anche estremamente più lenta delle latre (10 volte di più in cicli macchina).
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 01:04 pm
No, nel codice che uso per quest'ultime immagini, la dichiarazione aRef() la faccio nel setup e basta.

Ho appena trovato una cosa tanto curiosa quanto inquietante..
praticamente, ricordando che uso due celle di carico attaccate ai pin analogici, ho il gtkterm davanti gli occhi per vedere se avviene la trasmissione, e non si muove una paglia (usando aRef 1,1V), ma quando faccio forza su una delle 2 celle la trasmissione parte!!  :smiley-eek: :smiley-eek: :smiley-eek:

Voglio morire... mica lo capisco perchè.. in compenso era successa una cosa strana anche usando aRef 5V, con la taratura del trimmer di regolazione degli operazionali delle celle un pò più alta, la trasmissione avveniva perfetta, ma appena facevo un pò più di forza su una delle due celle si bloccava...

quindi mi sa che devo mettere sotto torchio l'uscita degli INA128...
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 01:24 pm
allora, ho altre 2 letture strane..
ho triggerato il segnale della Seriale in uscita, che sarebbe il pin Aref (piedino 5) e praticamente ogni volta che manda qualcosa la lettura del pin analogico fa quel casino (sia su A2 che A3).la misura Vpp (picco-picco) di quello spike è di circa 0,15V, che in una misura riferita a 1,1V è più del 10%.

Non ho capito perchè se premo forte su una cella di carico comincia a funzionare il dialogo seriale. sull'oscillo gli spike rimangono quando premo, solo si alza tutta la lettura da 0.65V a 0.78V (dove più o meno comincia a trasmettere bene...)

bel mistero, no?
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 01:42 pm
Ecco qua forse il problema..

Come si può vedere, quando premendo una delle due celle si supera una certa soglia verso l'alto, ma anche verso il basso (togliendo peso dalla cella..) si sposta il segnale di Enable di 2-3 ms..
lo odio...
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 02:02 pm
e solo per completare il quadro ho rifatto le due prove togliendo la riga analogReference, quindi utilizzando i 5V Default, e ritarando un pò più alta l'uscita degli operazionali ho il problema inverso, cioè che a riposo trasmette mentre premuta la cella no, e diminuisce il delay tra un Enable e l'altro.

il canale giallo è l'Enable, il canale blu è l'Rx.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 02:37 pm
Andiamo con ordine.

1) leggendo un'altra fonte analogica e non quelle celle, cosa succede?
2) se tu non metti nessun analogReference nel setup (neanche analogReference(DEFAULT), che viene usato di... default appunto), cosa succede?
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 02:54 pm

Andiamo con ordine.

1) leggendo un'altra fonte analogica e non quelle celle, cosa succede?

Non ho provato, ma su quella schedina al pin A1 c'è il Rx della seriale, mantre A0 è sul pin del reset, che in effetti non uso se non per programmare, quindi potrei provare..
Quote

2) se tu non metti nessun analogReference nel setup (neanche analogReference(DEFAULT), che viene usato di... default appunto), cosa succede?

A parte la prova con i delay 1s DEFAULT e 1s INTERNAL, negli altri casi ho sempre evitato di scrivere "analogReference(DEFAULT)", quindi posso dire che il problema NON dipende dall'analogReference.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 03:04 pm
No, aspetta. A0, che è il piedino n°1, ossia reset, non usarlo. Per poterlo usare come pin normale, devi disattivare il reset tramite i fuse, poi però ti serve un programmatore H/V (alta tensione, 12V) per rimetterlo a posto. Diversamente non puoi più riprogrammare il micro.

In ultima analisi, ti consiglio di rivolgerti qui:
http://arduino.cc/forum/index.php/topic,51984.0.html
è il thread aperto dal creatore del core Tiny. Magari potresti sentire anche lui.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 03:16 pm

No, aspetta. A0, che è il piedino n°1, ossia reset, non usarlo. Per poterlo usare come pin normale, devi disattivare il reset tramite i fuse, poi però ti serve un programmatore H/V (alta tensione, 12V) per rimetterlo a posto. Diversamente non puoi più riprogrammare il micro.

In ultima analisi, ti consiglio di rivolgerti qui:
http://arduino.cc/forum/index.php/topic,51984.0.html
è il thread aperto dal creatore del core Tiny. Magari potresti sentire anche lui.

infatti, il piedino 1 ho proprio evitato di considerarlo..

Allora, intanto queste prove rimangono qui per i posteri. Io risolvo (credo..) ridisegnando la schedina e mettendoci i 328P, tanto ce li ho. Se avete un buon fornitore per gli attiny84 li prendo volentieri. (trovo molti 24 e qualche 44...)

Poi mi farò anche un giro li sul link che hai messo, ma mettermi a rispiegare tutto in inglese non mi va molto..

Grazie mille comunque.
Ciao!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 03:21 pm
Gli Attiny84 io li prendo da RS:
http://it.rs-online.com/web/p/microcontrollori/7380684/
Prendi questi, modello "A": sono quelli nuovi, lavorano a 20 MHz come i precedenti ma in più reggono tensioni di funzionamento minime fino a 1,8V come i vecchi modelli "V" che, però, andavano solo fino a 10 MHz.

Con i Tiny84 ho lavorato ad un sensore di fughe di gas e non ho avuto problemi con le letture analogiche. I Tinyx5 non li ho usati (tranne che per alcuni test) in analogico.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 03:33 pm
Grazie. Si RS era in lista, ma devo accumulare qualcos'altro da comprare sennò non conviene.

Ciao!
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 03:42 pm

Grazie. Si RS era in lista, ma devo accumulare qualcos'altro da comprare sennò non conviene.

Ciao!

Ricordati che RS ha da un po' abbassato i prezzi di spedizione. Adesso con corriere espresso ti costa solo 6€+IVA.
Alternativamente c'era LP elettronica che aveva i Tiny84 a listino ma in questo momento il loro sito non va. Su Ebay i Tiny84 in Italia non li trovo.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 03:53 pm
ah, dimenticavo dell'altra domanda, che oramai è solo per curiosità.
con la NewSoftSerial, perchè non riesco ad usare velocità diverse dai "passi" standard?
che so, tipo 10000 o 15000?

...già che ci sono...ehm...non riesco a trovare gli zoccoli a tulipano su RS, come si chiamano?

come non detto, si chiamano zoccoli, solo che la ricerca su RS non è migliorata come speravo. se cerchi zoccolo non esce niente.
Title: Re: Giocando con l'Attiny85
Post by: leo72 on May 18, 2012, 03:57 pm
Perché ci sono delle tabelle per i tempi calcolate su particolari velocità, al di fuori di quelle non accetta.
Guarda nel file NewSoftSerial/NewSoftSerial.cpp.
Title: Re: Giocando con l'Attiny85
Post by: dab77 on May 18, 2012, 04:03 pm

Perché ci sono delle tabelle per i tempi calcolate su particolari velocità, al di fuori di quelle non accetta.
Guarda nel file NewSoftSerial/NewSoftSerial.cpp.

Ok, grazie, ho visto..
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Jun 19, 2012, 05:03 pm
Colto dalla "Sindrome di Acquisto Compulsivo" via Internet, ho ordinato questo piccolo kit in scatola di montaggio
(http://store.tinkerlog.com/store/images/kits/l_DSC_0023.JPG)
-->http://store.tinkerlog.com/store/index.php?main_page=product_info&cPath=3&products_id=7

...per poi accorgermi che il Tiny2313, come cita il primo numeretto ha "solo" 2 kb di memoria programmabile.
La domanda adesso è, e lo chiedo anche a voi: che ce fò??
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 19, 2012, 05:08 pm
Qualcosa che richieda solo 2 kB di Flash  :smiley-yell: :smiley-yell:

A parte gli scherzi, se non ne hai bisogno, tienilo in un cassetto per impieghi futuri. Oppure usalo per costruire un programmatore USBtinyISP miniaturizzato, tipo quello che ho realizzato per la mia Tinyboard84
http://arduino.cc/forum/index.php/topic,102954.0.html
di cui abbiamo parlato anche qui
http://arduino.cc/forum/index.php/topic,110429.0.html
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Jun 19, 2012, 05:15 pm
A ecco.  XD
Credo che lo userò come programmatore ISP.
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Oct 09, 2012, 05:06 pm
Ho trovato una nuova schedina per le prove sui tiny
--> http://allgaiershops.com/product_info.php?products_id=33
(http://allgaiershops.com/images/glamour.JPG)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 09, 2012, 05:46 pm
4$ senza chip, caruccia...  $)
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Oct 09, 2012, 06:19 pm

4$ senza chip, caruccia...  $)

caruccia = bellina o caruccia = costa troppo?
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Oct 09, 2012, 06:55 pm
Con l'emoticon coi $$ il significato è evidente: cara. Vendono i componenti per fare una basetta per metterci un Attiny84. Non c'è il chip compreso.
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Nov 29, 2012, 11:09 pm
gli attiny come molti altri microcontrollori possono funzionare in un range di tensioni di alimentazione, mi chiedevo se facendolo andare a 3V posso avere comportamenti diversi da quelli che avrei a 5V.
chiaramente parlo della logica base, tipo accendere o spegnere dei led, perchè usando la seriale o altre cose che si interfacciano con altri sistemi che vanno a 5V è ovvio che ci sono inconvenienti
provando non mi sembra di notare niente di strano, attendo conferme, grazie in anticipo ;)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 29, 2012, 11:16 pm

gli attiny come molti altri microcontrollori possono funzionare in un range di tensioni di alimentazione, mi chiedevo se facendolo andare a 3V posso avere comportamenti diversi da quelli che avrei a 5V.
chiaramente parlo della logica base, tipo accendere o spegnere dei led, perchè usando la seriale o altre cose che si interfacciano con altri sistemi che vanno a 5V è ovvio che ci sono inconvenienti
provando non mi sembra di notare niente di strano, attendo conferme, grazie in anticipo ;)

Nessun problema. A livello logico non ci sono differenze.
Anzi, se compri i modelli "A" (clock max 20 MHz) o "V" (clock max 10 MHz), questi possono operare fino a 1,8V come tensione minima.
Solo devi ricordarti appunto che lavorando a basse tensioni potresti avere problemi a pilotare alcuni componenti. Quindi via di led o traslatori di livello  ;)
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Nov 29, 2012, 11:26 pm
ok grazie mille ;)
quindi non penso di avere problemi, volevo usarne uno su un telecomando IR :)
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Nov 29, 2012, 11:29 pm
Attento che per lavorare a queste tensioni devi usare clock bassi, e se vuoi usare librerie di terzi assicurati sempre che non ci siano incompatibilità per le frequenze. Molte lib sono scritte per lavorare: a) solo sugli Atmega328; b) a 16 MHz.
Non tutti scrivono lib che girano su tutti i micro ed a tutti i clock come me  ;)
Title: Re: Giocando con l'Attiny85
Post by: ƎR on Nov 29, 2012, 11:56 pm

Attento che per lavorare a queste tensioni devi usare clock bassi, e se vuoi usare librerie di terzi assicurati sempre che non ci siano incompatibilità per le frequenze. Molte lib sono scritte per lavorare: a) solo sugli Atmega328; b) a 16 MHz.
Non tutti scrivono lib che girano su tutti i micro ed a tutti i clock come me  ;)

ok grazie del consiglio ;)
però pensavo di modulare a modo mio così da poter demodulare facilmente :)
Title: Re: Giocando con l'Attiny85
Post by: PaoloP on Apr 07, 2014, 06:25 pm
Segnalo questi due post interessanti che utilizzano gli ATtiny85 per collegare via I2C o via seriale un sensore ad ultrasuoni
--> http://projectsfromtech.blogspot.it/2014/01/i2c-hc-sr04-sonar-module-attiny85-i2c.html
--> http://projectsfromtech.blogspot.it/2013/08/serial-sonar-sensor-attiny85-hc-sr04.html

Vi ricordo che adesso il core tiny gira anche nella versione dell'IDE 1.5.x.
Title: Re: Giocando con l'Attiny85
Post by: alex27riva on Jun 09, 2014, 09:15 pm
Ne approfitto di questo topic per chiedere: che progetti avete fatto con l'ATtiny85? Intendo progetti finiti e funzionanti, non solo prototipi.
Io inizialmente l'avevo acquistato per fare un ricevitore ad infrarossi per azionare un relè ma non ci sono mai riuscito...
Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 09, 2014, 09:41 pm
Quello da te descritto è il progetto che ho pubblicato su Elettronica In un paio di anni fa, si fa... si fa.... ;)
Title: Re: Giocando con l'Attiny85
Post by: gpb01 on Jun 09, 2014, 09:43 pm

Ne approfitto di questo topic per chiedere: che progetti avete fatto con l'ATtiny85? Intendo progetti finiti e funzionanti, non solo prototipi.


Orologi, gestori di LED Strip, ecc. ecc. ... se ne fanno tanti, nei limiti degli 8KB di Flash  XD

Guglielmo
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 09, 2014, 09:48 pm
Di utilizzo vero e proprio, poco (a mente forse non ho proprio nulla di finito in casa fatto col Tiny85, al momento.  :P). perché principalmente l'ho usato per fare test (tanti), principalmente per studiarne le caratteristiche e l'uso.
Ci ho fatto test di sleep, test di consumo, un regolatore di carica per batterie NiMH, comunicazione seriale, I2C, ecc.. di tutto. C'è stato un periodo in cui mi sfidavo a usare i chip Tiny al posto del Mega328...  ;)
Poi alla fine ho iniziato a usare il fratellino maggiore Attiny84, per via del fatto che ha più pin disponibili.
Title: Re: Giocando con l'Attiny85
Post by: nid69ita on Jun 09, 2014, 10:26 pm

Quello da te descritto è il progetto che ho pubblicato su Elettronica In un paio di anni fa, si fa... si fa.... ;)

Domandine, se si può:
1. quale numero ?
2. Ci avevo pensato anche io. Pensavo di far sentire i comandi IR al Tiny, (e li bufferizza pure) e avvisa un Arduino (o 328p) attraverso un interrupt (da pin Tiny a pin con interrupt sul 328p). Avvisato il 328p, dialogano (magari tramite SoftSerial) per far sapere al 328p quale comando. Facevi un qualcosa di simile? Se si, è un sistema che non perde comandi, abbastanza veloce e reattivo?
Grazie se puoi rispondere, altrimenti... grazie lo stesso  :D
Title: Re: Giocando con l'Attiny85
Post by: leo72 on Jun 09, 2014, 10:29 pm
@nid:
strano ti sia perso questo, è anche nei LINK UTILI, sempre qui in Megatopic  ;) ;)
http://forum.arduino.cc/index.php/topic,67433.msg495569.html#msg495569

Title: Re: Giocando con l'Attiny85
Post by: menniti on Jun 09, 2014, 11:58 pm
Nid ti basta seguire il link in firma ci sono tutti gli articoli e numeri. Comunque è il 161, se serve aiuto sono a disposizione.   ;)
Title: Re: Giocando con l'Attiny85
Post by: nid69ita on Jun 10, 2014, 01:52 pm
Grazie per le info. Quel thread è del 201, probabile me lo sono perso.  :D