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