Loading...
Pages: 1 [2]   Go Down
Author Topic: I2C questo sconosciuto  (Read 960 times)
0 Members and 1 Guest are viewing this topic.
0
Online Online
Tesla Member
***
Karma: 82
Posts: 8195
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

paolo, attento a non confondere le inizializzazioni necessarie a far funzionare il sensore con le inizializzazioni di scale di lettura, numero di sample, modalità di funzionamento etc...
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16448
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Micky:
tu dici che leggi -1 -1 -1 -1...
ma:
Inoltre un tipo byte non può essere negativo, che tipo stai usando? Char o int?

Inoltre compili su 1.0. E su 0022/0023 hai provato?
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 63
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora ho provato a caricare il codice suggeritomi da PaoloP dopo averlo confrontato con il datasheet.devo dire che alcune cose le ho interpretate altre funzioni no comunque ho voluto testare il codice cosi com'è con IDE 0023 e per ora l'unica cosa che ho cambiato è l'indirizzo dell bma180 da 0x40 a 0x64:

Codice allegato...

ora non capisco perchè mi da un errore nel serial monitor:

Id = 104
PROBLEM..... Result code is 2
 X:



 i collegamenti sono

IMU            Arduino
SDA           pin4
SCL           pin5
+5v           5v
GND          gnd

poi ho messo una resistenza da 4.7KOhm tra SDA e 5v e un altra tra SLC e 5v.
Logged

Cagliari
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3001
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'IDE 1.0 attiva di default le pull-up interne. Non so se devi diminuire il valore di quelle esterne o disattivare le interne.
Per quanto riguarda l'errore, esso deriva dalla funzione twi_writeTo che è richiamata da Wire.EndTrasmission().
Code:
/*
 * Function twi_writeTo
 * Desc     attempts to become twi bus master and write a
 *          series of bytes to a device on the bus
 * Input    address: 7bit i2c device address
 *          data: pointer to byte array
 *          length: number of bytes in array
 *          wait: boolean indicating to wait for write or not
 * Output   0 .. success
 *          1 .. length to long for buffer
 *          2 .. address send, NACK received
 *          3 .. data send, NACK received
 *          4 .. other twi error (lost bus arbitration, bus error, ..)
 */

Il codice 2 si riferisce ad una mancata risposta: o hai sbagliato Address oppure ci sono problemi di comunicazione.
Per gli indirizzi c'era uno sketch per elencare tutte le periferiche presenti sul bus. Non trovo il link però.  smiley-roll-blue
Logged

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Offline Offline
Jr. Member
**
Karma: 0
Posts: 63
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho trovato questo :
http://todbot.com/arduino/sketches/I2CScanner/I2CScanner.pde

il risultato è questo:

I2CScanner ready!
starting scanning of I2C bus from 1 to 100...
addr: 1          addr: 2          addr: 3          addr: 4       
addr: 5          addr: 6          addr: 7          addr: 8       
addr: 9          addr: 10          addr: 11          addr: 12       
addr: 13          addr: 14          addr: 15          addr: 16       
addr: 17          addr: 18          addr: 19          addr: 20       
addr: 21          addr: 22          addr: 23          addr: 24       
addr: 25          addr: 26          addr: 27          addr: 28       
addr: 29          addr: 30 found!   addr: 31          addr: 32       
addr: 33          addr: 34          addr: 35          addr: 36       
addr: 37          addr: 38          addr: 39          addr: 40       
addr: 41          addr: 42          addr: 43          addr: 44       
addr: 45          addr: 46          addr: 47          addr: 48       
addr: 49          addr: 50          addr: 51          addr: 52       
addr: 53          addr: 54          addr: 55          addr: 56       
addr: 57          addr: 58          addr: 59          addr: 60       
addr: 61          addr: 62          addr: 63          addr: 64 found!
addr: 65          addr: 66          addr: 67          addr: 68       
addr: 69          addr: 70          addr: 71          addr: 72       
addr: 73          addr: 74          addr: 75          addr: 76       
addr: 77          addr: 78          addr: 79          addr: 80       
addr: 81          addr: 82          addr: 83          addr: 84       
addr: 85          addr: 86          addr: 87          addr: 88       
addr: 89          addr: 90          addr: 91          addr: 92       
addr: 93          addr: 94          addr: 95          addr: 96       
addr: 97          addr: 98          addr: 99          addr: 100       

done
come mai trova 2 indirizzi? 0x30 e 0x64?

edit: l'indirizzo 30 è un altro sensore sulla IMU dovevano essere 4 ma dato che fa la scansione fino al 100 gli altri due non li vede il 105 e il 119.
« Last Edit: May 27, 2012, 01:30:07 pm by micky861 » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 63
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora ho cambiato #define address 0x64 in #define address 64e ora sembrerebbe funzionare,è un pò lento ad aggiornare le letture.

edit:ho abbassato il delay da 1000 a 100 ora è più veloce.
ma ho bisogno di tutto il codice per avere letture sull' asse X?
« Last Edit: May 27, 2012, 01:14:41 pm by micky861 » Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 161
Posts: 15676
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho trovato questo :
http://todbot.com/arduino/sketches/I2CScanner/I2CScanner.pde
...
edit: l'indirizzo 30 è un altro sensore sulla IMU dovevano essere 4 ma dato che fa la scansione fino al 100 gli altri due non li vede il 105 e il 119.
Non so perché quel sketch fa la scansione solo fino al indirizzo 100 e non fino al indirizzo massimo possibile ( 127).

modifica la riga
Code:
byte end_address = 100;

in
Code:
byte end_address = 127;

e trovi tutti gli indirizzi.

Ciao Uwe
Logged

0
Online Online
Tesla Member
***
Karma: 82
Posts: 8195
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora ho cambiato #define address 0x64 in #define address 64e ora sembrerebbe funzionare,è un pò lento ad aggiornare le letture.

edit:ho abbassato il delay da 1000 a 100 ora è più veloce.
ma ho bisogno di tutto il codice per avere letture sull' asse X?

se hai un delay ci credo che le letture son lente :-)

se vuoi leggere solo l'asse X, allora ti posizioni sul suo indirizzo di partenza e poi leggi tanti byte quanti sono i registri che compongono il valore asse X
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Jr. Member
**
Karma: 0
Posts: 63
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scuate forse non sono stato molto chiaro, volevo dire se è possibile snellire il codice dato che mi serve solo un valore di esso. ho questo dubbio perchè non ho ancora ben capito tutto il suo funzionamento e vorrei eliminare le parti che non mi interessano per la lettura dell'asse X senza peròprovocare dei "danni" al codice..
Logged

0
Online Online
Tesla Member
***
Karma: 82
Posts: 8195
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quale codice? postalo che vediamo dove si può sforbiciare
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Jr. Member
**
Karma: 0
Posts: 63
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

come vedrai ho gia disabilitato con */ ---/* stampa sulla seriale dei valori Y Z,ma è la metà finale che non sò se si può eliminare qualcosa.
per questo codice uso IDE 0023 che poi tra l'altro volevo importarlo nell IDE 1.0.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 63
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dimenticanza
Logged

Cagliari
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3001
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le funzioni readAccel e readAccel2 non vengono richiamate quindi puoi eliminarle.
Logged

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Pages: 1 [2]   Go Up
Print
 
Jump to: