Ce programme recherche les circuits sur le bus 1-wire. Si SERIAL_LOG_ENABLE
est défini, les identifiants des circuits sont affichés sur la liaison série, dans ce cas, l'implémentation choisie pour la gestion du bus 1-wire ne peut pas utiliser l'UART (donc OW_DRIVER_POLLED_PIO
est obligatoire).
Voilà ce que cela donne si 2 circuits DS2438 sont détectés:
2 devices found
#,id
0,26A2FA17020000B9
1,26BEF517020000F0
Il est prévu pour une carte mto-template, le fichier avrio-board-ow.h dans le répertoire board devra être adapté pour une autre carte.
#include <stdio.h>
#include <avr/pgmspace.h>
#include <avrio/ow.h>
#include <avrio/delay.h>
#include <avrio/led.h>
#include <avrio/assert.h>
#include <avrio/tc.h>
#include <avrio/osc.h>
#define SERIAL_LOG_ENABLE //< Valide l'affichage des valeurs sur liaison série
#define BAUDRATE 115200
#define PORT "tty0" // UART0
#define MAX_DEVICES 2 // Nombre max de circuits sur le bus 1-wire
#if defined(SERIAL_LOG_ENABLE) && defined(OW_DRIVER_POLLED_UART)
#error Unable to use UART for serial bus and 1-wire bus !
#endif
#ifdef SERIAL_LOG_ENABLE
#define PDEBUG(fmt,...) printf_P(PSTR(fmt),##__VA_ARGS__)
.dbits = 8,
.parity = 'N',
.sbits = 1,
.flow = SERIAL_FLOW_NONE,
};
#else
#define PDEBUG(fmt,...)
#endif
int
main (void) {
int n;
#ifdef SERIAL_LOG_ENABLE
stdout = serial_port;
#endif
sei();
for (;;) {
do {
}
while (n < 0);
PDEBUG (
"\n%d devices found\n", n);
for (uint8_t i = 0; i < n; i++) {
for (int8_t j = 0; j < 8; j++) {
}
putchar ('\n');
}
}
return 0;
}