Greg Herlein 2025-02-17 11:31:36 -06:00 zatwierdzone przez GitHub
commit b671c26e97
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 53 dodań i 76 usunięć

81
test.c
Wyświetl plik

@ -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);