From f10b66edc5bd8af45d1013e56679cbf3efb930a3 Mon Sep 17 00:00:00 2001 From: demonchy Date: Sat, 23 Apr 2005 18:07:54 +0000 Subject: Ajout du twi. --- n/avr/adc/Makefile | 4 +-- n/avr/adc/avrconfig.h | 3 +++ n/avr/adc/test_adc.c | 68 ++++++++++++++++----------------------------------- 3 files changed, 26 insertions(+), 49 deletions(-) diff --git a/n/avr/adc/Makefile b/n/avr/adc/Makefile index 822a330..96c608f 100644 --- a/n/avr/adc/Makefile +++ b/n/avr/adc/Makefile @@ -1,8 +1,8 @@ PROGS = test_adc -test_adc_OBJECTS = test_adc.o adc.o rs232.o proto.o +test_adc_OBJECTS = test_adc.o adc.o rs232.o proto.o twi_slave.o DOC = EXTRACTDOC = -MODULES = n/avr/proto n/avr/rs232 n/avr/utils +MODULES = n/avr/proto n/avr/rs232 n/avr/utils n/avr/twi-slave CONFIGFILE = avrconfig.h # atmega8, atmega8535, atmega128... MCU_TARGET = atmega8535 diff --git a/n/avr/adc/avrconfig.h b/n/avr/adc/avrconfig.h index ec66267..b33b768 100644 --- a/n/avr/adc/avrconfig.h +++ b/n/avr/adc/avrconfig.h @@ -60,4 +60,7 @@ /** Putchar function name. */ #define AC_PROTO_PUTC rs232_putc +#define SIZE_BUF_RCPT 1 +#define SIZE_BUF_SEND 6 + #endif /* avrconfig_h */ diff --git a/n/avr/adc/test_adc.c b/n/avr/adc/test_adc.c index 11a551d..b01b7a0 100644 --- a/n/avr/adc/test_adc.c +++ b/n/avr/adc/test_adc.c @@ -23,9 +23,12 @@ #include #include #include +#include #include "adc.h" +#include + /* +AutoDec */ /* -AutoDec */ @@ -55,64 +58,35 @@ proto_putc (uint8_t c) int main (void) { - uint16_t adc0 =0 ; - uint16_t adc1 =0 ; - uint16_t adc2 =0 ; + uint16_t adc[3]; + int i; go = 0; rs232_init (); proto_send0 ('z'); - - while (!go) - { - if (rs232_poll ()) - proto_accept (rs232_getc ()); - } - - adc_init(); + sei (); + adc_init (); + twi_init (0x02); while (1) { delay_ms (100L); - /* Démarre une acquisition de mesure sur l'adc 0 */ - adc_start(0x00); - - /* Attente active sur adc jusqu'a ce que la valeur soit disponible - * */ - while (adc_checkf() !=0) + /* Démarre une acquisition de mesure sur l'adc 0. */ + for (i = 0; i < 3; i ++) { - rs232_putc ('0'); - } - /*lit l'adc - */ - adc0 = adc_read(); + adc_start (i); - - /* Démarre une acquisition de mesure sur l'adc 1 */ - adc_start(0x01); - - /* Attente active sur adc jusqu'a ce que la valeur soit disponible - * */ - while (adc_checkf() !=0) - { - rs232_putc ('1'); + /* Attente active sur adc jusqu'a ce que la valeur soit disponible. */ + while (adc_checkf() !=0) + ; + /* Lit l'adc. */ + adc[i] = adc_read(); } - - adc1 = adc_read(); - /* Démarre une acquisition de mesure sur l'adc 2 */ - adc_start(0x02); - - /* Attente active sur adc jusqu'a ce que la valeur soit disponible - * */ - while (adc_checkf() !=0) - { - rs232_putc ('2'); - } - adc2 = adc_read(); - - /*Lit la valeur puis l'envoit */ - proto_send3w('m',adc0,adc1,adc2); + + /* Lit la valeur puis l'envoit. */ + if (go) + proto_send3w ('m', adc[0], adc[1], adc[2]); + twi_update ((uint8_t *) adc, 6); if (rs232_poll ()) proto_accept (rs232_getc ()); } - return 0; } -- cgit v1.2.3