Ну, во-первых, почему-то на AVR плавающая арифметика работает быстрее целочисленной. Из 4-х арифметических операций только деление медленее, остальные - быстрее и намного.
Во-вторых, почему 64*8=512 байтов не умещаются в память Uno? И почему 512*8=4к не умещается в память f103?
Хотя по абсолютным величинам результаты, по крайней мере для Maple, похожи на истину.
Писал программки для PIC16F на ассемблере, код минимальный, интересуюсь возможно ли это на 328 камне, а то простое моргание светодиодиком в сотню байт кода выходит )))
Писал программки для PIC16F на ассемблере, код минимальный, интересуюсь возможно ли это на 328 камне, а то простое моргание светодиодиком в сотню байт кода выходит )))
Возможно. Вот ассемблерные инструкции для AVR, вот книжки Евстифеева по "микроконтроллерам AVR" и Ревича по "практическому программированию микроконтроллеров AVR на языке ассемблера".
Писал программки для PIC16F на ассемблере, код минимальный, интересуюсь возможно ли это на 328 камне, а то простое моргание светодиодиком в сотню байт кода выходит )))
Аналогично.
Ассемблер для пика приятный, а с микрочиповским си как-то не сложилось. В принципе все работает, но библиотек минимально так что все ручками писать надо. Хотя у пика есть несомненное преимущество - сверхнизкая скорость тактования 32кГц. Для нескоростных проектов дает очень низкое энергопотребление.
А у ардуинки и библиотеки, и справочники, и форумы и паять не надо. Вот только STM32 в протеусе не эмулируется, а пик - запросто.
Это такой особый вид IT-окультизма -- не видя исходников, гадать о требованиях к памяти и предсказывать скорость вычислений? Я давал здесь ссылку на статью, но ее потерли. Наверное, чтобы окультисты не чувствовали себя обделенными и всегда могли блеснуть чем-нибудь, да произвести впечатление на легковерных.
FFT - это вполне конкретный алгоритм. Для того, чтобы оценить требуемый объем памяти и затраты времени на обработку, видеть конкретный код совершенно не нужно.
А если вдруг окажется, что результаты, демонстрируемые этим "конкретным кодом" сильно отличаются от оценок, можно безошибочно утверждать, что место этому коду - в мусрорной корзине, и в качестве демонстрационной задачи использовать этот код категорически нельзя.
чтобы окультисты не чувствовали себя обделенными и всегда могли блеснуть чем-нибудь, да произвести впечатление на легковерных.
Не переживай так сильно... держи хвост пистолетом... Слабым и тупым оппонентам всегда завистно... Ты ж сам когда-то истерил по малейшему поводу... не понимая о чём тебе говорят... Теперь тебя не понимают... ибо ты вырос... над самим собой...
FFT - это вполне конкретный алгоритм. Для того, чтобы оценить требуемый объем памяти и затраты времени на обработку, видеть конкретный код совершенно не нужно.
Все эти дэ и корэ марки и прочая хрень... только для приблизительного анализа... Поэтому очень серьёзно... их рассматривать не стоит... Да и... ИМХО... никто такой задачи изначально не ставил...
Но для любителей поспорить... это просто ЛАФА... ))))))
Все эти дэ и корэ марки и прочая хрень... только для приблизительного анализа... Поэтому очень серьёзно... их рассматривать не стоит... Да и... ИМХО... никто такой задачи изначально не ставил...
По производительности - "да" по всем трем пунктам.
А по объему памяти - линейный коэффициент вычисляется абсолютно точно.
Подскажите нашел много настроек для таймера stm32 через Ardyino. Но вот как настроить таймер с det taim нигде нет и про комплементарную настройку каналов таймера ни слова. Подскажите где искать ???
mag155, вы уже год на форуме, неужели до сих пор не пришло какое-то минимальное понимание основ программ, с которыми работаете? Конечно вариантов дофига. Пишите в чём вам нравится, хоть в notepad. Начинающему всяко проще будет в Arduino IDE, но без знания аппаратной части МК, без умения её конфигурировать вы всё равно не настроете синхронную работу таймеров с дид-таймами, какую бы вы программу не выбрали. Стекущем уровнем подготовки вы сможете только повторить чей то готовый проект.
Я ж не программист даже не когда этому не учился. А то что год на форуме времени не так много получается выделить только час ну максимум 2 в день. Тк основная работа совсем в другом направлении.
static unsigned int ocr0a, ocr0b, ocr1a;
static unsigned int ocr1b, ocr2a, ocr2b;
static unsigned int ocr3a, ocr3b, ocr3c;
static unsigned int ocr4a, ocr4b, ocr4c;//^
static unsigned int ocr5a, ocr5b, ocr5c;//
static double sin_in;
static double blad = 1;
static unsigned int analog=0;
static double U_in = 0;
static double U_rms_max;
static bool a=0;
int main()
{
io_init();
timers_init(); //inicjalizacja licznikow PWM
adc_init(); //inicjalizacja przetwornika ADC
while(1) //nieskonczona petla z programem glownym
{
if(i==185) //warunek okreslajacy wejscie do funkcji zmiany
{ //parametrow napiecia wysjciowego, wywolanie co okolo 100ms
zmien_predkosc(); //funkcja zmiany parametrow napiecia wyjsciowego
i=0;
}
next_value_sin = licznik_glowny%dlugosc_tab_sin; //kolejna wartoœๆ sinusa do obliczenia
sin_in=omega_t*next_value_sin;
//obliczenie wartosci do rejestrow okreslajacych wypelnienie sygnalu wyjscioweg/
ocr0a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin D 13
ocr0b = ocr0a - 1;//pin D 4
ocr1a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin D 11
ocr1b = ocr1a - 1;//pin D 12
ocr2a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin D 10
ocr2b = ocr2a - 1;//pin D 9
ocr3a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin D 5
ocr3b = ocr3a-1;//r3a-1;//ocr3a - 1;//pin D 2
ocr4a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin D 6
ocr4b = ocr4a-1;//ocr3c-1;//ocr3c - 1;//pin D 7
ocr5a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin D 46
ocr5b = ocr5a-1;//ocr4a -1; //pin D 45
ocr3c = ocr0b;//round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin D 3
ocr4c = ocr1b;//round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin D 8
ocr5c = ocr2b;//round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin D 44
ТС! Даже если ты выложишь этот код верно, вот так вот, с польскими комментариями, то ты правда веришь, что кто-то будет изучать, как туда добавить дед тайм? ;))))
Причем код для АВР в ветке про СТМ32 ;))))
------
Я в твои дела не лезу, но я бы диллера сменил, он тебе белый точно чем-то бодяжит, ИМХО. ;))))
Сколько у вас разных тупых тем тут было? - про трехфазный диммер, про ускорение работы Дуе, про освоение СТМ32... Хоть что-нибудь получилось?? - НИЧЕГО
МАГ155 - шли бы вы куда подальше из этой ветки, а то вы ее вконец засрете. У вас тяга писать в чужие ветки и забивать их тупыми сообщениями на много страниц...
bwn - может потереть отсюда этот вопрос и все ответы как оффтоп для СТМ32?
Поясните что значит без разницы в чем писать ? Даташид для stm32 заточен под CMSIS как тогда использовать его с помощью arduino .Или я что то не так понимаю?
nik182, там LibMaple, но это можно назвать аналогом CMSIS + надстройка , аналогичная HAL. Поэтому можно какие-то дюже муторные вещи вроде клоков конфигурировать функциями. А вот addon от STM работает как раз на чистом CMSIS и HAL. Так что мигрировать с одного на другое можно относительно безболезненно :)
До 65 раз доходит.
Какая-то странная табличка.
Ну, во-первых, почему-то на AVR плавающая арифметика работает быстрее целочисленной. Из 4-х арифметических операций только деление медленее, остальные - быстрее и намного.
Во-вторых, почему 64*8=512 байтов не умещаются в память Uno? И почему 512*8=4к не умещается в память f103?
Хотя по абсолютным величинам результаты, по крайней мере для Maple, похожи на истину.
Я правильно понимаю, что UNO хороший камень?
Я правильно понимаю, что UNO хороший камень?
UNO это не камень ,это модель платформы ардуино .так же есть Mega , DUE и т.д
хороший для чего ? вот скажем дом строить, так себе .
Угу. Каменный камень.
Угу, а ви с какой целью интересуетесь? ))
Я правильно понимаю, что UNO хороший камень?
хороший для чего ? вот скажем дом строить, так себе .
ну, в неумелых руках этот камень может превратиться в кирпич. А это уже не каменный век. Можно и строительство начинать.
Угу, а ви с какой целью интересуетесь? ))
Писал программки для PIC16F на ассемблере, код минимальный, интересуюсь возможно ли это на 328 камне, а то простое моргание светодиодиком в сотню байт кода выходит )))
Я правильно понимаю, что UNO хороший камень?
UNO это не камень ,это модель платформы ардуино .так же есть Mega , DUE и т.д
хороший для чего ? вот скажем дом строить, так себе .
мой приятель кстати дом постоил на изделиях на PIC контроллере )))
Писал программки для PIC16F на ассемблере, код минимальный, интересуюсь возможно ли это на 328 камне, а то простое моргание светодиодиком в сотню байт кода выходит )))
Возможно. Вот ассемблерные инструкции для AVR, вот книжки Евстифеева по "микроконтроллерам AVR" и Ревича по "практическому программированию микроконтроллеров AVR на языке ассемблера".
Угу, а ви с какой целью интересуетесь? ))
Писал программки для PIC16F на ассемблере, код минимальный, интересуюсь возможно ли это на 328 камне, а то простое моргание светодиодиком в сотню байт кода выходит )))
Аналогично.
Ассемблер для пика приятный, а с микрочиповским си как-то не сложилось. В принципе все работает, но библиотек минимально так что все ручками писать надо. Хотя у пика есть несомненное преимущество - сверхнизкая скорость тактования 32кГц. Для нескоростных проектов дает очень низкое энергопотребление.
А у ардуинки и библиотеки, и справочники, и форумы и паять не надо. Вот только STM32 в протеусе не эмулируется, а пик - запросто.
Вообще-то эмулируется.
Хотя у пика есть несомненное преимущество - сверхнизкая скорость тактования 32кГц. Для нескоростных проектов дает очень низкое энергопотребление.
дак это и у AVR есть, хоть от 1 Герца тактуй
Какая-то странная табличка.
...
Во-вторых, почему 64*8=512 байтов не умещаются в память Uno? И почему 512*8=4к не умещается в память f103?
Хотя по абсолютным величинам результаты, по крайней мере для Maple, похожи на истину.
И 64 и 128 умещаются в 328p разумеется, и общитываются побыстрей чем в таблице. Так что с абсолютными для Uno - лажа.
Это такой особый вид IT-окультизма -- не видя исходников, гадать о требованиях к памяти и предсказывать скорость вычислений? Я давал здесь ссылку на статью, но ее потерли. Наверное, чтобы окультисты не чувствовали себя обделенными и всегда могли блеснуть чем-нибудь, да произвести впечатление на легковерных.
FFT - это вполне конкретный алгоритм. Для того, чтобы оценить требуемый объем памяти и затраты времени на обработку, видеть конкретный код совершенно не нужно.
А если вдруг окажется, что результаты, демонстрируемые этим "конкретным кодом" сильно отличаются от оценок, можно безошибочно утверждать, что место этому коду - в мусрорной корзине, и в качестве демонстрационной задачи использовать этот код категорически нельзя.
чтобы окультисты не чувствовали себя обделенными и всегда могли блеснуть чем-нибудь, да произвести впечатление на легковерных.
Не переживай так сильно... держи хвост пистолетом... Слабым и тупым оппонентам всегда завистно... Ты ж сам когда-то истерил по малейшему поводу... не понимая о чём тебе говорят... Теперь тебя не понимают... ибо ты вырос... над самим собой...
FFT - это вполне конкретный алгоритм. Для того, чтобы оценить требуемый объем памяти и затраты времени на обработку, видеть конкретный код совершенно не нужно.
Все эти дэ и корэ марки и прочая хрень... только для приблизительного анализа... Поэтому очень серьёзно... их рассматривать не стоит... Да и... ИМХО... никто такой задачи изначально не ставил...
Но для любителей поспорить... это просто ЛАФА... ))))))
Все эти дэ и корэ марки и прочая хрень... только для приблизительного анализа... Поэтому очень серьёзно... их рассматривать не стоит... Да и... ИМХО... никто такой задачи изначально не ставил...
По производительности - "да" по всем трем пунктам.
А по объему памяти - линейный коэффициент вычисляется абсолютно точно.
Исходники kissFFT доступны. Никогда не мешает расширить свои представления.
Подскажите нашел много настроек для таймера stm32 через Ardyino. Но вот как настроить таймер с det taim нигде нет и про комплементарную настройку каналов таймера ни слова. Подскажите где искать ???
an4013 из базы ST
Но вот как настроить таймер с det taim нигде нет и про комплементарную настройку каналов таймера ни слова.
в ардуино это не настраивается
Подскажите нашел много настроек для таймера stm32 через Ardyino. Но вот как настроить таймер с det taim
Тока щас дошло, что речь про deadtime. :-)
То есть только что то типа keil .Без вариантов?
Подскажите нашел много настроек для таймера stm32 через Ardyino. Но вот как настроить таймер с det taim
Тока щас дошло, что речь про deadtime. :-)
Семён Семёнович... )))
mag155, вы уже год на форуме, неужели до сих пор не пришло какое-то минимальное понимание основ программ, с которыми работаете? Конечно вариантов дофига. Пишите в чём вам нравится, хоть в notepad. Начинающему всяко проще будет в Arduino IDE, но без знания аппаратной части МК, без умения её конфигурировать вы всё равно не настроете синхронную работу таймеров с дид-таймами, какую бы вы программу не выбрали. Стекущем уровнем подготовки вы сможете только повторить чей то готовый проект.
Я ж не программист даже не когда этому не учился. А то что год на форуме времени не так много получается выделить только час ну максимум 2 в день. Тк основная работа совсем в другом направлении.
//Arduino Atmega 1280 2560 good version 3 phase induction motor Variable Speed Controller //Code
// Complier By Arduino Version 101 Version 106 Software
//รุ่นนี้เป็นแบบ AUTO RE RUN โค๊ดนี้ใช้วอลลุ่ม 5KB ตัวเดียวทำหน้าที่ ปิด -ปิด ปรับรอบ ให้ใช้ R //4K7 ต่อ ไฟ+5Vdc แล้วต่อเข้า ขาข้างด้าน + MAX ของ VR ต่อ R 1K-10 K ต่อ เข้า A3 ของ //ATmega 168 ATmega 328 P
#include "arduino.h" //Store data in flash (program) memory instead of SRAM
#include "avr/pgmspace.h"
#include "avr/io.h"
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define UN (400.0)
#define FN (50.0)
#define P (UN/FN)
#define T_PWM (0.000255)
#define T_MAX (4.0)
#define T_MIN (0.02)
#define K_MAX floor(T_MAX/T_PWM)
#define K_MIN ceil(T_MIN/T_PWM)
volatile static unsigned int dlugosc_tab_sin; //okresie napiecia wyjsciowego
static unsigned int i = 0;
volatile static unsigned int licznik_glowny = 0;
static unsigned int next_value_sin = 0;
static double t_param=100;
static float t = T_PWM;
static float omega_t;
static float t_out;
static float U_o_param;
static unsigned int ocr0a, ocr0b, ocr1a;
static unsigned int ocr1b, ocr2a, ocr2b;
static unsigned int ocr3a, ocr3b, ocr3c;
static unsigned int ocr4a, ocr4b, ocr4c;//^
static unsigned int ocr5a, ocr5b, ocr5c;//
static double sin_in;
static double blad = 1;
static unsigned int analog=0;
static double U_in = 0;
static double U_rms_max;
static bool a=0;
int main()
{
io_init();
timers_init(); //inicjalizacja licznikow PWM
adc_init(); //inicjalizacja przetwornika ADC
while(1) //nieskonczona petla z programem glownym
{
if(i==185) //warunek okreslajacy wejscie do funkcji zmiany
{ //parametrow napiecia wysjciowego, wywolanie co okolo 100ms
zmien_predkosc(); //funkcja zmiany parametrow napiecia wyjsciowego
i=0;
}
next_value_sin = licznik_glowny%dlugosc_tab_sin; //kolejna wartoœๆ sinusa do obliczenia
sin_in=omega_t*next_value_sin;
//obliczenie wartosci do rejestrow okreslajacych wypelnienie sygnalu wyjscioweg/
ocr0a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin D 13
ocr0b = ocr0a - 1;//pin D 4
ocr1a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin D 11
ocr1b = ocr1a - 1;//pin D 12
ocr2a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin D 10
ocr2b = ocr2a - 1;//pin D 9
ocr3a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin D 5
ocr3b = ocr3a-1;//r3a-1;//ocr3a - 1;//pin D 2
ocr4a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin D 6
ocr4b = ocr4a-1;//ocr3c-1;//ocr3c - 1;//pin D 7
ocr5a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin D 46
ocr5b = ocr5a-1;//ocr4a -1; //pin D 45
ocr3c = ocr0b;//round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin D 3
ocr4c = ocr1b;//round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin D 8
ocr5c = ocr2b;//round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin D 44
//uaktualnienie wartosci w rejestrach/
cli(); //zabronienie na obsloge przerwan na wypadek gdyby
//podczas uaktualniania wystapilo przerwanie
OCR0A = ocr0a; //pin D13
OCR0B = ocr0b; //pin D4
OCR1A = ocr1a; //pin D11
OCR1B = ocr1b; //pin D12
OCR2A = ocr2a; //pin D10
OCR2B = ocr2b; //pin D9
OCR3A = ocr3a; //pin D5
OCR3B = ocr3b; //pin D2
OCR3C = ocr3c; //pin D3
OCR4A = ocr4a; //pin D6
OCR4B = ocr4b; //pin D7
OCR4C = ocr4c; //pin D8
OCR5A = ocr5a; //pin D46
OCR5B = ocr5b; //pin D45
OCR5C = ocr5c; //pin D44
sei(); //zezwolenie na obsloge przerwan
i++;
}
}
void adc_init()
{
ADCSRA |= _BV(ADEN);//uruchomienie przetwornika
ADCSRA |= _BV(ADPS2);//ustawienie preskalera
ADCSRA |= _BV(ADPS1);//^
ADCSRA |= _BV(ADPS0);//^
ADMUX |= _BV(REFS0);// napiecie odniesienia ustawione jako napiecie zasilania
ADMUX |= ADMUX &= 0b11110000; //wybranie wejscia ADC0 do pomiaru
}
void timers_init()
{
cli(); // obsloga przerwan zabroniona
TCCR0A |= _BV(COM0A1) | _BV(COM0B0) | _BV(COM0B1) | _BV(WGM00);
TCCR0B |= _BV(CS01); //preskaler 8
TIMSK0 |= _BV(TOIE0); //flaga od wartosci 0 wlaczona
//timer1 init
TCCR1A |= _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1) | _BV(WGM10);
TCCR1B |= _BV(CS11); //preskaler 8
//timer2 init
TCCR2A |= _BV(COM2A1) | _BV(COM2B0) | _BV(COM2B1) | _BV(WGM20);
TCCR2B |= _BV(CS21); //preskaler 8
//timer3 init
TCCR3A |= _BV(COM3A1) | _BV(COM3B0) | _BV(COM3B1) | _BV(WGM30);
TCCR3B |= _BV(CS31);
TCCR3C |= _BV(COM3A1) | _BV(COM3B0) | _BV(COM3B1) | _BV(WGM33);
TCCR3C |= _BV(CS31);//;|(1 << CS00); //preskaler 8
cbi (TCCR3A, COM3C0);
sbi (TCCR3A, COM3C1);
//timer4 init
TCCR4A |= _BV(COM4A1) | _BV(COM4B0) | _BV(COM4B1) | _BV(WGM40);
TCCR4B |= _BV(CS41);
TCCR4C |= _BV(CS41); //preskaler 8
cbi (TCCR4A, COM4C0);
sbi (TCCR4A, COM4C1);
//timer5 init
TCCR5A |= _BV(COM5A1) | _BV(COM5B0) | _BV(COM5B1) | _BV(WGM50);
TCCR5B |= _BV(CS51); //preskaler 8
TCCR5C |= _BV(CS51);
cbi (TCCR5A, COM5C0);
sbi (TCCR5A, COM5C1);
//zerowanie wartosci licznik๓w
TCNT0 = 0;
TCNT1L = 0;
TCNT2 = 0;
TCNT3 = 0;
TCNT4L = 0;
TCNT5 = 0;
sei(); //zezwolenie na obsloge przerwan
}
void io_init()
{
pinMode(6, OUTPUT); //OC0A
pinMode(5, OUTPUT); //OC0B
pinMode(9, OUTPUT); //OC1A
pinMode(10, OUTPUT);//OC1B
pinMode(11, OUTPUT);//OC2A
pinMode(3, OUTPUT); //OC3C
pinMode(52, INPUT);
pinMode(53, INPUT);
pinMode(50, OUTPUT);
pinMode(2, OUTPUT); //OC3B
pinMode(4, OUTPUT); //OC0B
pinMode(7, OUTPUT); //OC1A
pinMode(8, OUTPUT);//OC4C
pinMode(12, OUTPUT);//OC2A
pinMode(13, OUTPUT); //OC2B
pinMode(44, OUTPUT);//OC4C
pinMode(45, OUTPUT);//OC2A
pinMode(46, OUTPUT); //OC2B
pinMode(A3, INPUT); //OC1A
pinMode(A4, OUTPUT);//OC1B
pinMode(A5, OUTPUT);//OC2A
pinMode(A6, OUTPUT); //OC3C
pinMode(A1, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A9, OUTPUT);
pinMode(A10, OUTPUT); //OC0A
pinMode(A11, OUTPUT); //OC0B
pinMode(A12, OUTPUT); //OC1A
pinMode(A13, OUTPUT);//OC4C
pinMode(A14, OUTPUT);//OC2A
pinMode(A15, OUTPUT); //OC2B
}
ISR(TIMER0_OVF_vect) //przerwanie przy wartosci 0 licznika0
{
analog = ADC;
if(a)
{
U_in = 0.0709*analog;
ADMUX |= _BV(MUX0); //wybranie wejscia ADC1 do pomiaru pradu
}
else
{
ADMUX |= ADMUX &= 0b11110000; //wybranie wejscia ADC0 do pomiaru napiecia
if(analog>579)
{
blad = 0; //jezeli przeciazenie wylaczenie generacji napiecia
digitalWrite(50, HIGH); //zapalenie diody
}
}
ADCSRA |= _BV(ADSC);//start odczytywania pomiaru
a=a^1; //bramka XOR neguje wartosc logiczna a
licznik_glowny++;
if(licznik_glowny>=dlugosc_tab_sin) licznik_glowny = 0;
}
void zmien_predkosc()
{
t_param = map(analogRead(3),0,1023,0,100);
U_rms_max = U_in*0.62;
bool up;
bool down;
up = digitalRead(52);
down = digitalRead(53);
if(up==1) t_param--;
if(down==1) t_param++;
if(t_param<0) t_param=0;
if(t_param>100) t_param=100;//^
dlugosc_tab_sin = ceil((K_MAX-K_MIN)*t_param/500+K_MIN);//ilosc wartosci wypelnien w jednym okresie
t_out = T_PWM*dlugosc_tab_sin; //obliczenie okresu napiecia wyjsciowego
omega_t = t*2*PI/t_out; //obliczenie pulsacji napiecia wyjsciowego
U_o_param = (P/t_out)/U_rms_max; //obliczenie parametru okreslajacego wielkosc napiecia wyjsciowego
if(t_out>1) U_o_param = 0.5*(18.5/U_rms_max); //napi๊cie na wyjsciu przy niskiej czestotliwosci 10V
if(U_o_param>1) U_o_param=1;
//zabezpieczenie przekroczenia wartosci skrajnych
blad = 1; //jezeli przeciazenie wylaczenie generacji napiecia
digitalWrite(50, LOW); //zapalenie diody
}
Есть вот такой код вполне рабочий. Но для полного счастья нужно реализовать deadtime подскажите как это сделать?
А что у Вас в строке 55 и 68?
Вы имеете в виду это ocr0a - 1. Единицы мало а если делаю больше генерация получается кривая ?
нет, мне кажется он намекает на то, что вы за год на форуме даже код не научились правильно выкладывать
С телефона выложил.А там по другому никак .
По теме есть что сказать ?
Никогда.
Каюсь во грехе сем.
ТС! Даже если ты выложишь этот код верно, вот так вот, с польскими комментариями, то ты правда веришь, что кто-то будет изучать, как туда добавить дед тайм? ;))))
Причем код для АВР в ветке про СТМ32 ;))))
------
Я в твои дела не лезу, но я бы диллера сменил, он тебе белый точно чем-то бодяжит, ИМХО. ;))))
вам? бессмысленно
Сколько у вас разных тупых тем тут было? - про трехфазный диммер, про ускорение работы Дуе, про освоение СТМ32... Хоть что-нибудь получилось?? - НИЧЕГО
И с этими дидтаймами все будет так же.
Диммер прекрасно работает. Но этож тупая тема.
Причем код для АВР в ветке про СТМ32 ;))))
да, точно.
МАГ155 - шли бы вы куда подальше из этой ветки, а то вы ее вконец засрете. У вас тяга писать в чужие ветки и забивать их тупыми сообщениями на много страниц...
bwn - может потереть отсюда этот вопрос и все ответы как оффтоп для СТМ32?
ну да, ну да. Микрософт слышал? - моя работа
Если бы вы меньше срали тупыми ответами былобы куда меньше страниц в теме .
Поясните что значит без разницы в чем писать ? Даташид для stm32 заточен под CMSIS как тогда использовать его с помощью arduino .Или я что то не так понимаю?
Можно писать с помощью CMSYS. Ардуина нормально его кушает.
Вы имеете ввиду CMSIS?
Шутить изволите ?
Посмотрите програму Димы. Чесный CMSIS. Отлично работает. http://arduino.ru/forum/proekty/generator-s-reguliruemoei-chastotoi-na-arduino#comment-296530
nik182, там LibMaple, но это можно назвать аналогом CMSIS + надстройка , аналогичная HAL. Поэтому можно какие-то дюже муторные вещи вроде клоков конфигурировать функциями. А вот addon от STM работает как раз на чистом CMSIS и HAL. Так что мигрировать с одного на другое можно относительно безболезненно :)
Дак как все же работать с stm32 через ардуино чтоб настроить таймеры ???