kopia lustrzana https://github.com/RPiks/pico-hf-oscillator
Merge e2fbbbeee8
into 1e7652c2d2
commit
b671c26e97
81
test.c
81
test.c
|
@ -76,26 +76,22 @@
|
|||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <GPStime.h>
|
||||
#include <hfconsole.h>
|
||||
#include <pico/stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "defines.h"
|
||||
|
||||
#include "piodco/piodco.h"
|
||||
#include "./debug/logutils.h"
|
||||
#include "./lib/assert.h"
|
||||
#include "build/dco2.pio.h"
|
||||
#include "defines.h"
|
||||
#include "hardware/clocks.h"
|
||||
#include "hardware/vreg.h"
|
||||
#include "hwdefs.h"
|
||||
#include "pico/multicore.h"
|
||||
#include "pico/stdio/driver.h"
|
||||
|
||||
#include "./lib/assert.h"
|
||||
#include "./debug/logutils.h"
|
||||
#include "hwdefs.h"
|
||||
|
||||
#include <GPStime.h>
|
||||
|
||||
#include <hfconsole.h>
|
||||
|
||||
#include "piodco/piodco.h"
|
||||
#include "protos.h"
|
||||
|
||||
// #define GEN_FRQ_HZ 32333333L
|
||||
|
@ -103,8 +99,7 @@
|
|||
|
||||
PioDco DCO; /* External in order to access in both cores. */
|
||||
|
||||
int main()
|
||||
{
|
||||
int main() {
|
||||
const uint32_t clkhz = PLL_SYS_MHZ * 1000000L;
|
||||
set_sys_clock_khz(clkhz / 1000L, true);
|
||||
|
||||
|
@ -120,8 +115,7 @@ int main()
|
|||
|
||||
multicore_launch_core1(core1_entry);
|
||||
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
gpio_put(PICO_DEFAULT_LED_PIN, 0);
|
||||
sleep_ms(5);
|
||||
int r = HFconsoleProcess(phfc, 10);
|
||||
|
@ -129,8 +123,7 @@ int main()
|
|||
sleep_ms(1);
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
sleep_ms(100);
|
||||
int chr = getchar_timeout_us(100); // getchar();
|
||||
printf("%d %c\n", chr, (char)chr);
|
||||
|
@ -152,8 +145,7 @@ int main()
|
|||
|
||||
/* This is the code of dedicated core.
|
||||
We deal with extremely precise real-time task. */
|
||||
void core1_entry()
|
||||
{
|
||||
void core1_entry() {
|
||||
const uint32_t clkhz = PLL_SYS_MHZ * 1000000L;
|
||||
|
||||
/* Initialize DCO */
|
||||
|
@ -169,11 +161,9 @@ void core1_entry()
|
|||
PioDCOWorker2(&DCO);
|
||||
}
|
||||
|
||||
void RAM (SpinnerMFSKTest)(void)
|
||||
{
|
||||
void RAM(SpinnerMFSKTest)(void) {
|
||||
uint32_t rndval = 77777777;
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
/* This example sets new RND frequency every ~250 ms.
|
||||
Frequency shift is 5 Hz for each step.
|
||||
*/
|
||||
|
@ -189,11 +179,9 @@ void RAM (SpinnerMFSKTest)(void)
|
|||
}
|
||||
}
|
||||
|
||||
void RAM (SpinnerSweepTest)(void)
|
||||
{
|
||||
void RAM(SpinnerSweepTest)(void) {
|
||||
int i = 0;
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
/* This example sets new frequency every ~250 ms.
|
||||
Frequency shift is 5 Hz for each step.
|
||||
*/
|
||||
|
@ -206,17 +194,14 @@ void RAM (SpinnerSweepTest)(void)
|
|||
sleep_ms(500);
|
||||
|
||||
/* Return to initial freq after 20 steps (100 Hz). */
|
||||
if(++i == 20)
|
||||
i = 0;
|
||||
if (++i == 20) i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void RAM (SpinnerRTTYTest)(void)
|
||||
{
|
||||
void RAM(SpinnerRTTYTest)(void) {
|
||||
int32_t df = 170; /* 170 Hz freq diff. */
|
||||
uint32_t rndval = 77777777;
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
/* This example sets new PRN frequency every ~22 ms.
|
||||
Note: You should use precise timing while building a real transmitter.
|
||||
*/
|
||||
|
@ -232,11 +217,9 @@ void RAM (SpinnerRTTYTest)(void)
|
|||
}
|
||||
}
|
||||
|
||||
void RAM (SpinnerMilliHertzTest)(void)
|
||||
{
|
||||
void RAM(SpinnerMilliHertzTest)(void) {
|
||||
int i = 0;
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
/* This example sets new frequency every ~1s.
|
||||
Frequency shift is 0.99 Hz for each step.
|
||||
*/
|
||||
|
@ -250,12 +233,10 @@ void RAM (SpinnerMilliHertzTest)(void)
|
|||
}
|
||||
}
|
||||
|
||||
void RAM (SpinnerWide4FSKTest)(void)
|
||||
{
|
||||
void RAM(SpinnerWide4FSKTest)(void) {
|
||||
int32_t df = 100; /* 100 Hz freq diff * 4 = 400 Hz. */
|
||||
uint32_t rndval = 77777777;
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
/* This example sets new PRN frequency every ~20 ms.
|
||||
Note: You should use precise timing while building a real transmitter.
|
||||
*/
|
||||
|
@ -278,8 +259,7 @@ void RAM (SpinnerWide4FSKTest)(void)
|
|||
accurate PPS output (pulse per second). If no such option,
|
||||
the correction parameter is zero.
|
||||
*/
|
||||
void RAM (SpinnerGPSreferenceTest)(void)
|
||||
{
|
||||
void RAM(SpinnerGPSreferenceTest)(void) {
|
||||
const uint32_t ku32_freq = 5555000UL;
|
||||
const int kigps_pps_pin = 2;
|
||||
|
||||
|
@ -289,22 +269,19 @@ void RAM (SpinnerGPSreferenceTest)(void)
|
|||
assert_(pGPS);
|
||||
DCO._pGPStime = pGPS;
|
||||
int tick = 0;
|
||||
for(;;)
|
||||
{
|
||||
for (;;) {
|
||||
PioDCOSetFreq(&DCO, ku32_freq, -2 * i32_compensation_millis);
|
||||
|
||||
/* LED signal */
|
||||
gpio_put(PICO_DEFAULT_LED_PIN, 1);
|
||||
sleep_ms(2500);
|
||||
|
||||
i32_compensation_millis =
|
||||
PioDCOGetFreqShiftMilliHertz(&DCO, (uint64_t)(ku32_freq * 1000LL));
|
||||
i32_compensation_millis = PioDCOGetFreqShiftMilliHertz(&DCO, (uint64_t)(ku32_freq * 1000LL));
|
||||
|
||||
gpio_put(PICO_DEFAULT_LED_PIN, 0);
|
||||
sleep_ms(2500);
|
||||
|
||||
if(0 == ++tick % 6)
|
||||
{
|
||||
if (0 == ++tick % 6) {
|
||||
// stdio_set_driver_enabled(&stdio_uart, false);
|
||||
GPStimeDump(&(pGPS->_time_data));
|
||||
// stdio_set_driver_enabled(&stdio_uart, true);
|
||||
|
|
Ładowanie…
Reference in New Issue