Чт ноя 23, 2017 18:42:02
Чт мар 22, 2018 09:05:22
Сб мар 24, 2018 08:04:26
Чт апр 26, 2018 13:25:30
Пн май 14, 2018 05:50:58
Пт мар 20, 2020 16:15:02
Сб апр 11, 2020 21:21:45
Вс апр 12, 2020 09:27:26
Вс апр 12, 2020 16:17:07
#define W_CLK 8
#define FQ_UD 9
#define DATA 10
#define RESET 11
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK);
}
}
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/180000000;
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x001);
pulseHigh(FQ_UD);
}
float readInVoltage()
{
float vin = 0;
float vin1 = 0;
float vin2 = 0;
for (int i = 0; i < 12; i++)
{
vin1 = analogRead(A0);
vin2 = analogRead(A1);
vin = vin + (((vin1 + vin2) / 2) / 4095 * 2.048);
}
vin = vin / 12;
return vin;
}
void setup() {
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD);
analogReference(INTERNAL2V048);
analogReadResolution(12);
Serial.begin(115200);
uint32_t i=0;
while(i<=70000000)
{
sendFrequency(i);
Serial.print("fr=");
Serial.print(i);
Serial.print(" v=");
Serial.print(readInVoltage(),6);
Serial.println("");
i=i+1000;
}
}
void loop() {
}
Вс апр 12, 2020 18:13:42
Вс апр 12, 2020 18:28:07
Вс апр 12, 2020 18:53:24
Вс апр 12, 2020 19:14:28
float readInVoltage()
{
float vin = 0;
for (int i = 0; i < 12; i++)
{
vin = vin + ((((float)analogRead(A0) + (float)analogRead(A1)) / 2) / 4095 * 2.048);
}
vin = vin / 12;
return vin;
}
Вс апр 12, 2020 19:54:56
Вс апр 12, 2020 20:48:41
#define W_CLK 8
#define FQ_UD 9
#define DATA 10
#define RESET 11
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
String serial_readline = "";
const int bSize = 64; //serial buffer size from desktop
char Buffer[bSize]; //serial buffer from desktop
long freq = 35000000;
void tfr_byte(byte data)
{
for (int i = 0; i < 8; i++, data >>= 1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK);
}
}
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295 / 180000000;
for (int b = 0; b < 4; b++, freq >>= 8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x001);
pulseHigh(FQ_UD);
}
float readInVoltage()
{
float vin = 0;
for (int i = 0; i < 12; i++)
{
vin = vin + ((((float)analogRead(A0) + (float)analogRead(A1)) / 2) / 4095 * 2.048);
}
vin = vin / 12;
return vin;
}
void setup() {
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD);
analogReference(INTERNAL2V048);
analogReadResolution(12);
Serial.begin(115200);
Serial.setTimeout(100);
}
void loop() {
while (Serial.available() > 0)
{
memset(Buffer, 0, bSize);
Serial.readBytesUntil('\n', Buffer, bSize);
serial_readline = String(Buffer);
if (serial_readline.startsWith("GET "))
{
String sfreq = serial_readline.substring(4);
char carray[sfreq.length() + 1];
sfreq.toCharArray(carray, sizeof(carray));
sendFrequency(long(atof(carray)));
Serial.println(readInVoltage(), 6);
}
Serial.flush();
}
}
Пн апр 13, 2020 06:07:16
Пн апр 13, 2020 07:06:23
Пн апр 13, 2020 15:16:39
Вт апр 14, 2020 11:00:10
//Скетч для AD9851 и платы WAVGAT UNO R3 с контроллером LGT8F328P (AVGA328P) https://aliexpress.ru/item/4000587200875.html?gps-id=pcDetail404&scm=1007.16891.96945.0&scm_id=1007.16891.96945.0&scm-url=1007.16891.96945.0&pvid=12e0d1cd-2156-489e-a2b8-26084e010c5d&_t=gps-id:pcDetail404,scm-url:1007.16891.96945.0,pvid:12e0d1cd-2156-489e-a2b8-26084e010c5d,tpp_buckets:668%230%23131923%239_668%23808%234093%23801_668%23888%233325%235
//для проекта UA3REO-Sweep-Analyzer ссылки на оригинальный проект https://ua3reo.ru/izmerenie-parametrov-filtrov-i-konturov-na-arduino/
//GitHub https://github.com/XGudron/UA3REO-Sweep-Analyzer
//Дрова для этой платы лежат https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
//Выбираем в Инструментах плату LGT8F328, Clock source - Internal, Clock - 16Mhz, Variant - 328P-LQFP32 MiniEVB nano-style
//Ноги для управления AD9851.
//Генератор на такой плате https://russian.alibaba.com/product-detail/ad9851-dds-signal-generator-module-circuit-diagram-2-sine-wave-0-70mhz-and-2-square-wave-0-1mhz-output-1918582945.html
//Перемычки J1,J2 установлены. Перемычка J3 - по желанию, если надо прямоугольник получить
#define W_CLK 7
#define FQ_UD 8
#define DATA 9
#define RESET 10
#define INP_VAL A0 //Измерительный вход
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
String serial_readline = "";
const int bSize = 64; //serial buffer size from desktop
char Buffer[bSize]; //serial buffer from desktop
long freq = 35000000;
void tfr_byte(byte data)
{
for (int i = 0; i < 8; i++, data >>= 1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK);
}
}
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295 / 180000000;
for (int b = 0; b < 4; b++, freq >>= 8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x001);
pulseHigh(FQ_UD);
}
float readInVoltage()
{
float vin = 0;
for (int i = 0; i < 12; i++)
{
vin = vin + ((float)analogRead(INP_VAL) / 4096 * 4.096);
}
vin = vin / 12;
return vin;
}
//При старте переключаемся на внешний кварц
void switchToExtQuartz() {
bitSet(PMCR, PMCE);
bitSet(PMCR, OSCMEN);
asm("nop");
asm("nop");
asm("nop");
bitSet(PMCR, PMCE);
bitClear(PMCR, CLKFS);
bitSet(PMCR, CLKSS);
asm("nop");
asm("nop");
asm("nop");
}
void setup() {
switchToExtQuartz(); // Для WAVGAT UNO R3, nano с внешним кварцем
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD);
analogReference(INTERNAL4V096);
analogReadResolution(12);
Serial.begin(115200);
}
void loop() {
while (Serial.available() > 0)
{
memset(Buffer, 0, bSize);
Serial.readBytesUntil('\n', Buffer, bSize);
serial_readline = String(Buffer);
if (serial_readline.startsWith("GET "))
{
freq = (long)serial_readline.substring(4).toFloat();
sendFrequency(freq);
Serial.println(readInVoltage(), 6);
}
Serial.flush();
}
}
Чт апр 16, 2020 08:08:42