Low level drivers that dependant of the processor.
Each driver must have a particular directory with the same name of the driver which contains a 'driver-name'.mk file.
Driver name | Description | Status |
---|---|---|
adc | ADC analog converters driver | Stable |
ax12 | ax12 servo motor driver | Experimental |
can | CAN bus driver | Stable |
ccp | CCP capture compare driver | Stable |
dma | DMA Direct Memory Access drivers | Experimental |
gpio | GPIO port driver | Stable |
i2c | I2C communication driver | Stable |
ic | Input compare driver | Implementation needed |
motor | motor abstraction drivers | Experimental |
msi | MSI dual core communication driver | Stable |
nvm | NVM Non Volatile Memory Flash driver | Stable |
oc | Output compare driver | Experimental |
pwm | PWM driver | Experimental |
qei | Quadrature encoder driver | Stable |
rtc | RTC Real Time Clock drivers | Implementation needed |
sent | SENT communication drivers | Implementation needed |
spi | SPI communication driver | Implementation needed |
sysclock | System clock | Stable |
timer | Timer driver | Stable |
uart | UART (serial) communication driver | Stable |
usb_hal | USB low layer driver | Experimental |
usb_serial | USB CDC driver | Experimental |
Create a directory with the name of the driver in this directory :
mkdir <driver-name>
Add
To avoid multiple inclusion of
ifndef TIMER_DRIVER
TIMER_DRIVER=
#content of file here ....
endif
If the driver need the support of another drivers, add it :
DRIVERS += another_driver
To include C files directory to paths of sources, add this directives and as many you need :
vpath %.c $(DRIVERPATH)
vpath %.h $(DRIVERPATH)
vpath %.c $(DRIVERPATH)/other-source-dir
vpath %.h $(DRIVERPATH)/other-source-dir
You just need to add header and source code files :
SRC += timer.c
HEADER += timer.h
And for specific architecture :
ifeq ($(ARCHI),$(filter $(ARCHI),dspic33ep dspic33fj))
ARCHI_SRC += timer_dspic33.c
HEADER += timer_dspic33.h
endif
ifeq ($(ARCHI), pic24)
ARCHI_SRC += timer_pic24.c
HEADER += timer_pic24.h
endif
To implement a simulator interface :
SIM_SRC += timer_sim.c
And for global inclusion of the driver, add a header file that include needed include files of the support in include/driver/.