Skip to content

jawwadshaukat/mynewt-nrf52-adc-driver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

#mynewt-nrf52-adc-driver

This package utilizes the mynewt_nordic adc package to add an adc driver for nrf52 bsps.

##usage Make the upstream repos available locally in your project.yml


project.repositories:
    - apache-mynewt-core
    - mynewt_nordic
    - mynewt-nrf52-adc-driver

repository.mynewt-nrf52-adc-driver:
    type: github
    vers: 0-latest
    user: jawwadshaukat
    repo: mynewt-nrf52-adc-driver

Then add the packge to your projects pkg.yml

    - "@mynewt-nrf52-adc-driver/libs/adc_nrf52_driver"

Then override the adc settings in your app or target syscfg.yml

syscfg.vals:

    ADC_0_SCALING: NRF_ADC_CONFIG_SCALING_SUPPLY_ONE_THIRD
    ADC_0_INPUT: NRF_ADC_CONFIG_INPUT_2

Finally call enable the adc and trigger samples presumably as part of a new task

/* ADC */
#include <adc/adc.h>
#include "adc_nrf52_driver/adc_nrf52_driver.h"

// /* ADC Task settings */
#define ADC_TASK_PRIO           5
#define ADC_STACK_SIZE          (OS_STACK_ALIGN(32))
struct os_eventq adc_evq;
struct os_task adc_task;
bssnz_t os_stack_t adc_stack[ADC_STACK_SIZE];


int
adc_read_event(struct adc_dev *dev, void *arg, uint8_t etype,
        void *buffer, int buffer_len)
{
    int value;
    int rc;

    value = adc_read(buffer, buffer_len);
    if (value >= 0) {
        console_printf("Got %d\n", value);
    } else {
        console_printf("Error while reading: %d\n", value);
        goto err;
    }
    return (0);
err:
    return (rc);
} 

static void
adc_task_handler(void *unused)
{
    struct adc_dev *adc;
    int rc;
    /* ADC init */
    adc = adc_nrf51_driver_init();
    rc = adc_event_handler_set(adc, adc_read_event, (void *) NULL);
    assert(rc == 0);

    while (1) {
        adc_sample(adc);
        /* Wait 2 second */
        os_time_delay(OS_TICKS_PER_SEC * 2);
    }
}

int
main(void)
{
...
    os_eventq_init(&adc_evq);

    /* Create the ADC reader task.  
     * All sensor operations are performed in this task.
     */
    os_task_init(&adc_task, "sensor", adc_task_handler,
            NULL, ADC_TASK_PRIO, OS_WAIT_FOREVER,
            adc_stack, ADC_STACK_SIZE);
...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages