background image

OLIMEX© 2020

MOD-IO user's manual

2.7.3 Reading the value of an analog input

Get the voltage applied to one of the analogue inputs of the board. The board features four 10bit 
resolution analogue inputs (input voltages from 0 – 3.3V) and each of them is read with a separate 
command. Command should have the following common format:

************************************
S aaaaaaaW cccccccc P S aaaaaaaR dddddddd 000000dd P
************************************

,where 
S – start condition
aaaaaaa – slave address of the board
W – write mode, should be 0
cccccccc – command code, should be 0×30 for AIN1, 0×31 for AIN2, 0×31 for AIN3, 0×31 for 
AIN4.
P – Stop condition
R – read mode, should be 1
dddddddd 000000dd – Little Endian (LSB: MSB) 10bit binary encoded value corresponding to the
input voltage. Range is 0 – 0×3FF and voltage on the pin is calculated using the following simple 
formula: voltage = (3.3 / 1024) * (read value) [Volts]

Note: Successive readings from the board without reissuing the command code will not get an updated 
value of the voltage (i.e. the user will read the same value) until another command is issued.

Example:

Reading AN1 in pseudo code:

i2cStart();

//Send start condition

i2cSend(0xb0);

//This is 0×58 shifted to left one time and added 0 as W

i2cSend(0x30);

//Read analog value of IN1

i2cStop();

//Send stop condition

i2cStart();

//Send start condition. You can use i2cRestart() instead

i2cSend(0xb1);

//This is 0×58 shifted to left one time and added 1 as W

l_byte = i2cRead(); //Read the low 8 bits of the ADC reading
h_byte = i2cRead(); //Read the high 2 bit of the ADC reading
i2cStop();

//Send stop condition

/* Since l_byte is (LSB:MSB) we need to convert it to (MSB:LSB). To swap bits one by one do 
the following */

analog = 0;
for(int index = 0; index < 8; index++){

analog |= ((l_byte & 0x80) ? 1 : 0) << index;
l_byte <<= 1; 

}

/* Now add the high 2 bit to the value */
analog |= ((h_byte & 0x02) ? 1 : 0) << 8;
analog |= ((h_byte & 0x01) ? 1 : 0) << 9;

Page 12 of 30

Summary of Contents for MOD-IO

Page 1: ...MOD IO Open source hardware UEXT extension board with relays and USER S MANUAL Document revision C May 2020 Designed by OLIMEX Ltd 2014 All boards produced by Olimex LTD are ROHS compliant...

Page 2: ...However all warranties implied or expressed including but not limited to implied warranties of merchantability or fitness for purpose are excluded This document is intended only to assist the reader i...

Page 3: ...2 Getting the state of opto isolators 11 2 7 3 Reading the value of an analog input 12 2 7 4 Changing the I2C address of a board 13 2 8 Arduino with MOD IO 14 2 9 OLinuXino boards with MOD IO 14 CHAPT...

Page 4: ...CS 25 6 Introduction to the chapter 25 6 1 Eagle schematic 25 6 2 Physical dimensions 27 CHAPTER 7 REVISION HISTORY AND SUPPORT 28 7 Introduction to the chapter 28 7 1 Document revision 28 7 2 Board r...

Page 5: ...mer JTAG 5 2 pin connector for in circuit programming with AVR JTAG AVR JTAG USB or another compatible JTAG debugger EXT extension connector for the unused AVR ports Status LED Reset IC ZM33064 Quartz...

Page 6: ...compared to the Atmel s ATmega16 MOD IO2 is also stackable and again comes with custom firmware for easier start It uses I2C for communication MOD IO2 is also a completely open design hardware files...

Page 7: ...d to the same electrical source to the same utility power socket In rare cases different polarity might cause hardware damage to one of the boards in your setup 2 2 Hardware requirements In order to s...

Page 8: ...s that can be used the most popular programmer being AVRDude There are a lot of tutorials on how to configure a Linux environment for AVR Please note that setting such a working development environmen...

Page 9: ...than what we have done Of course you can decide to completely skip this part and use the board as a general purpose AVR board You can write own software or firmware from scratch 2 6 Connecting more t...

Page 10: ...igital outputs relays OUT1 OUT2 OUT3 OUT4 signals O1 O2 O3 O4 Digital inputs optocouplers IN1 IN2 IN3 IN4 signals I1 I2 I3 I4 Analogue inputs AIN 1 2 AIN 1 3 AIN 2 1 AIN 2 2 signals AN1 AN2 AN3 AN4 Th...

