Ho inserito il codice sopra ma ancora non funziona: rilevo col tester una tensione di 3,27 volt circa in tutti e 4
i canali.
Problema a far funzionare l'MCP4728
Moderatori: MassimoB,
WALTERmwp,
xyz
0
voti
Almeno qualcosa fa...
Un passetto avanti rispetto a prima.
Dal terminale (System.println) cosa leggi?
Dopo l'ultima parentesi graffa dell'if e prima del primo mcp.setChannelValue aggiungi
Poi vediamo cosa dice al terminale.
Un passetto avanti rispetto a prima.
Dal terminale (System.println) cosa leggi?
Dopo l'ultima parentesi graffa dell'if e prima del primo mcp.setChannelValue aggiungi
- Codice: Seleziona tutto
Serial.println("MCP4728 chip found");
Poi vediamo cosa dice al terminale.
0
voti
Ecco il diagramma dell'accrocco:
Ho inserito il cdice richiesto dopo la graffa dell' if() e dal monitor seriale ottengo il seguente messaggio:
Non ricevo il seguente messaggio:
Ho inserito il cdice richiesto dopo la graffa dell' if() e dal monitor seriale ottengo il seguente messaggio:
- Codice: Seleziona tutto
Adafruit MCP4728 test!
Failed to find MCP4728 chip
Non ricevo il seguente messaggio:
- Codice: Seleziona tutto
MCP4728 chip found
2
voti
alien75 ha scritto:Ho fatto il pullup a 3,3V perché è consigliato dai datasheet dato che lo YUN lavora con uscite a 3,3V.
Questo non è corretto. Mi sono guardato le specifiche dello YUN ed ha un microprocessore AR9331 che lavora a 3.3v. C'è anche un ATmega32U4 che lavora a 5v ed è con esso che vengono esposti i pin I/O. Quindi I2C a 5v.
"It is not possible to access the I/O pins of the Atheros AR9331. All I/O lines are tied to the 32U4.
Each of the 20 digital i/o pins on the Yún can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volt. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions: Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATmega32U4 hardware serial capability. Note that on the Yún, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class..."
Posso suggerirti, prima di vedere se il DAC funziona, di controllate se funziona il dialogo I2C. A tal proposito potresti utilizzare un firmware I2C scanner per Arduino. Anche perché l'MCP4728 ha l'address i2c programmabile e se è stato cambiato quello di default non potrai mai stabilire una comunicazione senza conoscere il giusto address.
0
voti
Ecco lo schema modificato secondo le indicazioni precedenti:
ed ecco il codice dello scanner I2C:
Ho fatto 432 scansioni dopodichè mi sono fermato ma non ho rilevato nessuna porta nel MCP4728.
ed ecco il codice dello scanner I2C:
- Codice: Seleziona tutto
#include <Wire.h>
int num=0;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
{
Serial.println("No I2C devices found\n");
Serial.println(num);
++num;
}
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
Ho fatto 432 scansioni dopodichè mi sono fermato ma non ho rilevato nessuna porta nel MCP4728.
0
voti
I pullup ci vanno. A meno che la tua schedina non li ha già.
Chi c’è in linea
Visitano il forum: Nessuno e 5 ospiti