mcp41.c

Go to the documentation of this file.
00001 
00040 #include <drv/timer.h>
00041 
00042 #include <cfg/macros.h>
00043 #include <cfg/compiler.h>
00044 
00045 #include <hw_mcp41.h>
00046 #include <drv/mcp41.h>
00047 #include <drv/ser.h>
00048 
00049 static Serial *spi_ser;
00050 
00054 void mcp41_setResistance(Mcp41Dev dev, mcp41_res_t res)
00055 {
00056     MCP41_ON(dev);
00057     /* send command byte */
00058     ser_putchar(MCP41_WRITE_DATA, spi_ser);
00059     ser_putchar(((MCP41_HW_MAX * (uint32_t)res)  + (MCP41_MAX / 2)) / MCP41_MAX, spi_ser);
00060     ser_drain(spi_ser);
00061 
00062     MCP41_OFF(dev);
00063 }
00064 
00065 
00069 void mcp41_init(Serial *spi_port)
00070 {
00071     Mcp41Dev dev;
00072 
00073     /* Init all potentiometer ports */
00074     for (dev = 0; dev < MCP41_CNT; dev++)
00075     {
00076         SET_MCP41_DDR(dev);
00077         MCP41_OFF(dev);
00078     }
00079 
00080     spi_ser = spi_port;
00081 }