Generera 3-4MHz ut från Arduino eller Pi Pico?
Generera 3-4MHz ut från Arduino eller Pi Pico?
Undrar om det går att generera en fyrkantsvåg på mellan 3 till 4 MHz ut från en Atmega 328 eller Pi Pico?
Ska bygga sk. "Rävar" till en amatörradioklubb och vill göra det så enkelt som möjligt. Visst går det att använda en Si5351a eller en kristall oscillator men det blir lite mer kostsamt och mer komponenter men går det inte på annat sätt så...
Ett bandpassfilter blir det för att bli av med övertonerna men i övrigt ska den vara enkel med ett par mW ut, ska inte spridas ut över något större område.
(Frekvensen är tänkt att vara mellan 3.5-3.6 MHz inom cw området.)
Har sett att detta görs med Raspberry Pi's (Zero, pi3 mfl.) men är lite för saftiga priser på de korten idag och känns lite overkill.
Tps, idéer och länkar mottages tacksamt.
73 de SA5VOX
Ska bygga sk. "Rävar" till en amatörradioklubb och vill göra det så enkelt som möjligt. Visst går det att använda en Si5351a eller en kristall oscillator men det blir lite mer kostsamt och mer komponenter men går det inte på annat sätt så...
Ett bandpassfilter blir det för att bli av med övertonerna men i övrigt ska den vara enkel med ett par mW ut, ska inte spridas ut över något större område.
(Frekvensen är tänkt att vara mellan 3.5-3.6 MHz inom cw området.)
Har sett att detta görs med Raspberry Pi's (Zero, pi3 mfl.) men är lite för saftiga priser på de korten idag och känns lite overkill.
Tps, idéer och länkar mottages tacksamt.
73 de SA5VOX
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Utan att ha någon form av bevis säger jag att det ska gå
Picon's PIO ska kunna drivas med klocka upp till 125 MHz, om man då bara togglar en port on/off borde det ge en frekvens på 62,5 MHz.
Edit: Dock vet jag inte hur temperaturstabil en Pico's klocka är
Picon's PIO ska kunna drivas med klocka upp till 125 MHz, om man då bara togglar en port on/off borde det ge en frekvens på 62,5 MHz.
Edit: Dock vet jag inte hur temperaturstabil en Pico's klocka är
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Kan det bli enklare ?
http://www.sparkbangbuzz.com/easy-ten/easy-ten.htm
Sen kan du nyckla den med en Arduino.
http://www.sparkbangbuzz.com/easy-ten/easy-ten.htm
Sen kan du nyckla den med en Arduino.
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Det är exakt det jag letade efter! TACK!TheUnreal skrev: ↑2 september 2022, 21:53:20 Utan att ha någon form av bevis säger jag att det ska gå
Picon's PIO ska kunna drivas med klocka upp till 125 MHz, om man då bara togglar en port on/off borde det ge en frekvens på 62,5 MHz.
Edit: Dock vet jag inte hur temperaturstabil en Pico's klocka är
Hittade även ett bibliotek för Arduino igår kväll: FastPwmPin https://github.com/maxint-rd/FastPwmPin som gör samma sak. Klarar tydligen upp till 16MHz med lite tur.
Nu ska labbas lite och bygga filter!
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Njae, egentligen inte, väldigt enkelt och man kan använda en kristall för NTSC color burst så ligger man hyfsat bra, idén har redan föresvävat mig men att kunna ändra frekvensen utan att behöva byta kristaller eller ha extra vridkondensatorer mm. och slippa tjirp sändningar vore så smidigt och om det gick att göra i stort sett digitalt är det ju drömmen med många möjligheter därefter.metric skrev: ↑4 september 2022, 15:21:45 Kan det bli enklare ?
http://www.sparkbangbuzz.com/easy-ten/easy-ten.htm
Sen kan du nyckla den med en Arduino.
Men tack snälla för tipset!
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Testar att använda FastPwmPin biblioteket men har ett problem, kan banne mig inte få den att byta frekvens. 4MHz punkt slut.
Vad är det jag missar?
(Använder en UNO med 16MHz kristall.)
Vad är det jag missar?
(Använder en UNO med 16MHz kristall.)
Kod: Markera allt
/*
Blink with fast PWM pin
Turns on an LED on and off, repeatedly, along with fast toggle of a specific pin.
For more information see https://github.com/maxint-rd/FastPwmPin
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
For ATtiny85 and ATtiny13A the library set LED_BUILTIN to pin 2.
This example code is based on the Arduino Blink example, released in the public domain.
Original version modified by Scott Fitzgerald, Arturo Guadalupi & Colby Newman.
This version modified 17 January 2018 by Maxint R&D (github.com/maxint-rd)
*/
#include <FastPwmPin.h>
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
// Enable fast PWM on a pin
// ATmega328/168 (Uno/Nano/Pro Mini): pin D3 or pin D11 (D11 toggle only)
// ATtiny85: pin D1, D4 (D0/D3 only as inverted for D1/D4, 51%-99%)
// ATtiny13A: pin D1, D0 (D0 toggle only)
FastPwmPin::enablePwmPin(9, 3540000L, 50);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Biblioteket använder timers i mikroprocessorn för att generera signalen. Det gör att klockan bara kan delas ner med heltal, så du kan inte styra den i små steg för att få 3540 kHz.Vad är det jag missar?
En Si5351 rekommenderas till rävsändaren.
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Check, insett det, får nog bli Si5351a iaf.men verkar som om Pi Pico gå att tweaka rätt enkelt också, ska ge det ett försök. Görs ju samma saker med Pi Zero mfl..
Re: Generera 3-4MHz ut från Arduino eller Pi Pico?
Kan inte riktigt överge tanken efter att jag fått ett förslag till lösning på Arduino forumet men har inte fått det att fungera riktigt.
Försökt nå den som gav förslaget men inte fått något svar.
Är det någon som har koll på Pico och hur man får detta att rulla? (Använder Arduino IDE):
Får följande felmeddelande:
Försökt nå den som gav förslaget men inte fått något svar.
Är det någon som har koll på Pico och hur man får detta att rulla? (Använder Arduino IDE):
Kod: Markera allt
//For Earl Philhower core (default board frequency 133 MHz)
// PWM timer config
#define PWM_WRAP 38 // timer period 133 MHz / 38 = 3.5 MHz
pwm_config c_OE = pwm_get_default_config();
pwm_config_set_clkdiv(&c_OE, 1); // prescaler 1
pwm_config_set_wrap(&c_OE, PWM_WRAP-1);
pwm_config_set_output_polarity(&c_OE, false, false); // not invert A & B outputs
// PWM pin config
uint8_t OE_slice_num = pwm_gpio_to_slice_num(pin_OE);
gpio_set_function(pin_OE, GPIO_FUNC_PWM);
pwm_set_gpio_level(pin_OE, PWM_WRAP / 2); // duty 50%
pwm_init(OE_slice_num, &c_OE, true); // start PWM timer
Får följande felmeddelande:
Gjorde en version på rent "känn" och som kompilerar och laddar på men inte helt 100% på det jag gjort blev rätt:Arduino:1.8.19 (Windows 10), Kort:"Raspberry Pi Pico, 2MB (no FS), 133 MHz, Small (-Os) (standard), Disabled, Disabled, Disabled, Disabled, None, Pico SDK, IPv4 Only"
sketch_oct02a:3:1: error: 'pwm_config' does not name a type; did you mean 'pio_sm_config'?
3 | pwm_config c_OE = pwm_get_default_config();
| ^~~~~~~~~~
| pio_sm_config
sketch_oct02a:4:22: error: expected constructor, destructor, or type conversion before '(' token
4 | pwm_config_set_clkdiv(&c_OE, 1); // prescaler 1
| ^
sketch_oct02a:5:20: error: expected constructor, destructor, or type conversion before '(' token
5 | pwm_config_set_wrap(&c_OE, PWM_WRAP-1);
| ^
sketch_oct02a:6:31: error: expected constructor, destructor, or type conversion before '(' token
6 | pwm_config_set_output_polarity(&c_OE, false, false); // not invert A & B outputs
| ^
sketch_oct02a:8:46: error: 'pin_OE' was not declared in this scope
8 | uint8_t OE_slice_num = pwm_gpio_to_slice_num(pin_OE);
| ^~~~~~
sketch_oct02a:8:24: error: 'pwm_gpio_to_slice_num' was not declared in this scope
8 | uint8_t OE_slice_num = pwm_gpio_to_slice_num(pin_OE);
| ^~~~~~~~~~~~~~~~~~~~~
sketch_oct02a:9:18: error: expected constructor, destructor, or type conversion before '(' token
9 | gpio_set_function(pin_OE, GPIO_FUNC_PWM);
| ^
sketch_oct02a:10:19: error: expected constructor, destructor, or type conversion before '(' token
10 | pwm_set_gpio_level(pin_OE, PWM_WRAP / 2); // duty 50%
| ^
sketch_oct02a:11:9: error: expected constructor, destructor, or type conversion before '(' token
11 | pwm_init(OE_slice_num, &c_OE, true); // start PWM
| ^
exit status 1
'pwm_config' does not name a type; did you mean 'pio_sm_config'?
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Kod: Markera allt
#include "pico/stdlib.h"
#include "hardware/pwm.h"
// PWM timer config
#define PWM_WRAP 38 // timer period 133 MHz / 38 = 3.5 MHz
uint pin_OE = 16;
const int ledPin = 25;
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH); // Turns on built in LED to show that the PICO is active.
}
void loop()
{
// PWM pin config
gpio_set_function(pin_OE, GPIO_FUNC_PWM);
pwm_config c_OE = pwm_get_default_config();
pwm_config_set_clkdiv(&c_OE, 1); // prescaler 1
pwm_config_set_wrap(&c_OE, PWM_WRAP-1);
pwm_config_set_output_polarity(&c_OE, false, false); // not invert A & B outputs
uint8_t OE_slice_num = pwm_gpio_to_slice_num(pin_OE);
pwm_set_gpio_level(pin_OE, PWM_WRAP / 2); // duty 50%
pwm_init(OE_slice_num, &c_OE, true); // start PWM timer
}