Hi Andrew,

> On Feb 1, 2017, at 12:01 PM, Andrew Tam <t...@proxy.co> wrote:
> 
> Hi Marko,
> 
> I've followed what you did in the Arduino Primo bsp file to setup the UART1
> pins.  Looks like my project will compile without errors, But I was unable
> to see anything coming over the UART1 TX.  Is there a sequence that needs
> to be followed when sending the data?

Take a look at following as an example:
https://github.com/runtimeinc/mynewt_arduino_zero/blob/develop/libs/espduino/src/espduino.c
 
<https://github.com/runtimeinc/mynewt_arduino_zero/blob/develop/libs/espduino/src/espduino.c>

That might easier to read than the sys/console/full package.

> 
> for example to send a blocking tx byte (with vaule "1" every second) we're
> using something like this:
> 
> uart_timer_cb(struct os_event *ev) {
>     uart_start_tx(uart1);
>     uart_blocking_tx(uart1,'1');
>     os_callout_reset(&uart_timer, OS_TICKS_PER_SEC);
>     hal_gpio_toggle(LED_BLINK_PIN);
> }
> 
> The gpio toggles ~ ever second  so we know the timer is working.  but maybe
> we've forgotten something?

Well, the blocking TX was only meant to be used when running without
interrupts enabled. And once the device enters blocking TX mode, there’s
no going back. It only exists so that we can print out data when system
crashes, to print out assert() line and MCU register dump.

So you should implement the functions which implement the asynchronous 
interface.

So the code you’re after could look something like this:

static int sent_one = 0;

static int
uart1_tx(void *arg)
{
   /* send one ‘1’ character, then stop */
   if (!sent_one) {
       sent_one = 1;
       return ‘1’;
   } else {
       return -1;
   }     
}

and then in your task (or main()) say:

   while (1) {
       os_time_delay(OS_TICKS_PER_SEC);
       sent_one = 0;
       uart_start_tx(uart1);
   }

I.e. you start transmitting data by calling uart_start_tx().
UART driver keeps asking for more data to send by calling
the .uc_tx_char function. The driver calls this according
to speed that these bytes are being sent out.
When there is no more data to send, you should return < 0
from the uc_tx_char function.

Here’s another link:
https://github.com/apache/incubator-mynewt-site/blob/develop/docs/os/tutorials/air_quality_sensor.md
This uses the HAL directly, but the tx/rx character functions
behave the same when going through UART driver.

Hope this helps,
M

> 
> Thanks for the help!
> 
> - Andrew -
> 
> 
> On Mon, Jan 30, 2017 at 4:51 PM, Andrew Tam <t...@proxy.co> wrote:
> 
>> Thanks Marko,
>> 
>> I think I got some of it sorted,  I found the header file for the
>> bitbanger uart and I think I should be good.
>> 
>> Cheers,
>> 
>> - Andrew -
>> 
>> On Mon, Jan 30, 2017 at 4:43 PM, marko kiiskila <ma...@runtime.io> wrote:
>> 
>>> Hi Andrew,
>>> 
>>> the example is the arduino primo BSP.
>>> Take a look at hw/bsp/arduino_primo_nrf52/src/hal_bsp.c, specifically
>>> the setup of UART0 and UART1.
>>> 
>>> UART0 uses HAL uart driver, while UART1 sets up bitbanger.
>>> 
>>>> On Jan 30, 2017, at 3:21 PM, Andrew Tam <t...@proxy.co> wrote:
>>>> 
>>>> I'm currently looking into using the 2nd UART as well,  I was doing some
>>>> reading on the nrf52dk pins and looks like pins P0.22 / P0.23 / P0.24 /
>>>> P0.25 could also be good options.
>>>> 
>>>> I'm curious to know if there was some example code as to how you set
>>> this
>>>> up on the nrf52?
>>>> 
>>>> Thanks,
>>>> 
>>>> - Andrew -
>>>> 
>>>> 
>>>> 
>>>> On Wed, Jan 11, 2017 at 10:17 AM, marko kiiskila <ma...@runtime.io>
>>> wrote:
>>>> 
>>>>> I did operate it only Arduino Primo, where the 2nd UART was my console
>>>>> (or maybe it was the connection to ESP8266?).
>>>>> 
>>>>> Looks like the pins used on that BSP are 11 and 12.
>>>>> I would pick whichever is most easily accessible from the connector :)
>>>>> 
>>>>>> On Jan 11, 2017, at 6:57 AM, David G. Simmons <santa...@mac.com>
>>> wrote:
>>>>>> 
>>>>>> 
>>>>>>> On Jan 10, 2017, at 12:02 PM, marko kiiskila <ma...@runtime.io>
>>> wrote:
>>>>>>> 
>>>>>>> I’ve tested the bitbanger on nrf52 with up to 19200 as my console.
>>>>>>> If I remember correctly, the hal timer used by the bitbanger was
>>> running
>>>>>>> at 1MHz.
>>>>>> 
>>>>>> 
>>>>>> What pins on the NRF52dk are you using? The syscfg.yml has only
>>>>>> UART_1:
>>>>>>      description: 'Bitbanger UART'
>>>>>>      value:  0
>>>>>> 
>>>>>> defined for UART_1 so I'll need to configure pins for UART_0_PIN_TX
>>> and
>>>>> UART_0_PIN_RX:
>>>>>> 
>>>>>> Suggestions?
>>>>>> 
>>>>>> dg
>>>>>> --
>>>>>> David G. Simmons
>>>>>> (919) 534-5099
>>>>>> Web <https://davidgs.com/> • Blog <https://davidgs.com/davidgs_blog>
>>> •
>>>>> Linkedin <http://linkedin.com/in/davidgsimmons> • Twitter <
>>>>> http://twitter.com/TechEvangelist1> • GitHub <
>>> http://github.com/davidgs>
>>>>>> /** Message digitally signed for security and authenticity.
>>>>>> * If you cannot read the PGP.sig attachment, please go to
>>>>>> * http://www.gnupg.com/ <http://www.gnupg.com/> Secure your email!!!
>>>>>> * Public key available at keyserver.pgp.com <
>>> http://keyserver.pgp.com/>
>>>>>> **/
>>>>>> ♺ This email uses 100% recycled electrons. Don't blow it by printing!
>>>>>> 
>>>>>> There are only 2 hard things in computer science: Cache invalidation,
>>>>> naming things, and off-by-one errors.
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
>> 

Reply via email to