standalone 328

Ciao,
ho due micro configurati nella stesso modo. Uno funziona regolarmente, l'altro si blocca ogni tanto. Se carico di nuovo lo sketch riprende a funzionare per poi ribloccarsi, questo ho notato soprattutto quando spengo il circuito.

>michelearduino: ... e quindi ? ? ?

Guglielmo

Dobbiamo elencarti tutte le possibili e immaginabili cause oltre a quelle impossibili e oscure?
Ciao Uwe

Ho rifatto completamente tutto da zero tranne sostituire il micro (che non ho), quindi la domanda è se il micro può rovinarsi e se è normale che riprenda a funzionare dopo che ricarico lo sketch e poi si riblocchi.

Prima di spendere altri soldi.

È possibile; Tu sei la prova. :smiley: :smiley:

Ti daremo risposte che aiutano poco se non ci dai piú informazioni.
Dove hai comprato i 328? erano con Bootloader? che sketch carichi? come lo carichi?
Come é il circuito che usi? Foto.

Ciao Uwe

michelearduino:
Se carico di nuovo lo sketch riprende a funzionare per poi ribloccarsi, questo ho notato soprattutto quando spengo il circuito

C'è qualche cosa (ad esempio un condensatore carico, ma anche altra sorgente di tensione) che al momento dello spegnimento si scarica sui pin del micro?

Ma soprattutto, è con quarzo o senza? Ma ancora più importante, lo schema elettrico.

328 comprato su amazon. Bootloader caricato seguendo la guida di Menniti (indicazione di Guglielmo), arduino impostato come isp e micro su breadboard.
Sketch caricato sostituendo il micro su arduino.
Senza quarzo ma utilizzando 8mhz interno.
Nessun condensatore.
Adesso ho spostato tutto su breadboard (immagine allegata) e non si sta bloccando. Unica differenza che sto usando l'alimentazione della scheda arduino e non della batteria.

Per lo schema ancora non so disegnare :)...possono anche partire gli insulti :slight_smile:

Ricevitore IR.
Codice caricato sotto, risultato premo un tasto sul telecomando e si accende la luce.
Codice preso dagli esempi

#include <IRremote.h>

int RECV_PIN = 8;

int LED_PIN2 = 2;
int LED_PIN3 = 3;


IRrecv irrecv(RECV_PIN);
decode_results results;

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


  pinMode(LED_PIN2, OUTPUT);
  digitalWrite(LED_PIN2, LOW) ;

  pinMode(LED_PIN3, OUTPUT);
  digitalWrite(LED_PIN3, LOW) ;



  
  irrecv.enableIRIn(); // avvio ir
}

void loop() {

  
  if (irrecv.decode(&results)) {
    Serial.println("inizio");
    Serial.println(results.value, HEX);

      if(results.value == 0xa90 || results.value == 0xCC33916E ){
     
      digitalWrite(LED_PIN2, HIGH) ;
      
       digitalWrite(LED_PIN3, HIGH) ; 
      
       delay(50) ;
       digitalWrite(LED_PIN2, LOW) ;
        digitalWrite(LED_PIN3, LOW) ;
     
     
      }else{
        
        digitalWrite(LED_PIN2, LOW) ;
        digitalWrite(LED_PIN3, LOW) ;
     
        }
        
    irrecv.resume(); // altra lettura
    

      delay(50) ;
      digitalWrite(LED_PIN2, LOW) ;
      digitalWrite(LED_PIN3, LOW) ;
    
      
  }
}

lo sai, vero, che i led si collegano con una resistenza..... e che sarebbe bene anche una resistenza tra il pin di reset e il Vcc.... e che la' Atmega 328 ha i pin di alimentazione anche dalla parte in cui non hai collegato niente........ e che un condensatore tar il Vcc e il GND ci starebbe bene... etc etc

brunello22:
.. e che un condensatore tar il Vcc e il GND ci starebbe bene... etc etc

Mettine 3condensatori ceramici da 0,1µF; 2 tra +5V e Massa su entrambi i lati e uno tra AREF e massa.
Ciao Uwe

La resistenza non l'ho messa ma so che ci va.

Dei condensatori non so niente, perché devo metterli anche dove non uso l'alimentazione? L'unica cosa che ho capito è che caricano e scaricano energia :slight_smile:
Quindi l'altro sta funzionando senza condensatori per puro c... fortuna :slight_smile:

grazie :slight_smile:

I condensatori hanno piu di una funzione ... si, fanno da "serbatoio" di energia per compensare i momentanei picchi di assorbimento, ma soprattutto chiudono a massa i vari disturbi presenti sull'alimentazione, che possono sia venire "da fuori", che essere generati dai vari carichi induttivi o capacitivi, motori, eccetera ... inoltre se usati sugli ingressi collegati a pulsanti o interruttori fanno da antirimbalzo ...

