Sistema l'errore da me commesso in fase di conversione...
[bertos.git] / drv / mcp41.c
1 /**
2  * \file
3  * <!--
4  * Copyright 2005 Develer S.r.l. (http://www.develer.com/)
5  * -->
6  *
7  * \version $Id$
8  *
9  * \brief MCP41xxx digital potentiomenter driver (implementation)
10  *
11  * \version $Id$
12  * \author Francesco Sacchi <batt@develer.com>
13  */
14
15 #include <drv/timer.h>
16
17 #include <cfg/macros.h>
18 #include <cfg/cpu.h>
19 #include <cfg/compiler.h>
20
21 #include <hw_mcp41.h>
22 #include <drv/mcp41.h>
23 #include <drv/ser.h>
24
25 static Serial *spi_ser;
26
27 /**
28  * Set resitance for digital pot \a dev
29  */
30 void mcp41_setResistance(Mcp41Dev dev, mcp41_res_t res)
31 {
32         MCP41_ON(dev);
33         /* send command byte */
34         ser_putchar(MCP41_WRITE_DATA, spi_ser);
35         ser_putchar(((MCP41_HW_MAX * (uint32_t)res)  + (MCP41_MAX / 2)) / MCP41_MAX, spi_ser);
36         ser_drain(spi_ser);
37
38         MCP41_OFF(dev);
39 }
40
41
42 /**
43  * Initialize mcp41 potentiometer driver
44  */
45 void mcp41_init(Serial *spi_port)
46 {
47         Mcp41Dev dev;
48
49         /* Init all potentiometer ports */
50         for (dev = 0; dev < MCP41_CNT; dev++)
51         {
52                 SET_MCP41_DDR(dev);
53                 MCP41_OFF(dev);
54         }
55
56         spi_ser = spi_port;
57 }