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 }