Un'altra cosa, sarebbe sempre meglio collegare entrambi i pin di alimentazione del micro, sia quelli della VCC che soprattutto quelli della massa. e filtrarli ... anche il condensatore collegato all'AREF serve a filtrare eventuali disturbi verso massa ... diciamo che piu ci sono condensatori di filtro, e piu sono fatte correttamente le varie connessioni, e meno mal di testa e malfunzionamenti ci si ritrovano in giro ... :wink:

Soprattutto di chip comprati su Amazon o Ebay da venditori che non si sà se ti danno robba buona o chip di scarto.
Curiosità, quanto li hai pagati ? Confrontali con i prezzi "ufficiali" su venditori autorizzati tipo RS o Farnell italia.

nid69ita:
Soprattutto di chip comprati su Amazon o Ebay da venditori che non si sà se ti danno robba buona o chip di scarto.
Curiosità, quanto li hai pagati ? Confrontali con i prezzi "ufficiali" su venditori autorizzati tipo RS o Farnell italia.

16 euro 5 pezzi

ok per i fornitori ufficiali, non sapevo

Etemenanki:
I condensatori hanno piu di una funzione ... si, fanno da "serbatoio" di energia per compensare i momentanei picchi di assorbimento, ma soprattutto chiudono a massa i vari disturbi presenti sull'alimentazione, che possono sia venire "da fuori", che essere generati dai vari carichi induttivi o capacitivi, motori, eccetera ... inoltre se usati sugli ingressi collegati a pulsanti o interruttori fanno da antirimbalzo ...

Un'altra cosa, sarebbe sempre meglio collegare entrambi i pin di alimentazione del micro, sia quelli della VCC che soprattutto quelli della massa. e filtrarli ... anche il condensatore collegato all'AREF serve a filtrare eventuali disturbi verso massa ... diciamo che piu ci sono condensatori di filtro, e piu sono fatte correttamente le varie connessioni, e meno mal di testa e malfunzionamenti ci si ritrovano in giro ... :wink:

QUindi conviene "ponticellare" i pin 7/20 8/22 e su due collegare l'alimentazione? I condensatori da 0,1µF come dice uwefed non li ho, ne ho da 10µF, quindi dovrò comprare :slight_smile:

grazie

Un 10u in parallelo all'alimentazione non puo che fargli bene, ma e' sempre meglio usare anche dei ceramici, valore medio 100nF ... perche' gli elettrolitici in molti casi non riescono a filtrare bene i picchi e le frequenze piu elevate, data la loro resistenza interna equivalente che a volte e' troppo alta ... per questo, anche negli alimentatori, insieme agli elettrolitici di alto valore (che filtrano il ripple e garantiscono una "scorta" di energia per i picchi di assorbimento) si mettono sempre dei ceramici da 100n in parallelo, cosi eliminano piu disturbi possibile ...

Ponticellare le due coppie di pin conviene sempre, perche' se il micro o qualcosa che c'e' attaccato sulle uscite consuma un po di corrente, farla passare solo per un pin non e' mai sicuro ... in quel modo invece si raddoppia il percorso "interno" della corrente, limitando il rischio che magari uno dei pin si danneggi (ricordiamoci che all'interno i pin sono connessi al silicio con fili piuttosto sottili ;))

michelearduino:
Dei condensatori non so niente, perché devo metterli anche dove non uso l'alimentazione?

Usare entrambe le alimentazioni non é un opzione ma un obbligo.
Ciao Uwe

I pin 7 e 20 non sono 2 pin di alimentazione tirati fuori in doppio, ma due alimentazioni diverse. Pin 7 VCC alimentazione sezione digitale e pin 20 AVCC sezione analogica (non so di preciso quale parte interna é attacata a uno o l'altra alimentazione).
Il datasheet http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf dice:

1.1.7 AVCC is the supply voltage pin for the A/D Converter, PC 3:0, and ADC7:6. It should be externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC through a low-pass filter.
Note that PC6...4 use digital supply voltage, VCC.

Ciao Uwe

uwefed:
I pin 7 e 20 non sono 2 pin di alimentazione tirati fuori in doppio, ma due alimentazioni diverse. Pin 7 VCC alimentazione sezione digitale e pin 20 AVCC sezione analogica (non so di preciso quale parte interna é attacata a uno o l'altra alimentazione).
Il datasheet http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf dice:
Ciao Uwe

Quindi è giusto ponticellare? Oppure è preferibile collegarci due alimentazioni separate?

michelearduino:
Quindi è giusto ponticellare? Oppure è preferibile collegarci due alimentazioni separate?

Fa fede il datasheet che ho citato.
Si alimenta entrambe Vcc e AVcc se non si usa la parte ADC. Nel caso che si usa la parete ADC si deve mettere un filtro passa basso. In pratica puoi anche collegare AVcc direttamente alla alimentazione della Vcc.

Ciao Uwe