0
Offline
Faraday Member
Karma: 17
Posts: 3933
Arduino rocks
|
 |
« Reply #45 on: November 07, 2012, 04:45:55 pm » |
certo, ma non potendo accedere direttamente ai pin di ingresso del componente, l'impedenza di ingresso sara' influenzata dai pin e dalla configurazione che usi. Se connetti i pin del componente agli Analogpin avrai una certa impedenza di ingresso, se ci attivi la pullup cambiera', se scegli l'aref come pin sara' ancora diverso Cioe' se anche volendo si puo' indicare il valore richiesto, il componente pero' e' chiuso in una scatola che e' raggiungibile solo attraverso altri componenti. E' un dato inutile da dare secondo me
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16530
Don't know what I do
|
 |
« Reply #46 on: November 07, 2012, 04:50:13 pm » |
Ho capito cosa vuoi dire.
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #47 on: November 08, 2012, 01:46:38 am » |
Testato, non condivido quello che dici, perchè al massimo l'impedenza di entrata di un opamp usato come comparatore analogico è il punto dipartenza dei calcoli necessari alla progettazione della rete esterna di polarizzazione e delle correnti in gioco no? perchè dici che è un dato inutile?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3933
Arduino rocks
|
 |
« Reply #48 on: November 08, 2012, 04:14:50 pm » |
non sto' dicendo che e' inutile dare questo valore per un OAmp in generale, ma per un Oamp che e' "nascosto" dietro ad altri ingressi diventa un dato fuorviante. Il nostro OA non ha accesso diretto a due pin esterni, ma arriva all'esterno tramite diversi pin, a scelta del programmatore, i quali pin avranno proprie caratteristiche. A questo punto si dovrebbe dare l'impedenza di ingresso di ogni modalita' di connessione, perche' di certo se usi Aref come pin Rispetto ad A0, ci sara' un'impedenza diversa Tu come la vedi ? (cit.: Quelo) 
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #49 on: November 09, 2012, 03:14:24 am » |
Credo che sia giusto quello che dici, ma alla fine puoi giocare con uno solo dei due ain che può essere connesso ad aref oppure ad uno qualsiasi degli ingressi multiplexati dall'adc (sbaglio Leo?) quindi le impedenze da conoscere sarebbero due. Considerazione collaterale... ma se l'impedenza è diversa a seconda del collegamento,avremo misure differenti usando pin differenti?! c'è grossa crisi (cit.: Quelo) smiley
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16530
Don't know what I do
|
 |
« Reply #50 on: November 09, 2012, 03:22:35 am » |
Credo che sia giusto quello che dici, ma alla fine puoi giocare con uno solo dei due ain che può essere connesso ad aref oppure ad uno qualsiasi degli ingressi multiplexati dall'adc (sbaglio Leo?) quindi le impedenze da conoscere sarebbero due.
AIN+ si può collegare sia al pin AIN0 che alla tensione interna di riferimento, mentre AIN- si può collegare sia al pin AIN1 sia ad uno degli ingressi analogici (non AREF).
|
|
|
|
|
Logged
|
|
|
|
|
Parma
Offline
Edison Member
Karma: 10
Posts: 2120
|
 |
« Reply #51 on: March 04, 2013, 08:03:43 am » |
Compilando per ATTiny85 In file included from C:\arduino-1.0.3\hardware\tiny\cores\tiny/Stream.h:24, from C:\arduino-1.0.3\hardware\tiny\cores\tiny/TinyDebugSerial.h:31, from C:\arduino-1.0.3\hardware\tiny\cores\tiny/WProgram.h:18, from C:\arduino-1.0.3\hardware\tiny\cores\tiny/Arduino.h:4, from C:\arduino-1.0.3\libraries\analogComp\/analogComp.h:32, from C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp:7: C:\arduino-1.0.3\hardware\tiny\cores\tiny/Print.h:37:1: warning: "BIN" redefined In file included from c:/arduino-1.0.3/hardware/tools/avr/lib/gcc/../../avr/include/avr/iotn85.h:38, from c:/arduino-1.0.3/hardware/tools/avr/lib/gcc/../../avr/include/avr/io.h:284, from c:/arduino-1.0.3/hardware/tools/avr/lib/gcc/../../avr/include/avr/interrupt.h:38, from C:\arduino-1.0.3\hardware\tiny\cores\tiny/WProgram.h:8, from C:\arduino-1.0.3\hardware\tiny\cores\tiny/Arduino.h:4, from C:\arduino-1.0.3\libraries\analogComp\/analogComp.h:32, from C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp:7: c:/arduino-1.0.3/hardware/tools/avr/lib/gcc/../../avr/include/avr/iotnx5.h:55:1: warning: this is the location of the previous definition C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp: In member function 'uint8_t analogComp::setOn(uint8_t, uint8_t)': C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp:57: error: 'DIDR1' was not declared in this scope C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp: In member function 'void analogComp::setOff()': C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp:112: error: 'DIDR1' was not declared in this scope C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp: At global scope: C:\arduino-1.0.3\libraries\analogComp\analogComp.cpp:159: warning: 'ANALOG_COMP_vect' appears to be a misspelled signal handler
E' previsto un aggiornamento della libreria per correggere questo errore che previene la compilazione?
|
|
|
|
« Last Edit: March 04, 2013, 08:13:54 am by flz47655 »
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16530
Don't know what I do
|
 |
