summaryrefslogtreecommitdiff
path: root/n
diff options
context:
space:
mode:
Diffstat (limited to 'n')
-rw-r--r--n/avr/adc/Makefile4
-rw-r--r--n/avr/adc/avrconfig.h3
-rw-r--r--n/avr/adc/test_adc.c68
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 <n/avr/proto/proto.h>
#include <n/avr/rs232/rs232.h>
#include <n/avr/utils/utils.h>
+#include <n/avr/twi-slave/twi_slave.h>
#include "adc.h"
+#include <avr/interrupt.h>
+
/* +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;
}