Page 11: ...the MOD IO board i e bit0 corresponds to IN1 bit1 to IN2 and so on 1 means that power is applied to the optocoupler 0 means the opposite Note Successive readings from the board without reissuing the c...

Page 12: ...formula voltage 3 3 1024 read value Volts Note Successive readings from the board without reissuing the command code will not get an updated value of the voltage i e the user will read the same value...

Page 13: ...it address to update P Stop condition NB To protect the device from accidental address updates the user should hold the on board button pressed not the RESET button while issuing the command Successfu...

Page 14: ...ith I2C address 0x58 Refer to the comments inside the example for more information 2 9 OLinuXino boards with MOD IO You can connect MOD IO to all OLINUXINO boards that have UEXT connector Connect the...

Page 15: ...0 MOD IO user s manual To read digital inputs i2cget y f 2 0x58 0x20 c To read analog value of IN1 i2cset y f 2 0x58 0x30 i2cget y f 2 0x58 w To change address to 0 22 i2cset y f 2 0x58 0xF0 0x22 Page...

Page 16: ...t acquainted with the main parts of the board Note the names used on the board might differ from the names used below to describe them For the actual names check the MOD IO board itself 3 1 Layout top...

Page 17: ...ears at 85 C 100 years at 25 C Optional Boot Code Section with Independent Lock Bits In System Programming by On chip Boot Program True Read While Write Operation Programming Lock for Software Securit...

Page 18: ...xtended Standby I O and Packages 32 Programmable I O Lines Operating Voltages 2 7 5 5V Speed Grades 0 8 MHz Power Consumption 1 MHz 3V and 25 C Active 1 1 mA Idle Mode 0 35 mA Power down Mode 1 A More...

Page 19: ...ion with MOD IO There are several ways for communication with MOD IO and its main microcontroller ATMEGA16A The three typical communication routines are via I2C by utilizing the default firmware via I...

Page 20: ...you can still use it for programming as long as you make a small adapter or set jumper wires properly Tables with proper connections required to convert 6 pin ISP to 10 pin ISP are seasy to be found Y...

Page 21: ...D IO user s manual 5 4 EXT The EXT connector has 4 pins from the ATMEGA16A s port D PD4 PD5 PD6 and PD7 it has a VCC and GND for easier access also Pin Signal Name 1 PD7 2 PD6 3 PD5 4 PD4 5 3 3V 6 GND...

Page 22: ...e connected to each other even without the need of a cable Just plug the UEXT_FEMALE of board 1 to the UEXT_MALE of board 2 You can have as many boards as you want as long as each of them has unique i...

Page 23: ...2 OUT1 OUT2 OUT3 OUT4 digital outputs The digital outputs are controlled by the big orange relays on the top of the board OUT1 connected to ADC3 PA3 signal name O4 OUT2 connected to ADC2 PA2 signal n...

Page 24: ...tmega16l pin 43 AIN1 PB3 Status LED red with name LED1 visualize input IN1 state Status LED red with name LED2 visualize input IN2 state Status LED red with name LED3 visualize input IN3 state Status...

Page 25: ...We mostly use Eagle by Cad Soft 4 16r2 for designing However the files should be compatible with the latest Eagle available Cad Soft offers a trial version of their software that allows you to inspect...

Page 26: ...2 47K R33 3 9k R34 47K R35 1K R36 10K R37 1K R38 1K R39 10K R40 1K R41 1K R42 10K R43 1K R44 1K R45 10K R46 1K RAS 05 15 REL1 REL1 RAS 05 15 REL2 REL2 RAS 05 15 REL3 REL3 RAS 05 15 REL4 REL4 RST T1107...

Page 27: ...OLIMEX 2020 MOD IO user s manual 6 2 Physical dimensions Note that all dimensions are in mm Page 27 of 30...

Page 28: ...ed by i2c tools added instruction for usage in Arduino improved the section borders for better readability improved the numbering of the chapters 14 19 30 C 28 08 20 Fixed incorrect information about...

Page 29: ...le low cost programmer compatible with Atmel Studio 6 or any previous version also compatible with AVRDude AVR ISP MK2 an open source programmer based on ISP MKII compatible with Atmel Studio 6 or any...

Page 30: ...mmer tools and cables permitted within 7 days from the date of receipt of merchandise After such time all sales are considered final Returns of incorrect ordered items are allowed subject to a 10 rest...

Reviews: