Show Posts
Pages: 1 ... 442 443 [444] 445 446 ... 696
6646  International / Generale / Re: Topic permanente di programmazione newbie on: March 06, 2012, 10:56:10 am
smiley-roll-sweat dici che bastano per tutti i micro a 8 bit pdip?

Facciamo due conti utilizzando le matrici che ho consigliato a Michele, ipotizzando di memorizzare i dati di 100 micro abbiamo quanto segue:

20*100 = 2000 byte  per le descrizioni
3*100   = 300 byte   per le signature
4*100   = 400 byte   per i fuse e i dati accessori
--------------------
Totale    2700 byte

Direi che volendo ci entra pure tutto il catalogo Atmel delle mcu a 8 bit e avanza molto spazio  smiley-grin


6647  International / Generale / Re: Topic permanente di programmazione newbie on: March 06, 2012, 09:40:12 am
Perchè non memorizzi il catalogo dei micro in una eeprom esterna ,così ti puoi allargare con il numero dei micro supportati a tutti i pdip.

Ma perché deve complicarsi la vita quando ha 32k di flash a disposizione, hai voglia a memorizzare micro  smiley-grin
6648  International / Generale / Re: Topic permanente di programmazione newbie on: March 06, 2012, 09:17:13 am
  • a che serve il 4° byte sui fuse?

Per eventuali informazioni accessorie, vedilo come un 8 bit flag, p.e. esempio per sapere se usare il modo P o S etc.
6649  International / Generale / Re: serialMode errore on: March 06, 2012, 09:12:45 am
Mi spiace ma questo è l'unico Bee che conosco.

Bee-sama!

Io preferisco "ero sennin"  smiley-mr-green

6650  International / Generale / Re: Arduino e Termistore on: March 06, 2012, 09:08:22 am
Sopra c'è scritto 503, quindi io ho supposto che fosse un 334-NTC503-RC.

Come sei arrivato a questa conclusione ?

Quote
Poi come faccio ad ottenere la formula di conversione per avere la temperatura in °C?
In giro ho trovato questa -> int temp = (analogRead(sensore)*5*100)/1024;

La formula che hai scritto non ha alcun senso riferita alla temperatura perché questo genere di misura dipende dalla configurazione circuitale in cui poni la NTC e dalla sua curva di risposta, che non è lineare.
Senza conoscere il suo valore di resistenza nominale a 25°e il parametro B, li trovi sul datasheet, non è possibile determinare la temperatura.
6651  International / Generale / Re: Topic permanente di programmazione newbie on: March 06, 2012, 09:00:00 am
Allora riprendo la problematica dell'array perché non capisco come impostarlo e comunque vorrei una soluzione ottimale.

Io al tuo posto procederei inizializzando tre array multidimensionali, ovviamente posti nella flash, in questo modo:

Code:
char Stringa[20] [20] = { {"ATmega328p"},
                          {"ATMEGA644"},
                          {"ATMEGA2560"}
                        };
                        
byte signature [20] [3] = { {0x1E,0x1C,0x1D},
                                 {0x1E,0x1C,0x1E},
                                 {0x1E,0x1C,0x1F}
                               };  

byte fuses [20] [4] = { {0xff,0xff,0xff,0xff},
                             {0xff,0xff,0xff,oxff},
                             {0xff,0xff,0xff,oxff}
                           };  

Premesso che i valori numerici li ho messi a caso, poi tocca mettere quelli corretti, abbiamo tre array composti da 20 righe di tot colonne, il numero della riga è l'indice univoco (quante righe dipendono dal numero di micro che vuoi inserire), ricavato dalla signature, che ti permette di trovare tutti gli altri parametri.
In pratica hai un array di stringhe che contiene la descrizione del micro, 20 caratteri dovrebbero bastare e sono pari ad una singola riga del display così hai meno problemi di formattazione dei messaggi, poi hai due array di valori unsigned int che contengono le signature, 3 colonne per tot righe, e la stessa cosa per i valori dei fuse posti in un terzo array composto da 4 colonne e tot righe.
Non appena hai trovato i tre byte della signature non devi fare altro che scorrere il relativo array per righe leggendo i tre byte delle colonne, confronti i valori e se corrispondono hai trovato l'indice per accedere agli altri due array per avere la descrizione e i fuse.
Lo so che detto a parole sembra complicato, ma in realtà è semplicissimo da implementare, se hai problemi questa parte di codice te la scrivo io.
6652  International / Generale / Re: LMV358 on: March 06, 2012, 08:19:20 am
Devo acquisire  un segnale proveniente da un accelerometro e/o geofono con frequenza di campionamento da 0 a 1000 hz.

