Olimex Support Forum

Others => UEXT => Topic started by: reet on April 27, 2022, 03:00:10 AM

Title: MOD-IO2 DAC OUTPUT
Post by: reet on April 27, 2022, 03:00:10 AM
I want to read the analog output by enabling and configuring DAC. I tried by setting the SET_DAC(0x60) command, however, I was unable to read the analog data.

I am using Olimex MOD-IO2 with Arduino Uno using I2C communication.

The code used is as follows:

#include <Wire.h>
#include <IO2.h>
// Control MOD-IO2 at address 0x21
IO2 io2(0x21);
void setup () {
  Serial.begin(9600);
  Wire.begin();
  Wire.beginTransmission(0x21);       //Address
  Wire.write(0x60);                  //Set DAC command
  Wire.write(0x1F);                  //Value
  Wire.endTransmission();
  io2.pinMode(io2.GPIO2, io2.OUT);   //Configured GPIO2 as OUTPUT
}

void loop () {
  uint8_t data;
  data = analogRead(io2.GPIO2);
  Serial.println(data);
  delay(100);
}

Please guide and also let me know what changes needs to be done in the code.
Thanks!
 
Title: Re: MOD-IO2 DAC OUTPUT
Post by: LubOlimex on April 27, 2022, 03:54:11 PM
> I was unable to read the analog data.

Where and how are you reading the data? With external tool or are you trying to use a DAC as ADC?
Title: Re: MOD-IO2 DAC OUTPUT
Post by: reet on April 27, 2022, 07:13:56 PM
I am trying to read data on the Oscilloscope connected to GPIO2.
Also, I want to know if I need to set DACOUT1 in the code or is it done in the firmware 4.3
Title: Re: MOD-IO2 DAC OUTPUT
Post by: LubOlimex on April 28, 2022, 02:38:52 PM
What is the version of the firmware? Can you read it? 0x21 is the command code to read the current firmware - what does it return? The code should look something like:


int firmware_version;
Wire.begin();
Wire.beginTransmission(0x21); // address
Wire.write(0x21); // version code
Wire.endTransmission();
Wire.requestFrom((int)0x21, 1);
firmware_version = Wire.read();
Serial.println (firmware_version);
Title: Re: MOD-IO2 DAC OUTPUT
Post by: reet on April 28, 2022, 07:44:03 PM
I executed the above code and it returns the firmware revision 40.
Can you check my first post whether I am using the command in correct way?
The main purpose is that I want to have an analog output in range of 0 to 5V from GPIO2.
Title: Re: MOD-IO2 DAC OUTPUT
Post by: reet on April 29, 2022, 01:50:55 AM
As per README.pdf given in the firmware folder, it is mentioned that "Set DACOUT1 and configure GPIO2 as analog output" Is this done in firmware or have to do it? If it is to be done then can you please explain how?
Title: Re: MOD-IO2 DAC OUTPUT
Post by: LubOlimex on April 29, 2022, 08:13:30 AM
OK at least it is clear why the DAC function does not work. This is not the latest firmware, it has no DAC function which was added in the last release (firmware 4.3). You need to upgrade the firmware with the binary of the last firmware from the web-page of the device. To upgrade you need a PIC-compatible programmer and fitting for the 6-pin ICSP connector cable.

The analog output can't be in the 0-5V range. It is from 0 to around 3.2V. This is also mentioned in the documentation.
Title: Re: MOD-IO2 DAC OUTPUT
Post by: reet on April 30, 2022, 03:07:08 AM
The firmware revision code returned 64. Is it the correct revision?
Title: Re: MOD-IO2 DAC OUTPUT
Post by: LubOlimex on May 02, 2022, 10:52:45 AM
No. This is the previous version that has no DAC function.

The correct version should return 67 (43).