Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #45 on: April 10, 2012, 06:52:07 am » |
cosa intendi per "polling"? il sensore è questo: http://www.robot-electronics.co.uk/htm/srf05tech.htmcomunque questo è un codice di prova dopo avrò 4 di questi sensori e tante altre cose...
|
|
|
|
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #46 on: April 10, 2012, 07:45:34 am » |
allora, nuova questione  quel codice che ho postato prima funziona bene, devo sistemarlo ancora un po' ma per provare va bene... fin ora ho provato sugli INT0 e 1, ma avendo a disposizione altri 4 INT sul mega volevo usare anche quelli, il problema è che lo stesso codice con le opportune modifice da risultati strani su questi altri 4 pin... sembra che rillevi dei cambiamenti che in realtà non ci sono e che sugli INT0 e 1 non erano presenti... cosa può essere? non mi sembra di aver sbagliato niente perchè il codice è lo stesso...  confido nel vostro aiuto! grazie in anticipo! 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #47 on: April 10, 2012, 09:56:42 am » |
Io continuo a non capire. Ma perché vuoi usare lo stesso pin per trasmettere il segnale e per leggerlo con un interrupt, essendo così costretto a disattivare l'interrupt per evitare letture errate?
1) attivi l'INT0 2) spedisci il treno di impulsi per attivare il sensore 3) l'ISR a questo punto legge le risposte del sensore e le "presenta" al codice principale 4) il codice gestisce le informazioni in ricezione e poi torna al punto 2)
|
|
|
|
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #48 on: April 10, 2012, 09:59:06 am » |
perchè il sensore usa lo stesso pin per fare queste due operazioni...
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #49 on: April 10, 2012, 10:01:34 am » |
perchè il sensore usa lo stesso pin per fare queste due operazioni...
 E quanto tempo passa dall'inizio dei segnali di attivazione alla risposta del sensore? Ce la fai, cioè, a commutare lo stato del pin da OUTPUT ad INPUT in quel lasso di tempo? PS: per "polling" si intende la procedura di raccolta dati.
|
|
|
|
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #50 on: April 10, 2012, 10:05:36 am » |
This mode uses a single pin for both Trigger and Echo signals, and is designed to save valuable pins on embedded controllers. To use this mode, connect the mode pin to the 0v Ground pin. The echo signal will appear on the same pin as the trigger signal. The SRF05 will not raise the echo line until 700uS after the end of the trigger signal. You have that long to turn the trigger pin around and make it an input and to have your pulse measuring code ready. The PULSIN command found on many popular controllers does this automatically. si ho 700us ce la faccio  ho sempre fatto con pulseIn per vedere la durata dell'impulso, adesso volevo provare a fare con gli interrupt, con i pin 2 e 3 funziona (INT0 e INT1), ma con gli altri no e non capisco il perchè, il codice è uguale... 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #51 on: April 10, 2012, 10:56:05 am » |
Però quel sensore funziona anche con pin separati. con i pin 2 e 3 funziona (INT0 e INT1), ma con gli altri no e non capisco il perchè, il codice è uguale...  I pin del Mega sono differenti. http://arduino.cc/en/Hacking/PinMapping2560L'INT0 e 1 non sono mappati sui pin 2 e 3 ma su 21 e 20, vedo dall'immagine.
|
|
|
|
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #52 on: April 10, 2012, 11:06:50 am » |
Però quel sensore funziona anche con pin separati. si si lo so ma preferisco usarlo così che mi risparmio qualche pin... mmmm non sono d'accordo, io ho letto così: External Interrupts: 2 (interrupt 0), 3 (interrupt 1), 18 (interrupt 5), 19 (interrupt 4), 20 (interrupt 3), and 21 (interrupt 2). These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details. sugli INT0 (pin 2) e INT1 (pin 3) funziona bene, mentre sugli INT2, INT3, INT4 e INT5 no, non so il perchè 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #53 on: April 10, 2012, 11:17:46 am » |
Non ho una MEGA per poterti dire chi ha ragione e chi ha torto ma il datasheet, sulla cui autorevolezza non ci piove, conferma la mappatura di quell'immagine e non dello scritto che hai riportato. A questo punto andrebbe aperta la libreria che gestisce gli interrupt per vedere come mappa i pin ma è una cosa che non mi va di fare dato che non ho interesse a farla  EDIT: difatti ho ragione io (ed il datasheet). Se vedi i pin 2 e 3 dell'immagine che ti ho postato, noti che su quei pin sono riportati gli INT4 e INT5! Quindi la mappatura fatta dalla libreria di Arduino "inganna" perché rigira i pin un po' come vuole. E c'è una priorità nell'esecuzione degli interrupt che questo stravolgimento non tiene conto. Quindi non so a cosa poi viene mappato l'INT4 se l'INT4 è venduto come INT0 
|
|
|
|
« Last Edit: April 10, 2012, 11:20:19 am by leo72 »
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #54 on: April 10, 2012, 11:20:09 am » |
ma gli INT0 e INT1 funzionano, sono gli altri che rillevano cose strane... 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #55 on: April 10, 2012, 11:20:47 am » |
ma gli INT0 e INT1 funzionano, sono gli altri che rillevano cose strane...  Rileggi il mio edit precedente 
|
|
|
|
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #56 on: April 10, 2012, 11:24:22 am » |
eh ecco grazie  sarebbe interessante da capire perchè leggono cose strane...
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #57 on: April 10, 2012, 11:30:50 am » |
Ti consiglio di studiarti il datasheet, dandogli una scorsa molto veloce ci sono alcune cose da tener conto nell'uso degli INT, che non so se il codice dell'Arduino esegue (es. pag. 113 in basso). Buon divertimento. 
|
|
|
|
|
Logged
|
|
|
|
|
Vicenza, Italy
Offline
God Member
Karma: 4
Posts: 829
ƎR like no other.
|
 |
« Reply #58 on: April 10, 2012, 11:39:30 am » |
pag 113 di cosa? del datasheet del atmega2560? io ho visto che sul reference dicevano che per il mega erano disponibili questi 4 INT in più ma non ho letto controindicazioni... boh adesso guardo un po' in giro... grazie comunque 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8184
:(){:|:&};:
|
 |
« Reply #59 on: April 10, 2012, 12:01:44 pm » |
un pin in input lasciato libero legge valori a caso.. molto utile per rilevare la presenza di esseri viventi nelle vicinanze :-)
|
|
|
|
|
Logged
|
|
|
|
|
|