« Reply #52 on: March 04, 2013, 09:01:05 am » |
Ora verifico...
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16530
Don't know what I do
|
 |
« Reply #53 on: March 04, 2013, 09:45:51 am » |
Ho scritto un controllo troppo semplicistico relativamente alla parte in cui provvedo a disattivare gli input digitali sui pin AIN0/1 quando vengono usati come ingressi per il comparatore. Ho corretto mettendo un check più complesso.
Però ho trovato un altro problemino, appena ho terminato la correzione metto online la nuova versione.
EDIT. è online la versione 1.1.0 provala e fammi sapere, non ho potuto verificarla in pratica se sulla Tiny85 funziona (la compilazione comunque va) perché non ho possibilità di farlo.
|
|
|
|
« Last Edit: March 04, 2013, 10:02:52 am by leo72 »
|
Logged
|
|
|
|
|
Parma
Offline
Edison Member
Karma: 10
Posts: 2120
|
 |
« Reply #54 on: March 05, 2013, 04:08:11 am » |
Ti ringrazio, appena posso la provo sul Tiny85, per il momento ha compilato con successo
|
|
|
|
|
Logged
|
|
|
|
|
Parma
Offline
Edison Member
Karma: 10
Posts: 2120
|
 |
« Reply #55 on: March 07, 2013, 07:18:44 pm » |
Col seguente codice analogComparator.setOn(INTERNAL_REFERENCE, A3); analogComparator.enableInterrupt(MiaFunzione); Purtroppo sembra non chiamare MiaFunzione..
|
|
|
|
« Last Edit: March 07, 2013, 07:22:10 pm by flz47655 »
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16530
Don't know what I do
|
 |
« Reply #56 on: March 08, 2013, 05:00:40 am » |
Col seguente codice analogComparator.setOn(INTERNAL_REFERENCE, A3); analogComparator.enableInterrupt(MiaFunzione); Al metodo enableInterrupt devi passare sia la funzione da attivare sia il tipo di confronto: Esempio: analogComparator.enableInterrupt(MiaFunzione, CHANGE); Puoi usare anche FALLING o RISING
|
|
|
|
|
Logged
|
|
|
|
|
Parma
Offline
Edison Member
Karma: 10
Posts: 2120
|
 |
« Reply #57 on: March 08, 2013, 05:32:12 am » |
Se non specificato di default viene passato CHANGE Comunque ho già provato ma sembra non chiamare mai la funzione.. deve esserci qualcos'altro che non va mi sa..
|
|
|
|
|
Logged
|
|
|
|
|
Parma
Offline
Edison Member
Karma: 10
Posts: 2120
|
 |
« Reply #58 on: March 08, 2013, 06:17:30 am » |
Per capirci qualcosa ho scritto un semplice codice per utilizzare direttamente il comparatore ma.. cambiando il pin PB0 e PB1 non viene chiamato l'interrupt con il simulatore di atmel studio, puoi darmi qualche dritta? #define F_CPU 8000000UL #include <util/delay.h> #include <avr/io.h> #include <avr/interrupt.h>
volatile int x = 0; ISR(ANA_COMP_vect) { x--; if (bit_is_set(ACSR, ACO)) //Check for rising or falling edge { PORTB |= _BV(PB4); // Turn led on } else { PORTB &= ~(_BV(PB4)); // Turn led off } } int main(void) { // ACSR (Analog Comparator Setting Register) // ACIE (Analog Comparator Interrupt Enable) ACSR |= _BV(ACIE); DDRB |= _BV(PB4); // PB4 output sei(); // Enable global interrupt while(1) { x++; } }
EDIT: Avevo provato analogComp su un device fisico, il problema col mio codice penso sia legato al simulatore che non emula bene la periferica
|
|
|
|
« Last Edit: March 08, 2013, 07:39:34 am by flz47655 »
|
Logged
|
|
|
|
|
Parma
Offline
Edison Member
Karma: 10
Posts: 2120
|
 |
« Reply #59 on: March 08, 2013, 08:05:04 am » |
Maledetto simulatore! Su un device reale il semplice codice funziona  Il problema nella libreria è l'ISR che è chiamata sui Tiny e su altri micro ANA_COMP_vect mentre nell'ATmega328P ed in altri è chiamata ANALOG_COMP_vect http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html  Se vuoi sistemarla la modifica è immediata Ciao
|
|
|
|
|
Logged
|
|
|
|
|
|