In questo caso i filtri ti servono eccome, e pure fatti bene, però se parliamo di rilevazioni sismiche direi che hai bisogno una frequenza minima molto bassa, minore di 1Hz, se non addirittura un accoppiamento DC per l'accelerometro, relativamente a questo è meglio se opti per un modello con ADC ad alta risoluzione integrato con out su I2C o SPI piuttosto che uno analogico.

6653  International / Generale / Re: Problema con Teensy come periferica MIDI on: March 06, 2012, 07:40:32 am
finché non rimuovo il cavo usb fisicamente.
Il problema non dipende dallo sketch caricato perchè anche con una cosa semplicissima, il problema persiste.

Quasi sicuramente il problema dipende dal device HID, nel tuo caso midi, che ha qualche problema ed è un problema sicuramente software e non certo hardware.
6654  International / Generale / Re: LMV358 on: March 06, 2012, 07:36:07 am
Stavo prendendo in considerazione il seguente amplificatore operazionale:

Per banda passante si intende le due frequenze, inferiore e superiore, di un segnale sinusoidale in cui la tensione in uscita è attenuata di 3db, ovvero Vout = Vin / 1.414 o se preferisci Vout = Vin / sqr(2).
Tradotto in pratica significa che se al tuo amplificatore con filtro applichi in ingresso una sinusoide 10 mVpp a 15.9 kHz invece di ottenere in uscita lo stesso segnale di 1Vpp avrai un segnale di circa 1/1.414 = 0.707 Vpp.
Se poi parliamo di segnali non sinusoidali le cose si complicano non poco perché c'è mettere in considerazione anche il taglio delle armoniche che lo compongono ed ecco che se applichi un'onda quadra di 10 mVpp a 15.9 kHz in uscita ottieni una sinusoide abbastanza distorta sempre di 0.707 Vpp perché vengono tagliate via tutte le armoniche.
Cosa comporta il limite di banda a 15.9 kHz nella tua applicazione dipende da che tipo di segnale devi amplificare e dalla sua frequenza, da notare che l'amplificatore in oggetto è accoppiato in AC, quindi non parte da 0 Hertz, a occhio il limite di banda inferiore è circa 15-20 Hz.
Se vuoi ottenere la banda massima, circa 100 kHz, devi rimuovere C1 e C3.
6655  International / Generale / Re: serialMode errore on: March 06, 2012, 07:24:07 am
altre idee su come provare? xke se no non saprei proprio come usare la scheda non avendo nemmeno un esempio funzionante

Il software che hai scaricato è quello per comandare la scheda tramite Xbee, richiede l'inserimento di varie librerie tra quelle di Arduino per essere compilato.
Scarica l'esempio di base, senza utilizzo del modulo Xbee e vedrai che non hai problemi a compilarlo e far funzionare la shield, in pratica devi solo settare lo stato dei pin 4-5-6-7 per azionare i relè.

Questo è lo sketch di esempio per i relè:
Code:
//  RelayShieldDemoCode.pde  to control seeed relay shield by arduino.
//  Copyright (c) 2010 seeed technology inc.
//  Author: Steve Chang
//  Version: september 2, 2010
//
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of the GNU Lesser General Public
//  License as published by the Free Software Foundation; either
//  version 2.1 of the License, or (at your option) any later version.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

unsigned char relayPin[4] = {4,5,6,7};

void setup()
{
  int i;
  for(i = 0; i < 4; i++)
  {
    pinMode(relayPin[i],OUTPUT);
  }
}

//just an simple demo to close and open 4 relays
// every other 1s.
void loop()
{

  int i=0;
  for(i = 0; i < 4; i++)
  {
    digitalWrite(relayPin[i],HIGH);
  }
  delay(1000);
  for(i = 0; i < 4; i++)
  {
    digitalWrite(relayPin[i],LOW);
  }
  delay(1000);
 
}
6656  International / Generale / Re: Esiste un comando: che micro sto usando? on: March 06, 2012, 06:23:03 am
ma quindi questo debriccatore non sarebbe in grado, già che c'è, di uppare un boot-loader/un codice hex sul micro? sarebbe molto comodo

Se non erro allo stato attuale il progetto di Michele è un "debricker" di micro.
Non mi pare sia prevista la connessione con un pc e l'uso come un programmatore, in teoria è possibile farlo facendo un merge tra l'attuale software e lo sketch ISP, giusto per non complicarsi la vita con la programmazione vera e propria in HV.
6657  International / Generale / Re: Esiste un comando: che micro sto usando? on: March 06, 2012, 06:15:47 am
Però posso "recuperare" il micro semplicemente inviandogli uno sketch che sblocca i lock e cancella la flash, quindi mi basta Arduino, è così?
Comunque va da sé che non serve a niente sapere se il micro è bloccato o meno.

