Доработать скетч
- Войдите на сайт для отправки комментариев
Ср, 28/12/2016 - 18:11
Доброго всем времени суток,
Нужно доработать код -
#include <mcp_can.h> #include <SPI.h> unsigned char len = 0, rxBuf[8]; unsigned kbps = 0, value = LOW; unsigned long rxId, input, freq = 0, previousMillis = 0; MCP_CAN CAN(10); void setup() { CAN.begin(CAN_500KBPS); } void loop() { canread(); if (rxId == 0x37E && len == 7) { goto a39; } a39: canread(); if (rxId == 0x37E) { input = uint16_t(rxBuf[0] << 8 | rxBuf[1] ); } blink(input); goto a39; } void blink (unsigned int input) { canread(); if (input != 0) { freq = 65535 - input; if (millis() - previousMillis > freq) { previousMillis = millis(); value = !value; digitalWrite(3, value); } } else if (input == 0) { digitalWrite(3, HIGH); } } void canread() { CAN.readMsgBuf(&len, rxBuf); rxId = CAN.getCanId(); }
если точнее, то переписать функцию blink, на выходе D3 должен быть меандр частотой 0-450Khz. частота должна изменяться линейно по значению input.
Предложения/вопросы ICQ 99177868, ilja(а)treurtransport.eu
точно 450 kHz? Дело в том, что, например, примененный в вашем коде оператор
digitalWrite(3, value);
выполняется 6 мкс, итого на туда/ сюда 12 мкс (и макс 80 кГц) только на ногодрыг...
Пишите ydom@mail.ru напишу фрагмент кода генерации меандра на честном С или асме. Но нужно задействовать один таймер.
На ардуино не выполнимо, даже на прерываниях, сторонняя XR2206 она до 300Кгц, остаётся только прямой цифровой синтез, AD9850, AD9851
точно 450 kHz? Дело в том, что, например, примененный в вашем коде оператор
digitalWrite(3, value);
выполняется 6 мкс, итого на туда/ сюда 12 мкс (и макс 80 кГц) только на ногодрыг...
Пишите ydom@mail.ru напишу фрагмент кода генерации меандра на честном С или асме. Но нужно задействовать один таймер.
меандр частотой 0-450Khz. частота должна изменяться линейно по значению input
PS то-есть точность перестройки частоты - 6.86656ГЦ
точно 450 kHz? Дело в том, что, например, примененный в вашем коде оператор
digitalWrite(3, value);
выполняется 6 мкс, итого на туда/ сюда 12 мкс (и макс 80 кГц) только на ногодрыг...
Пишите ydom@mail.ru напишу фрагмент кода генерации меандра на честном С или асме. Но нужно задействовать один таймер.
Скажем так - во первых ошибся, а исправить не могу - не kHz а Hz. Во вторых не обязательно точно, но что то около того (сигналом будет крутиться автомобильный аналоговый спидометр, а там примерно от 0 до 450hz)
точно 450 kHz? Дело в том, что, например, примененный в вашем коде оператор
digitalWrite(3, value);
выполняется 6 мкс, итого на туда/ сюда 12 мкс (и макс 80 кГц) только на ногодрыг...
Пишите ydom@mail.ru напишу фрагмент кода генерации меандра на честном С или асме. Но нужно задействовать один таймер.
Скажем так - во первых ошибся, а исправить не могу - не kHz а Hz. Во вторых не обязательно точно, но что то около того (сигналом будет крутиться автомобильный аналоговый спидометр, а там примерно от 0 до 450hz)
Ну тогда здесь нахрен честный СИ не нужен, всунуть код генератора на таймерах от DIMAX, для знающего работы на 15 минут
Скажем так - во первых ошибся, а исправить не могу - не kHz а Hz. Во вторых не обязательно точно, но что то около того (сигналом будет крутиться автомобильный аналоговый спидометр, а там примерно от 0 до 450hz)
а, ну другое дело. Письмо вам пишу, а вы в ответ точные требования по точности частоты. Если Hz, то конечно можно сделать побыстрее и подешевле, чем для 450 kHz... Ну или вы, не дожидаясь моего письма, пришлите требования (тз) ydom@mail.ru
Я этот генератор вчера ещё смотрел, но лично у меня глаза от кода разбежались в разные стороны. Потому и в платном разделе.
На какую точность всё же выходить 1Гц или 0.006867Гц?
1Гц вполне
Я этот генератор вчера ещё смотрел, но лично у меня глаза от кода разбежались в разные стороны. Потому и в платном разделе.
uint это 65535 значений, оно вам точно надо?
Я этот генератор вчера ещё смотрел, но лично у меня глаза от кода разбежались в разные стороны. Потому и в платном разделе.
есть малость )))
Этот DIMAX код вам помог бы
Строка 11 это для получения от input
в принципе не особо, плясалось от того, что в can сообщении максимум FF FF
глянул сейчас, достаточно 54783
Этот DIMAX код вам помог бы
Возник вопрос - а возможно в этом коде перевесить выход с 9 на 3?
Этот DIMAX код вам помог бы
Возник вопрос - а возможно в этом коде перевесить выход с 9 на 3?
А в теме генератора и задайте, он ответит