Дмитрий, по моему пропустили описание 2х самых главных фьюзов: RSTDSBL, и SPIEN при включении которых (запись в них 0) отключается сброс мк и возможность его прошивки через SPI.
Не совсем корректно назввать CodeVisionAVR компилятором. По факту это такая-же соеда разработки как и Arduino IDE, которая использует тот же компилятор AVR GCC. Только она работает исключительно с именами регистров МК и их отдельными битами и не содержит чисто "ардуиновских" функций типа pinMode(), digitalWrite() и т.д. А вот Arduino IDE может работать и с именами регистров и с ардуиновскими функциями. Хорошие уроки лет 10-15 нащад были у Дмитрия Осипова по этой теме, но с человеком что-то случилось в психическом плане и он ушел в религию
18:00 а этот код как будет выглядеть в кодевизарде? для меня это код ардуиновский трудно понятен по сравнению с кодевизардам. сможете показать какой будет код в кодевизарде? заранее спасибо.
@@dmitrykuznetsov5468 в общем я постоянно использовал для задержки delay. а это очень мешает когда используешь кнопки, я например хочу сделать регулятор частоты, и измеритель частоты, я что то не знаю как правильно сделать. регулятор частоты импульсов для управление шаговым двигателем step. dir, а измеритель частоты он будет измерять частоту и если например частота выше 100гц то выполнить какой то код, или задействовать выход шим чтобы сбавить обороты, и многое другое по этой части приходится собирать но вот с таймером у меня чуть беда.
@@dargindarginec9561 Project : Генератор (ГПИ) 5 - 1400 Гц с шагом 5 Гц, частота пуска 800 Гц Version : Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 10,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include #include float k=0; // прибавочное число к делителю частоты - 0.0125 шаг 5 Гц. flash unsigned char byte [] = {3, 3, 2, 2}; void main(void) { PORTB=0x00; DDRB=0x02; PORTC=0x3F; DDRC=0x00; PORTD=0x00; DDRD=0x00; TCCR0=0x00; TCNT0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x00; UCSRB=0x00; ACSR=0x80; SFIOR=0x00; ADCSRA=0x00; SPCR=0x00; TWCR=0x00; while (1) { unsigned long a = 800; // необходимая частота (Гц) unsigned long c = OCR1A ; unsigned long F_PU = 10005000; char i=0; float h;
if (PINC.0==0){delay_ms(100); k+=0.0125; // при нажатии кнопки PС.0 делитель h увеличивается на 0.125 while (PINC.0==0){} } if (PINC.1==0){delay_ms(100); k-=0.0125; // при нажатии кнопки PС.1 делитель h уменьшается на 0.125 while (PINC.1==0){} } h=2+k; if(h=3.5) // если данные h больше этих значений, то { k=0; // значения делителя h будут равны 2 } c = (F_PU / a / h); for (i = 0; i < 4; i++) { // если частота ниже 76 Гц, то выполняется данная команда if (c > 65536) { d
Хоть прошел все это, но все равно с интересом смотрел, спасибо 👍
Благодарю за информацию!
Дмитрий, по моему пропустили описание 2х самых главных фьюзов: RSTDSBL, и SPIEN при включении которых (запись в них 0) отключается сброс мк и возможность его прошивки через SPI.
@@arduino.donbass Согласен, пропустил
Не совсем корректно назввать CodeVisionAVR компилятором. По факту это такая-же соеда разработки как и Arduino IDE, которая использует тот же компилятор AVR GCC. Только она работает исключительно с именами регистров МК и их отдельными битами и не содержит чисто "ардуиновских" функций типа pinMode(), digitalWrite() и т.д. А вот Arduino IDE может работать и с именами регистров и с ардуиновскими функциями. Хорошие уроки лет 10-15 нащад были у Дмитрия Осипова по этой теме, но с человеком что-то случилось в психическом плане и он ушел в религию
приветствую. чувствую канал будет полезным
Со средой ардуино понятно. С тиньками не совсем просто из за ограниченного функционала. Сейчас новая серия AVR128DA48 типа мощная
На дизассемблирование надо ещё сделать ролик
18:00 а этот код как будет выглядеть в кодевизарде? для меня это код ардуиновский трудно понятен по сравнению с кодевизардам. сможете показать какой будет код в кодевизарде? заранее спасибо.
Что именно вы хотите сделать? Какая задача?
@@dmitrykuznetsov5468 в общем я постоянно использовал для задержки delay. а это очень мешает когда используешь кнопки, я например хочу сделать регулятор частоты, и измеритель частоты, я что то не знаю как правильно сделать. регулятор частоты импульсов для управление шаговым двигателем step. dir, а измеритель частоты он будет измерять частоту и если например частота выше 100гц то выполнить какой то код, или задействовать выход шим чтобы сбавить обороты, и многое другое по этой части приходится собирать но вот с таймером у меня чуть беда.
@@dargindarginec9561
Project : Генератор (ГПИ) 5 - 1400 Гц с шагом 5 Гц, частота пуска 800 Гц
Version :
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 10,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include
#include
float k=0; // прибавочное число к делителю частоты - 0.0125 шаг 5 Гц.
flash unsigned char byte [] = {3, 3, 2, 2};
void main(void)
{
PORTB=0x00;
DDRB=0x02;
PORTC=0x3F;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
while (1)
{
unsigned long a = 800; // необходимая частота (Гц)
unsigned long c = OCR1A ;
unsigned long F_PU = 10005000;
char i=0;
float h;
if (PINC.0==0){delay_ms(100); k+=0.0125; // при нажатии кнопки PС.0 делитель h увеличивается на 0.125
while (PINC.0==0){}
}
if (PINC.1==0){delay_ms(100); k-=0.0125; // при нажатии кнопки PС.1 делитель h уменьшается на 0.125
while (PINC.1==0){}
}
h=2+k;
if(h=3.5) // если данные h больше этих значений, то
{
k=0; // значения делителя h будут равны 2
}
c = (F_PU / a / h);
for (i = 0; i < 4; i++)
{
// если частота ниже 76 Гц, то выполняется данная команда
if (c > 65536) {
d
Сколько же лентяев ардуиншиков в мире.
Лень - двигатель прогресса)