Più in generale basta che invii il comando di cancellazione tramite programmatore, non è necessario per forza riprogrammarlo, tra parentesi questo comando è semplicissimo da inviare tramite HVPP/HVSP, potresti includerlo tramite le varie opzioni del programmatore.

Code:
27.7.3 Chip Erase
The Chip Erase will erase the Flash and EEPROM
(1)
 memories plus Lock bits. The Lock b
not reset until the program memory has been completely erased. The Fuse bits a
changed. A Chip Erase must be performed before the Flash and/or EEPROM
reprogrammed.
Note: 1. The EEPRPOM memory is preserved during Chip Erase if the EESAVE Fuse is program
Load Command “Chip Erase”
1. Set XA1, XA0 to “10”. This enables command loading.
2. Set BS1 to “0”.
3. Set DATA to “1000 0000”. This is the command for Chip Erase.
4. Give XTAL1 a positive pulse. This loads the command.
5. Give WR  a negative pulse. This starts the Chip Erase. RDY/BSY  goes low.
6. Wait until RDY/BSY goes high before loading a new command.
6658  International / Generale / Re: Esiste un comando: che micro sto usando? on: March 06, 2012, 06:01:02 am
lo scopo non è recuperare il codice, ma recuperare la funzionalità del micro. Pero se è difficile, basta semplicemente avvisare che il micro è bloccato.

Non hai capito, se il micro è protetto non puoi recuperare nulla, puoi solo cancellarlo per ripristinare i lock bits.
Il programmatore HV di michele consente di sbloccare i micro "mattonati" per una errata programmazione dei fuse, in questa fase non ha alcuna importanza come sono settati i lock bits, idem per la parte riprogrammazione perché comunque la prima operazione da fare è l'erase che comporta automaticamente il ripristino dei lock bits.
6659  International / Generale / Re: come trasformare un motore trifase con magneti permanenti in motore passo passo? on: March 06, 2012, 05:57:40 am
Sono motori brushless a tre cavi tipo quelli da modellismo oppure motori trifase industriali ?

Anche se si tratta di BLDC realizzare un driver per farli funzionare non è una cosa semplice, fa prima ad usare un normale ESC per modellismo, e comunque non è possibile in nessun modo usare un BLDC, un BLAC, o un classico trifase AC come se fosse uno stepper.
Al limite si può usare un BLDC sensored abbinato ad un encoder ad alta risoluzione, come viene fatto sulle CNC più recenti, ma parliamo di oggetti che costano molto e che richiedono sistemi di controllo decisamente complessi sia come driver di potenza che come elettronica di controllo.
Arduino può sintetizzare tramite DDS tre sinusoidi a 120° con frequenza variabile, max poche centinaia di Hertz, atte a controllare un driver per un normale trifase, ovvero l'equivalente di un inverter, ma non è una cosa semplice da implementare sia come software che come driver di potenza hardware.
6660  International / Generale / Re: Esiste un comando: che micro sto usando? on: March 06, 2012, 05:47:30 am
quindi se mi trovo davanti ad un micro bloccato lo posso sbloccare semplicemente invertendo lo stato dei due lock bit?

Non puoi resettare a piacere i lock bits, è solo possibile settarli in fase di programmazione, e serve un vero programmatore hardware per farlo, vengono resettati esclusivamente cancellando la memoria, il motivo è ovvio dato che si tratta di una protezione lo scopo decade nel momento stesso in cui cancello il contenuto del micro.
Il data sheet tra le varie opzioni dei lock bits, che sono da controllare per ogni modello, cita questo:

Code:
Further programming and verification of the Flash and EEPROM
is disabled in Parallel and Serial Programming mode. The Boot
Lock bits and Fuse bits are locked in both Serial and Parallel
Programming mode.

Parla di verifica della flash e della EPPROM, è sottointeso che non è più possibile leggerle tramite un programmatore, infatti se si settano i lock bits per la protezione sia in lettura che scrittura dopo aver programmato il micro fallisce l'eventuale verifica, ed è normale che sia così, inoltre non è più possibile riprogrammare il micro e leggerne il contenuto.
Dopo aver settato i lock bits che proteggono la memoria flash per ripristinare la riprogrammabilità è indispensabile eseguire prima una cancellazione.
Pages: 1 ... 442 443 [444] 445 446 ... 696