6CM8
/
STM32F103C8_I2C_Scanner
prueba para el funcionamiento de la tarjeta de comunicacion I2C
main.cpp@0:d09d48e54bdd, 2019-10-25 (annotated)
- Committer:
- Antulius
- Date:
- Fri Oct 25 21:47:07 2019 +0000
- Revision:
- 0:d09d48e54bdd
i2c
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Antulius | 0:d09d48e54bdd | 1 | /* ############################################################################# |
Antulius | 0:d09d48e54bdd | 2 | ** Archivo : main.c |
Antulius | 0:d09d48e54bdd | 3 | ** Proyecto : STM32-F103C8_I2C_Scanner |
Antulius | 0:d09d48e54bdd | 4 | ** Procesador : STM32F103C8T6 |
Antulius | 0:d09d48e54bdd | 5 | ** Plataforma : Blue Pill |
Antulius | 0:d09d48e54bdd | 6 | ** Herramienta : Mbed Compiler |
Antulius | 0:d09d48e54bdd | 7 | ** Version : Driver 01.01 |
Antulius | 0:d09d48e54bdd | 8 | ** Compilador : GNU C Compiler |
Antulius | 0:d09d48e54bdd | 9 | ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 |
Antulius | 0:d09d48e54bdd | 10 | ** Descripción : |
Antulius | 0:d09d48e54bdd | 11 | ** Esta utileria inspecciona el bus I2C y enumera los dispositivos |
Antulius | 0:d09d48e54bdd | 12 | ** conectados. Proporciona su dirección base (en DEC y HEX). |
Antulius | 0:d09d48e54bdd | 13 | ** Componentes : I2C, Serial and Digital Output. |
Antulius | 0:d09d48e54bdd | 14 | ** Configuraciones : Includes, Stacks y Drivers externos |
Antulius | 0:d09d48e54bdd | 15 | ** Autores : |
Antulius | 0:d09d48e54bdd | 16 | ** ATEAM Development Group: |
Antulius | 0:d09d48e54bdd | 17 | ** - Antulio Morgado Valle |
Antulius | 0:d09d48e54bdd | 18 | ** |
Antulius | 0:d09d48e54bdd | 19 | ** Versión : Beta |
Antulius | 0:d09d48e54bdd | 20 | ** Revisión : A |
Antulius | 0:d09d48e54bdd | 21 | ** Release : 0 |
Antulius | 0:d09d48e54bdd | 22 | ** Date : 20/10/2019 |
Antulius | 0:d09d48e54bdd | 23 | ** Bugs & Fixes : |
Antulius | 0:d09d48e54bdd | 24 | ** |
Antulius | 0:d09d48e54bdd | 25 | ** Permission is hereby granted, free of charge, to any person obtaining a copy |
Antulius | 0:d09d48e54bdd | 26 | ** of this software and associated documentation files (the "Software"), to deal |
Antulius | 0:d09d48e54bdd | 27 | ** in the Software without restriction, including without limitation the rights |
Antulius | 0:d09d48e54bdd | 28 | ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
Antulius | 0:d09d48e54bdd | 29 | ** copies of the Software, and to permit persons to whom the Software is |
Antulius | 0:d09d48e54bdd | 30 | ** furnished to do so, subject to the following conditions: |
Antulius | 0:d09d48e54bdd | 31 | ** |
Antulius | 0:d09d48e54bdd | 32 | ** The above copyright notice and this permission notice shall be included in |
Antulius | 0:d09d48e54bdd | 33 | ** all copies or substantial portions of the Software. |
Antulius | 0:d09d48e54bdd | 34 | ** |
Antulius | 0:d09d48e54bdd | 35 | ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
Antulius | 0:d09d48e54bdd | 36 | ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
Antulius | 0:d09d48e54bdd | 37 | ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
Antulius | 0:d09d48e54bdd | 38 | ** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
Antulius | 0:d09d48e54bdd | 39 | ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
Antulius | 0:d09d48e54bdd | 40 | ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
Antulius | 0:d09d48e54bdd | 41 | ** THE SOFTWARE. |
Antulius | 0:d09d48e54bdd | 42 | ** ###########################################################################*/ |
Antulius | 0:d09d48e54bdd | 43 | /* |
Antulius | 0:d09d48e54bdd | 44 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
Antulius | 0:d09d48e54bdd | 45 | : Includes |
Antulius | 0:d09d48e54bdd | 46 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
Antulius | 0:d09d48e54bdd | 47 | */ |
Antulius | 0:d09d48e54bdd | 48 | #include "stm32f103c8t6.h" |
Antulius | 0:d09d48e54bdd | 49 | #include "mbed.h" |
Antulius | 0:d09d48e54bdd | 50 | #include "I2C.h" |
Antulius | 0:d09d48e54bdd | 51 | #include "Serial.h" |
Antulius | 0:d09d48e54bdd | 52 | |
Antulius | 0:d09d48e54bdd | 53 | /* |
Antulius | 0:d09d48e54bdd | 54 | :............................................................................... |
Antulius | 0:d09d48e54bdd | 55 | : Definiciones |
Antulius | 0:d09d48e54bdd | 56 | :............................................................................... |
Antulius | 0:d09d48e54bdd | 57 | */ |
Antulius | 0:d09d48e54bdd | 58 | #define Buzz_Off 0 // Estado del Buzzer Apagado |
Antulius | 0:d09d48e54bdd | 59 | #define Buzz_On 1 // Estado del Buzzer Encendido |
Antulius | 0:d09d48e54bdd | 60 | /* |
Antulius | 0:d09d48e54bdd | 61 | +------------------------------------------------------------------------------- |
Antulius | 0:d09d48e54bdd | 62 | | Configuración de Puertos |
Antulius | 0:d09d48e54bdd | 63 | +------------------------------------------------------------------------------- |
Antulius | 0:d09d48e54bdd | 64 | */ |
Antulius | 0:d09d48e54bdd | 65 | DigitalOut led_monitor(Green_Led); // Inicializa el LED Monitor |
Antulius | 0:d09d48e54bdd | 66 | DigitalOut buzzer (PB_1); // Inicializa el Buzzer Piezo Eléctrico |
Antulius | 0:d09d48e54bdd | 67 | //Serial terminal(PA_2, PA_3); // Inicializa la Comunicación Serial a la PC |
Antulius | 0:d09d48e54bdd | 68 | |
Antulius | 0:d09d48e54bdd | 69 | /* |
Antulius | 0:d09d48e54bdd | 70 | ** ------------------------------------------------------------------- |
Antulius | 0:d09d48e54bdd | 71 | ** Inicialización de los Pines de Funciones Especiales. |
Antulius | 0:d09d48e54bdd | 72 | ** ------------------------------------------------------------------- |
Antulius | 0:d09d48e54bdd | 73 | */ |
Antulius | 0:d09d48e54bdd | 74 | /************************************************* |
Antulius | 0:d09d48e54bdd | 75 | * Initialize the library with the numbers of the interface pins |
Antulius | 0:d09d48e54bdd | 76 | * Board STM32F103C8 |
Antulius | 0:d09d48e54bdd | 77 | * IDE Mbed On Line Compiler |
Antulius | 0:d09d48e54bdd | 78 | * LCD I2C PCF8574A |
Antulius | 0:d09d48e54bdd | 79 | * Pin Board LCD |
Antulius | 0:d09d48e54bdd | 80 | * I2C_SCL SCL (white) + resistance pull-up 4.7k |
Antulius | 0:d09d48e54bdd | 81 | * I2C_SDA SDA (blue) + resistance pull-up 4.7k |
Antulius | 0:d09d48e54bdd | 82 | * 5V 5V (red) |
Antulius | 0:d09d48e54bdd | 83 | * GND GND (black) |
Antulius | 0:d09d48e54bdd | 84 | ***************************************************/ |
Antulius | 0:d09d48e54bdd | 85 | //LiquidCrystal_I2C lcd(0x7E, LCDCOLUMNAS, LCDFILAS); |
Antulius | 0:d09d48e54bdd | 86 | //i2c_LCD lcd(0x7E, LCDCOLUMNAS, LCDFILAS); |
Antulius | 0:d09d48e54bdd | 87 | |
Antulius | 0:d09d48e54bdd | 88 | /**************************************************/ |
Antulius | 0:d09d48e54bdd | 89 | // Host PC Communication channels |
Antulius | 0:d09d48e54bdd | 90 | //Serial terminal(USBTX, USBRX); // Tx, Rx |
Antulius | 0:d09d48e54bdd | 91 | //Serial terminal(PA_9, PA_10); // Tx, Rx Using MAX3232 or BlueTooth |
Antulius | 0:d09d48e54bdd | 92 | Serial terminal(PA_2,PA_3); // Tx, Rx Terminal Serial (TTL Level) |
Antulius | 0:d09d48e54bdd | 93 | |
Antulius | 0:d09d48e54bdd | 94 | // Bluetooth Communication support |
Antulius | 0:d09d48e54bdd | 95 | //Serial bluetooth(PA_2, PA_3); // Tx, Rx |
Antulius | 0:d09d48e54bdd | 96 | |
Antulius | 0:d09d48e54bdd | 97 | // I2C Communication |
Antulius | 0:d09d48e54bdd | 98 | I2C i2c_wire(PB_7,PB_6); // SDA, SCL |
Antulius | 0:d09d48e54bdd | 99 | //I2C i2c_wire(PB_9,PB_8); // SDA, SCL |
Antulius | 0:d09d48e54bdd | 100 | //I2C i2c_wire(I2C_SDA,I2C_SCL); // SDA, SCL |
Antulius | 0:d09d48e54bdd | 101 | //I2C i2c_wire(PB_11,PB_10); // SDA, SCL (Alternativo) |
Antulius | 0:d09d48e54bdd | 102 | |
Antulius | 0:d09d48e54bdd | 103 | /* |
Antulius | 0:d09d48e54bdd | 104 | +------------------------------------------------------------------------------- |
Antulius | 0:d09d48e54bdd | 105 | | Variables Globales de Usuario |
Antulius | 0:d09d48e54bdd | 106 | +------------------------------------------------------------------------------- |
Antulius | 0:d09d48e54bdd | 107 | */ |
Antulius | 0:d09d48e54bdd | 108 | // Las variables globales del usuario van aquí ! |
Antulius | 0:d09d48e54bdd | 109 | /* |
Antulius | 0:d09d48e54bdd | 110 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Antulius | 0:d09d48e54bdd | 111 | | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción |
Antulius | 0:d09d48e54bdd | 112 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Antulius | 0:d09d48e54bdd | 113 | */ |
Antulius | 0:d09d48e54bdd | 114 | void I2C_Scanner(void); |
Antulius | 0:d09d48e54bdd | 115 | |
Antulius | 0:d09d48e54bdd | 116 | /* END Definitions */ |
Antulius | 0:d09d48e54bdd | 117 | /* |
Antulius | 0:d09d48e54bdd | 118 | #=============================================================================== |
Antulius | 0:d09d48e54bdd | 119 | | |
Antulius | 0:d09d48e54bdd | 120 | | P R O G R A M A P R I N C I P A L |
Antulius | 0:d09d48e54bdd | 121 | | |
Antulius | 0:d09d48e54bdd | 122 | #=============================================================================== |
Antulius | 0:d09d48e54bdd | 123 | */ |
Antulius | 0:d09d48e54bdd | 124 | int main() |
Antulius | 0:d09d48e54bdd | 125 | { // Inicialización de variables, puertos e interrupciones |
Antulius | 0:d09d48e54bdd | 126 | confSysClock(); // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock) |
Antulius | 0:d09d48e54bdd | 127 | terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial. |
Antulius | 0:d09d48e54bdd | 128 | terminal.printf(" System is Wake Up!.\n\r"); |
Antulius | 0:d09d48e54bdd | 129 | |
Antulius | 0:d09d48e54bdd | 130 | /* Prueba del Buzzer */ |
Antulius | 0:d09d48e54bdd | 131 | terminal.printf("Testing Buzzer... \n\r"); |
Antulius | 0:d09d48e54bdd | 132 | buzzer = Buzz_On; |
Antulius | 0:d09d48e54bdd | 133 | wait_ms(750); |
Antulius | 0:d09d48e54bdd | 134 | buzzer = Buzz_Off; |
Antulius | 0:d09d48e54bdd | 135 | wait_ms(125); |
Antulius | 0:d09d48e54bdd | 136 | buzzer = Buzz_On; |
Antulius | 0:d09d48e54bdd | 137 | wait_ms(250); |
Antulius | 0:d09d48e54bdd | 138 | buzzer = Buzz_Off; |
Antulius | 0:d09d48e54bdd | 139 | wait_ms(125); |
Antulius | 0:d09d48e54bdd | 140 | buzzer = Buzz_On; |
Antulius | 0:d09d48e54bdd | 141 | wait_ms(500); |
Antulius | 0:d09d48e54bdd | 142 | buzzer = Buzz_Off; |
Antulius | 0:d09d48e54bdd | 143 | |
Antulius | 0:d09d48e54bdd | 144 | while (true) // El Lazo del Programa principal está aquí !!! |
Antulius | 0:d09d48e54bdd | 145 | { |
Antulius | 0:d09d48e54bdd | 146 | I2C_Scanner(); |
Antulius | 0:d09d48e54bdd | 147 | terminal.printf ("\n\rVolver a Diagnosticar?\n\r"); |
Antulius | 0:d09d48e54bdd | 148 | getchar(); |
Antulius | 0:d09d48e54bdd | 149 | } |
Antulius | 0:d09d48e54bdd | 150 | } |
Antulius | 0:d09d48e54bdd | 151 | /* END Main */ |
Antulius | 0:d09d48e54bdd | 152 | |
Antulius | 0:d09d48e54bdd | 153 | /* |
Antulius | 0:d09d48e54bdd | 154 | ................................................................................ |
Antulius | 0:d09d48e54bdd | 155 | : Rutinas de los Vectores de Interrupción |
Antulius | 0:d09d48e54bdd | 156 | ................................................................................ |
Antulius | 0:d09d48e54bdd | 157 | */ |
Antulius | 0:d09d48e54bdd | 158 | // Los Servicios a Interrupciones van aquí ! |
Antulius | 0:d09d48e54bdd | 159 | /* END Events */ |
Antulius | 0:d09d48e54bdd | 160 | /* |
Antulius | 0:d09d48e54bdd | 161 | ________________________________________________________________________________ |
Antulius | 0:d09d48e54bdd | 162 | | |
Antulius | 0:d09d48e54bdd | 163 | | Funciones Prototipo |
Antulius | 0:d09d48e54bdd | 164 | |_______________________________________________________________________________ |
Antulius | 0:d09d48e54bdd | 165 | */ |
Antulius | 0:d09d48e54bdd | 166 | // Las Funciones Prototipo van aquí ! |
Antulius | 0:d09d48e54bdd | 167 | void I2C_Scanner() |
Antulius | 0:d09d48e54bdd | 168 | { |
Antulius | 0:d09d48e54bdd | 169 | terminal.printf ("I2C scanner. Scanning ..."); |
Antulius | 0:d09d48e54bdd | 170 | uint8_t count = 0; |
Antulius | 0:d09d48e54bdd | 171 | // char test[] = {0x55,0xAA,0x0F,0xF0,0xFF,0x00}; // Patrón de Prueba |
Antulius | 0:d09d48e54bdd | 172 | |
Antulius | 0:d09d48e54bdd | 173 | char test[] = { 0b00000000, 0b00000000, // Datos en DB7=DB6=DB5=DB4=0, LED+=0, EN=0,RW=0,RS=0 // Patrón de Prueba LCD (LSN first) |
Antulius | 0:d09d48e54bdd | 174 | 0b00111110, 0b00111010, // Datos en DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 175 | 0b00111110, 0b00111010, // Datos en DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 176 | 0b00111110, 0b00111010, // Datos en DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 177 | 0b00101110, 0b00100010, // Datos en DB5=1, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 178 | 0b00101110, 0b00100010, // => Function Set Control: DB5=1, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 179 | 0b10001110, 0b10001110, // => Function Set Control: DB7=N=1 2 líneas, DB6=F=0 5x7puntos, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 180 | 0b00001110, 0b00000010, // => Display ON/OFF Control: DB7=DB6=DB5=DB4=0, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 181 | 0b00101110, 0b00100010, // => Display ON/OFF Control: DB7=1 (Display off, cursor off, blink off),LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 182 | 0b00001110, 0b00000010, // => Display Clear: DB7=DB6=DB5=DB4=0, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 183 | 0b00011110, 0b00010010, // => Display Clear: D4=1, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 184 | 0b00001110, 0b00000010, // => Cursor Home: DB7=DB6=DB5=DB4=0, LED+=1, EN=1,0,RW=1,RS=0 |
Antulius | 0:d09d48e54bdd | 185 | 0b00101110, 0b00100010, // => Cursor Home: DB5=1, LED+=1, EN=1,0,RW=1,RS=0 , (Cursor Home}; |
Antulius | 0:d09d48e54bdd | 186 | 0b01001111, 0b00001011, // => Text 0x48: DB5=1, LED+=1, EN=1,0,RW=1,RS=1 |
Antulius | 0:d09d48e54bdd | 187 | 0b10001111, 0b00101011, // => Text "H" : DB7=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "H"} |
Antulius | 0:d09d48e54bdd | 188 | 0b01101111, 0b01101011, // => Text 0x6F: DB5=1, LED+=1, EN=1,0,RW=1,RS=1 |
Antulius | 0:d09d48e54bdd | 189 | 0b11111111, 0b11111011, // => Text "o" : DB7=DB6=DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "o"} |
Antulius | 0:d09d48e54bdd | 190 | 0b01101111, 0b01101011, // => Text 0x6C: DB6=DB5=1, LED+=1, EN=1,0,RW=1,RS=1 |
Antulius | 0:d09d48e54bdd | 191 | 0b11001111, 0b11001011, // => Text "l" : DB7=DB6=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "l"} |
Antulius | 0:d09d48e54bdd | 192 | 0b01101111, 0b01101011, // => Text 0x61: DB6=DB5=1, LED+=1, EN=1,0,RW=1,RS=1 |
Antulius | 0:d09d48e54bdd | 193 | 0b00011111, 0b00011011, // => Text "a" : DB4=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "a"} |
Antulius | 0:d09d48e54bdd | 194 | 0b00101111, 0b00101011, // => Text 0x21: DB5=1, LED+=1, EN=1,0,RW=1,RS=1 |
Antulius | 0:d09d48e54bdd | 195 | 0b00011111, 0b00011011};// => Text "!" : DB4=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "!"} |
Antulius | 0:d09d48e54bdd | 196 | /* |
Antulius | 0:d09d48e54bdd | 197 | char test[] = { 0b00000000, 0b00000000, // RS=0,RW=1, EN=0, LED+=1, DB4=DB5=DB6=DB7=0 // Patrón de Prueba para LCD (MSN first) |
Antulius | 0:d09d48e54bdd | 198 | 0b01111100, 0b01011100, // RS=0,RW=1, EN=1,0, LED+=1, DB5=DB4=1 en datos, |
Antulius | 0:d09d48e54bdd | 199 | 0b01111100, 0b01011100, // RS=0,RW=1, EN=1,0, LED+=1, DB5=DB4=1 en datos, |
Antulius | 0:d09d48e54bdd | 200 | 0b01111100, 0b01011100, // RS=0,RW=1, EN=1,0, LED+=1, DB5=DB4=1 en datos, |
Antulius | 0:d09d48e54bdd | 201 | 0b01110100, 0b01010100, // RS=0,RW=1, EN=1,0, LED+=1, DB5=1 en datos, |
Antulius | 0:d09d48e54bdd | 202 | 0b01100100, 0b00100100, // => Function Set Control: RS=0, RW=1, EN=1,0, LED+=1, DB5=1 en datos, |
Antulius | 0:d09d48e54bdd | 203 | 0b01100110, 0b00100001, // => Function Set Control: RS=0, RW=1, EN=1,0, LED+=1, DB7=N=1 2 líneas, DB6=F=0 5x7puntos, |
Antulius | 0:d09d48e54bdd | 204 | 0b01100000, 0b00100000, // => Display ON/OFF Control: RS=0, RW=1, EN=1,0, LED+=1, DB4=DB5=DB6=DB7=0 en datos, |
Antulius | 0:d09d48e54bdd | 205 | 0b01100001, 0b00100001, // => Display ON/OFF Control: RS=0, RW=1, EN=1,0, LED+=1, DB7=1 (Display off, cursor off, blink off) |
Antulius | 0:d09d48e54bdd | 206 | 0b01100000, 0b00100000, // => Display Clear: RS=0, RW=1, EN=1,0, LED+=1, DB4=DB5=DB6=DB7=0 en datos |
Antulius | 0:d09d48e54bdd | 207 | 0b01101000, 0b00101000, // => Display Clear: RS=0, RW=1, EN=1,0, LED+=1, DB4=1 en datos, (Clear Diplay) |
Antulius | 0:d09d48e54bdd | 208 | 0b01100000, 0b00100000, // => Cursor Home: RS=0, RW=1, EN=1,0, LED+=1, DB4=DB5=DB6=DB7=0 en datos |
Antulius | 0:d09d48e54bdd | 209 | 0b01101000, 0b00101000, // => Cursor Home: RS=0, RW=1, EN=1,0, LED+=1, DB5=1 en datos, (Cursor Home) |
Antulius | 0:d09d48e54bdd | 210 | 0b11110100, 0b11010100, // => Text 0x48: RS=1, RW=1, EN=1,0, LED+=1, DB5=1, (ASCII "H") |
Antulius | 0:d09d48e54bdd | 211 | 0b11110001, 0b11010001, // => Text "H" : RS=1, RW=1, EN=1,0, LED+=1, DB7=1 |
Antulius | 0:d09d48e54bdd | 212 | 0b11110110, 0b11010110, // => Text 0x6F: RS=1, RW=1, EN=1,0, LED+=1, DB5=DB6=1, (ASCII "o") |
Antulius | 0:d09d48e54bdd | 213 | 0b11111111, 0b11011111, // => Text "o" : RS=1, RW=1, EN=1,0, LED+=1, DB4=DB5=DB6=DB7=1 |
Antulius | 0:d09d48e54bdd | 214 | 0b11110110, 0b11010110, // => Text 0x6C: RS=1, RW=1, EN=1,0, LED+=1, DB5=DB6=1, (ASCII "l") |
Antulius | 0:d09d48e54bdd | 215 | 0b11110011, 0b11010011, // => Text "l" : RS=1, RW=1, EN=1,0, LED+=1, DB6=DB7=1 |
Antulius | 0:d09d48e54bdd | 216 | 0b11110110, 0b11010110, // => Text 0x61: RS=1, RW=1, EN=1,0, LED+=1, DB5=DB6=1, (ASCII "a") |
Antulius | 0:d09d48e54bdd | 217 | 0b11111000, 0b11011000, // => Text "a" : RS=1, RW=1, EN=1,0, LED+=1, DB4=1 |
Antulius | 0:d09d48e54bdd | 218 | 0b11110100, 0b11010100, // => Text 0x21: RS=1, RW=1, EN=1,0, LED+=1, DB5=1, (ASCII "!") |
Antulius | 0:d09d48e54bdd | 219 | 0b11111000, 0b11011000};// => Text "!" : RS=1, RW=1, EN=1,0, LED+=1, DB4=1 |
Antulius | 0:d09d48e54bdd | 220 | */ |
Antulius | 0:d09d48e54bdd | 221 | i2c_wire.frequency(100000); // Frecuencia de operación para el I2C (100KHz) |
Antulius | 0:d09d48e54bdd | 222 | i2c_wire.start(); // Inicio de operación para el I2C |
Antulius | 0:d09d48e54bdd | 223 | for (int i = 8; i < 128; i++) |
Antulius | 0:d09d48e54bdd | 224 | { |
Antulius | 0:d09d48e54bdd | 225 | uint8_t acknoledge = i2c_wire.write (i,test,46,1); //(dirección, ap_datos, N°_datos, repetición) |
Antulius | 0:d09d48e54bdd | 226 | if (acknoledge == 0) |
Antulius | 0:d09d48e54bdd | 227 | { |
Antulius | 0:d09d48e54bdd | 228 | terminal.printf ("\n\rFound address: "); |
Antulius | 0:d09d48e54bdd | 229 | terminal.printf ("%u DEC",i); // Valor de la dirección en Decimal |
Antulius | 0:d09d48e54bdd | 230 | terminal.printf (" (0x%x HEX)\n\r",i); // Valor de la dirección en Hexadecimal |
Antulius | 0:d09d48e54bdd | 231 | // terminal.printf (" (0x%hd HEX)\n\r",i); // Valor de la dirección en Hexadecimal |
Antulius | 0:d09d48e54bdd | 232 | count++; |
Antulius | 0:d09d48e54bdd | 233 | wait (1); // Tal vez Innecesario? |
Antulius | 0:d09d48e54bdd | 234 | } // end of good response |
Antulius | 0:d09d48e54bdd | 235 | led_monitor = !led_monitor; // Parapadeo del LED |
Antulius | 0:d09d48e54bdd | 236 | } // end of for loop |
Antulius | 0:d09d48e54bdd | 237 | led_monitor = 1; // Apaga el LED |
Antulius | 0:d09d48e54bdd | 238 | i2c_wire.stop(); // Fin de operación para el I2C |
Antulius | 0:d09d48e54bdd | 239 | terminal.printf ("\n\rDone.\n\r"); |
Antulius | 0:d09d48e54bdd | 240 | terminal.printf ("Found %d Device(s)\n\r",count); |
Antulius | 0:d09d48e54bdd | 241 | } // end of setup |
Antulius | 0:d09d48e54bdd | 242 | |
Antulius | 0:d09d48e54bdd | 243 | /* END Functions */ |
Antulius | 0:d09d48e54bdd | 244 | |
Antulius | 0:d09d48e54bdd | 245 | /* END Program */ |
Antulius | 0:d09d48e54bdd | 246 | |
Antulius | 0:d09d48e54bdd | 247 | /* END Mbed */ |