Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 26:9ad740976a72, committed 2019-05-02
- Comitter:
- jasoncha
- Date:
- Thu May 02 21:55:46 2019 +0000
- Parent:
- 25:eac4de6661a9
- Commit message:
- Publish it for Clayton to test.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed-os-retarget-segger-rtt.lib | Show annotated file Show diff for this revision Revisions of this file |
diff -r eac4de6661a9 -r 9ad740976a72 main.cpp --- a/main.cpp Tue Apr 23 23:31:21 2019 +0000 +++ b/main.cpp Thu May 02 21:55:46 2019 +0000 @@ -12,6 +12,7 @@ #include "mbed.h" #include "MorseGenerator.h" +#include "SEGGER_RTT.h" //#include <nrfx_config.h> need SDK config instead //#include "sdk_config.h" not needed now @@ -176,8 +177,8 @@ /* REGISTERS */ static uint8_t LM36011_addr = 0x64 << 1; //0xC8 -static int NRF_I2CSlave_addr = 0x20; -static uint32_t NRF_I2CSlave_frequency = 300000; +int NRF_I2CSlave_addr = 0x20; +int NRF_I2CSlave_frequency = 300000; // register names @@ -240,11 +241,13 @@ int stacked_counter = 0; bool read_fail; -#define MY_BUF_SIZE 8 +#define MY_BUF_SIZE 1 int i2c_recv = 0; -char i2c_tx_buff[MY_BUF_SIZE] = {'7','6','5','4','3','2','1','0'}; +char i2c_tx_buff[MY_BUF_SIZE]; char i2c_rx_buff[MY_BUF_SIZE]; +char *i2c_tx_buff_ptr = (char *)0x20000000; +char *i2c_rx_buff_ptr = (char *)0x20000008; char i2c_tx_data = 0x55; char i2c_rx_data = 0x00; @@ -513,11 +516,47 @@ Thread eventThread(osPriorityHigh); eventThread.start(callback(&queue, &EventQueue::dispatch_forever)); - NRF_TWIS0->ENABLE = 0; - NRF_TWIS1->ENABLE = 1; + unsigned int index = 0; + SEGGER_RTT_printf(index, "%s\n", "main, Hello NRF58-DK\n"); + ov580_I2C.frequency(NRF_I2CSlave_frequency); ov580_I2C.address(NRF_I2CSlave_addr); - // ov580_I2C.stop(); + + for (int i=0; i<MY_BUF_SIZE; i++) { + *(i2c_tx_buff_ptr+i) = 0xaa; + } + for (int i=0; i<MY_BUF_SIZE; i++) { + *(i2c_rx_buff_ptr+i) = 0x55; + } + + NRF_TWIS0->ADDRESS[1] = NRF_I2CSlave_addr; + NRF_TWIS0->ADDRESS[0] = NRF_I2CSlave_addr; + NRF_TWIS0->TXD.PTR = (uint32_t)i2c_tx_buff_ptr; + NRF_TWIS0->TXD.MAXCNT = MY_BUF_SIZE; + NRF_TWIS0->RXD.PTR = (uint32_t)i2c_rx_buff_ptr; + NRF_TWIS0->RXD.MAXCNT = MY_BUF_SIZE; + + NRF_TWIS1->ADDRESS[1] = NRF_I2CSlave_addr; + NRF_TWIS1->ADDRESS[0] = NRF_I2CSlave_addr; + NRF_TWIS1->TXD.PTR = (uint32_t)i2c_tx_buff_ptr; + NRF_TWIS1->TXD.MAXCNT = MY_BUF_SIZE; + NRF_TWIS1->RXD.PTR = (uint32_t)i2c_rx_buff_ptr; + NRF_TWIS1->RXD.MAXCNT = MY_BUF_SIZE; + + SEGGER_RTT_printf(index, "CONFIG0: %d\n", NRF_TWIS0->CONFIG); + SEGGER_RTT_printf(index, "CONFIG1: %d\n", NRF_TWIS1->CONFIG); + NRF_TWIS0->ENABLE = 1; + NRF_TWIS1->ENABLE = 1; + NRF_TWIS0->TASKS_PREPARERX = 1; + NRF_TWIS0->TASKS_PREPARETX = 1; + NRF_TWIS1->TASKS_PREPARERX = 1; + NRF_TWIS1->TASKS_PREPARETX = 1; + + NRF_TWIS0->TASKS_RESUME = 1; + NRF_TWIS1->TASKS_RESUME = 1; + +// ov580_I2C.stop(); + red = 1; green = 1; blue = 1; @@ -533,9 +572,12 @@ dot_timer.start(); flood_timer.start(); - MorseGenerator morse = MorseGenerator(morse_callback); - morse.transmit(version_number); - + #if 0 + MorseGenerator morse = MorseGenerator(morse_callback); + morse.transmit(version_number); + #endif + + while(!in_app) { wait(.1); } @@ -556,34 +598,37 @@ dot_I2C.write(LM36011_addr,flashBrightness_dot,2,false); #endif + blue = 0; + SEGGER_RTT_printf(index, "%s\n", "Before loop"); + while (true) { - blue = 0; // Handle I2C slave receive from OV580 master transmit + // SEGGER_RTT_printf(index, "%s\n","ov580_I2C.receive()"); i2c_recv = ov580_I2C.receive(); + if (i2c_recv != 0) { + SEGGER_RTT_printf(index, "%d\n",i2c_recv); + } switch(i2c_recv) { case I2CSlave::ReadAddressed: + SEGGER_RTT_printf(index, "%s\n", "ReadAddressed"); red = 0; blue = 1; -// NRF_TWIS1->TXD.PTR = (uint32_t)i2c_tx_buff; -// NRF_TWIS1->TXD.MAXCNT = MY_BUF_SIZE; // ov580_I2C.write(i2c_tx_buff, strlen(i2c_tx_buff) + 1); i2c_return = ov580_I2C.write(&i2c_tx_data, 1); break; case I2CSlave::WriteGeneral: + SEGGER_RTT_printf(index, "%s\n", "WriteGeneral"); green = 0; blue = 1; -// NRF_TWIS1->RXD.PTR = (uint32_t)i2c_rx_buff; -// NRF_TWIS1->RXD.MAXCNT = MY_BUF_SIZE; // ov580_I2C.read(i2c_rx_buff, MY_BUF_SIZE); i2c_return = ov580_I2C.read(&i2c_rx_data, 1); break; case I2CSlave::WriteAddressed: + SEGGER_RTT_printf(index, "%s\n", "WriteAddressed"); green = 0; blue = 1; -// NRF_TWIS1->RXD.PTR = (uint32_t)i2c_rx_buff; -// NRF_TWIS1->RXD.MAXCNT = MY_BUF_SIZE; // ov580_I2C.read(i2c_rx_buff, MY_BUF_SIZE); i2c_return = ov580_I2C.read(&i2c_rx_data, 1); break; @@ -594,7 +639,7 @@ break; } - +#if 0 // Handle flood and dot illuminators if(dot_timer_number > 700 && dot_timer_number < 1499) { dot_current_setting = dot_one_ms; @@ -645,7 +690,7 @@ level_flood_max_dec = uint32_t(flood_current_setting/divisor); level_flood_max = (((level_flood_max_dec / 16) << 4) & 0xf0) | - ((level_flood_max_dec % 16) & 0x0f); + ((level_flood_max_dec % 16) & 0x0f); flashBrightness_flood[1] = level_flood_max; @@ -653,8 +698,9 @@ flood_I2C.write(LM36011_addr,flashBrightness_flood,2,false); wait(.01); - + silego_check_status(); +#endif }
diff -r eac4de6661a9 -r 9ad740976a72 mbed-os-retarget-segger-rtt.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os-retarget-segger-rtt.lib Thu May 02 21:55:46 2019 +0000 @@ -0,0 +1,1 @@ +https://github.com/0x6d61726b/mbed-os-retarget-segger-rtt/#648b5440bd2744c5356c73b9bfdf8081ca65d79a