Pages: [1]   Go Down
Author Topic: Problemi con Arduino Micro  (Read 880 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,
da due mesi ho cominciato a lavorare con Arduino Uno.
Non ho mai incontrato grandi difficoltà e tutto è filato quasi sempre liscio.
 Per problemi di consumi ho deciso di acquistare un Arduino Micro e qui sono cominciati i primi problemi.
Ho caricato il seguente sketch:

Code:
void setup() {
 //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  
  // prints title with ending line break
  Serial.println("Setup");
}
void loop()
{
  Serial.println("Loop");
  delay(500);
}
Ma controllando sia sul Monitor Seriale che sulla porta parallela associato al micro non vedevo niente.
Ecco la prima domanda:
- lo stream di dati proveniente da Arduino lo posso vedere con il monitor seriale come con l'Uno o devo usare un programma tipo Hyper Terminal?
Ho notato in "gestione dispositivi" che anche senza resettare il Micro la porta a esso associata continuava a refressharsi come se venisse continuamente tolta e rimessa.
Dopo qualche tentativo adesso il computer in un primo momento me lo riconosce, ma dopo qualche secondo scompare diventando "dispositivo sconosciuto" e provando a riaggiornare il driver non lo trova dicendo:
-Impossibile trovare software driver per il dispositivo.
Dunque i problemi sono due:
- come mai non avevo riscontro dei vari println
- come mai adesso non lo riconosce più
Grazie a tutti
« Last Edit: January 22, 2013, 03:31:09 pm by UweFederer » Logged

0
Offline Offline
Faraday Member
**
Karma: 31
Posts: 2908
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il codice mi sembra sbagliato, il problema potrebbe dipendere dal fatto che la seriale è impegnata quando tenti di scrivere un nuovo software e questo ipedisce al IDE di riconoscere.

L'oggetto Serial è presente sin dall'inizio e viene valutato come una condizione vera (true) nel ciclo while, pertanto quel ciclo lo ritengo superfluo.

Prima della abiilitazione della seriale con begin(9600) conviene sempre mettere un delay(1000) per avere un tempo di un secondo in cui la seriale può essere impegnata per la scrittura del bootloader.

Soluzione, prova a scrivere l'esempio blink, tenendo premuto il tasto reset di Arduino micro, clicca su scrivi software dall' IDE e rilascia il reset dopo 1 secondo.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Adesso il computer non mi riconosce più il Micro indipendentemente dall'IDE, anzi lo riconosce per qualche secondo e poi diventa "dispositivo sconosciuto". Il ciclo "while" l'ho preso direttamente da un esempio e se noti il "Needed for Leonardo only" è necessario dunque anche per il Micro. Il codice blink l'avevo provato precedentemente e funzionava.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino Micro non viene riconosciuto nel momento esatto in cui finisce di caricare il bootloader.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho notato che nonostante non venga riconosciuto da Windows riesco a caricare lo sketch. Il problema è che se seleziono il monitor serial, compare il messaggio "Porta seriale non trovata", e anche Hyper Terminal non trova niente.
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7097
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'Arduino Micro monta l'ATmega32u4 come la Leonardo.
Per la soluzione dei problemi puoi cercare nel forum topic inerenti quella scheda.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22705
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho notato che nonostante non venga riconosciuto da Windows riesco a caricare lo sketch. Il problema è che se seleziono il monitor serial, compare il messaggio "Porta seriale non trovata", e anche Hyper Terminal non trova niente.

Ricarica sopra al Micro un altro sketch che non faccia uso della seriale, ad esempio il Blink.
Collegandolo al PC, il sistema lo vede?
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22705
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'oggetto Serial è presente sin dall'inizio e viene valutato come una condizione vera (true) nel ciclo while, pertanto quel ciclo lo ritengo superfluo.
E' una condizione nuova, introdotta per l'Atmega32U4, che ha la USB integrata.
Logged


0
Offline Offline
Faraday Member
**
Karma: 31
Posts: 2908
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'oggetto Serial è presente sin dall'inizio e viene valutato come una condizione vera (true) nel ciclo while, pertanto quel ciclo lo ritengo superfluo.
E' una condizione nuova, introdotta per l'Atmega32U4, che ha la USB integrata.


Si lo avevo notato tempo a dietro, ma non mi sono mai soffermato a verificare anche perchè non ho quella board o simil Leonardo.
Continuo a non capirne il significato, come detto il C++ valuta una istanza di classe come verà nel senso esistente, testarne l'esistenza vuol dire prevedere la possibilità che quel oggetto a quel tempo potrebbe non essere ancora creato, ma se prima lo uso con Serial.begin() quello oggetto deve già esistere. Comunque mi tiro fuori per mancanza di esperienza diretta con la board.

Ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22705
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco il codice, estratto dal file CDC.cpp del core:
Code:
// This operator is a convenient way for a sketch to check whether the
// port has actually been configured and opened by the host (as opposed
// to just being connected to the host).  It can be used, for example, in
// setup() before printing to ensure that an application on the host is
// actually ready to receive and display the data.
// We add a short delay before returning to fix a bug observed by Federico
// where the port is configured (lineState != 0) but not quite opened.
Serial_::operator bool() {
bool result = false;
if (_usbLineInfo.lineState > 0)
result = true;
delay(10);
return result;
}
Logged


Pages: [1]   Go Up
Jump to: