Jump to content

Recommended Posts

52 минуты назад, Deicide сказал:

Вопрос состоит в следующем: как перейти из значения регистра OCR1A  к частоте сигнала?

очень просто... частота функция обратная периоду   Fpin=Fosc/(2*DIV*(ORC1A+1))

Share this post


Link to post
Share on other sites

ARV приветствую, шаг не предусмотрел,  максимальная частота 100кГц. Чем ниже значение регистра OCR, тем лучше. Перестройка устраивает, вопрос по программной части, а именно не понимание, как выводить частоту на жк, а не посчитанное по формуле значение OCR. Да и в коде ошибка где функция wave_adj(), конечно же temp, а не freq увеличивается/уменьшается.
  

111.png

Share this post


Link to post
Share on other sites

Вебинар "Разбор новых уникальных модулей FMAC и CORDIC в микроконтроллерах общего назначения STM32G4" (15.07.2020)

Компания КОМПЭЛ приглашает вас принять участие в вебинаре 15.07.2020, посвященном новому семейству микроконтроллеров общего назначения – STM32G4. Вебинар рассчитан на технических специалистов и тех, кто знаком с основами цифровой обработки сигналов. Мы разберем алгоритм работы CORDIC, а также рассмотрим пример создания цифрового фильтра на базе FMAC.

Зарегистрироваться на вебинар

2 часа назад, Андрей Протаскин сказал:

как выглядит микросхема микроконтроллера Atmega8 изнутри?

atmega8.jpg


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
                     

Новые контроллеры VIPerPLUS для ИП – видео и материалы вебинара STMicroelectronics

Видеозапись и материалы вебинара ST о семействе AC/DC регуляторов VIPerPLUS производства компании STMicroelectronics. Инженерами ST было детально рассмотрено новое семейство микросхем VIPerPLUS со встроенным транзистором, их возможности и топологии применения. Продемонстрировано испытание из лаборатории ST в Праге и моделирование в среде E-DesignSuite.

Подробнее

                     

Конденсаторы ECWFG от Panasonic: теперь и для высоковольтных применений

Компания Panasonic анонсировала существенное расширение серии пленочных конденсаторов ECWFG: на сегодняшний день диапазон рабочих напряжений серии составляет 630…1100 В (DC). Серия ECWFG поддерживает уникальную функцию микропредохранителей.

Подробнее

Только что, Андрей Протаскин сказал:

там химические вещества

Больше того скажу: там всякие атомы, электроны и кристаллы... ужос, короче.

Вы не пробовали книги читать? Все ведь описано...


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
03.05.2020 в 14:46, Vit@lik сказал:

В вольтметра цифра после запятой время от времени то увеличивается то уменьшается на единичку. То есть например
1.21 _1.20 _1.21_1.22_1.21...
Пробовал делать 5-10 измерений а потом искать среднее арифметическое
значительной разницы не заметил

напряжение гуляет. Либо то что на входе, либо опорное. Чтобы цифры быстро не мелькали среднее арифметическое к отдельной выборке применять бесполезно - нужно применять алгоритм "скользящего окна" при котором среднее считается на каждую выборку для N последних измеренных значений. Для этого нужно завести буффер где будут хранится эти N последних выборок... памяти в контроллере мало, но можете экспериментировать со значением N. Рекомендую кратное степени двойки - 8, 16, 32.... потом результат суммы делить проще будет. 

2 часа назад, Андрей Протаскин сказал:

@ARV так получается в микроконтроллере Atmega8 там химические вещества, да ещё несколько пластин?!

Если учесть что весь мир состоит из химии то это заурядное дело. Кремний там, частично легированный другими веществами, образуя полупроводниковые переходы. И потом это все соединено алюминиевыми шинами в многослойном исполнении. Причем полупроводники могут находится тоько в одном слое, а "этажерку" проводов можно довольно много слоёв сделать, это ограничение связано с технологией изготовления. Правда, последние 5 лет уже начали делать многослойные кристаллы - у современной FLASH-памяти может быть  до 32 активных слоёв полупроводниковых матриц. Таким образом, на одном "чипе" уже помещается 256Гб ячеек...Но изготовление их  довольно сложно и связано срядом физических ограничений, поэтому применение нашло сейчас только при производстве FLASH-памяти.


Учение - изучение правил. Опыт - изучение исключений.

Share this post


Link to post
Share on other sites

нужна ссылка или таблица всех библиотечных функций, переменных и тд. в с++. сам толкового не нашел, чтоб с кратким описанием было

Share this post


Link to post
Share on other sites

Мда...


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Здравствуйте! Я просто спросить, почему программу для микронтроллеров надо писать с точностью до символов, и скелет программы, конфигурацию, и функции надо писать на английском языке, а не на русском, и в конце программы ставится точка с запятой? 

Share this post


Link to post
Share on other sites

Потому что единственный распространённый русский язык программирования - 1С)

Share this post


Link to post
Share on other sites
51 минуту назад, Андрей Протаскин сказал:

и в конце программы ставится точка с запятой? 

Не ставится.

51 минуту назад, Андрей Протаскин сказал:

Я просто спросить, почему...

Почему в русском языке предложение начинается с заглавной буквы, а завершается точкой или иным знаком препинания? Потому, что таковы ПРАВИЛА этого языка.

В языке программирования тоже есть правила, и это есть ответ на ваши вопросы.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

работал с программой все было норм. очередной раз захожу и 100500 ошибок выдает. 

не знаете в чем может быть причина?

error list.jpg

Share this post


Link to post
Share on other sites

@Дмитрий Вас , а вы посмотрели, что по каждой ошибке на самом деле в тексте программы (номер line)? Может при открытом редакторе кот по клавиатуре прошёл? :)

Share this post


Link to post
Share on other sites
12 hours ago, Дмитрий Вас said:

не знаете в чем может быть причина?

Конечно, знаем. Причин может быть всего 2.

1. Это полтергейст, вызванный блудливостью электронов в нанометрических структурах чипов Вашего ПК. :)  Вывод: надо бросить это ненадежное занятие навсегда, как безнадежное.

2. В настройки  и/или текст проекта внесены изменения, которые вызвали указанные Вами сообщения.  Вывод: надо прочесть сообщения и устранить указанные в них причины/ошибки.

Share this post


Link to post
Share on other sites

Чтобы понять, в чем именно ошибка, надо открыть соответствующий файл и найти указанную сроку.

multiple definition of означает, что функция или переменная определена в нескольких местах. В частности, tab_sin у вас оказалось в 4х файлах: encoder.c, lcd.c, main.c и PWM.c

Вангую, вы зафигачили этот массив (это же массив?) в заголовок, который приинклюдили ко всем этим файлам. Так делать нельзя! В заголовочном файле должны быть только ОПИСАНИЯ функций и переменых, но никак не их ОПРЕДЕЛЕНИЯ и/или РЕАЛИЗАЦИЯ!

 


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
1 минуту назад, ARV сказал:

В заголовочном файле должны быть только ОПИСАНИЯ функций и переменых, но никак не их ОПРЕДЕЛЕНИЯ и/или РЕАЛИЗАЦИЯ!

а куда правильней его положить? да проблема оказалась именно в этом

в PWM.h положу

ага не катит в хедер, только в си файл. ошибку понял пошел читать книжки

Share this post


Link to post
Share on other sites
void PSC0_sin_gen (void)
{
	
	for (unsigned int A=0;A<=161;A++)
	{
	PCNF0 |=(1<<PLOCK0); 
	//PCNF0 =(1<<PLOCK0)|(1<<PMODE01)|(0<<PMODE00)|(1<<PCLKSEL0)|(1<<POP0);//разрешается перезапись 
	OCR0RA = tab_sin[A];
	OCR0SA = 50;
	OCR0RB = 0;
	OCR0SB = 0;
	PCNF0 &= (0<<PLOCK0);
	//PCNF0 =(0<<PLOCK0)|(1<<PMODE01)|(0<<PMODE00)|(1<<PCLKSEL0)|(1<<POP0);//перезаписано
	if (A==161) A=0; 
	}
}

почему то эта часть кода не работает, проверьте орфографию

Share this post


Link to post
Share on other sites

естественно не работает, вы вечный цикл сделали.

Share this post


Link to post
Share on other sites

 

27.05.2020 в 21:37, Дмитрий Вас сказал:

пошел читать книжки

Делайте это, плиз, до того как задаёте вопросы на форуме <_<
Иначе на вопросы, типа :

Цитата

почему то эта часть кода не работает

Будете получать в ответ : "А почему она должна работать ?".

Share this post


Link to post
Share on other sites
11 часов назад, Дмитрий Вас сказал:

PCNF0 &= (0<<PLOCK0);

Нет ли тут ошибки? &= обычно в битовых операциях используется с инвертированным значением битовой маски... т.е. так: PCNF0 &= ~(0<<PLOCK0);


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

@Alex согласен но как знать чего ты не знаешь

@ARV я хотел из этой строчки сделать

PCNF0 =(1<<PLOCK0)|(1<<PMODE01)|(0<<PMODE00)|(1<<PCLKSEL0)|(1<<POP0);

сделать вот эту

PCNF0 =(0<<PLOCK0)|(1<<PMODE01)|(0<<PMODE00)|(1<<PCLKSEL0)|(1<<POP0);

через побитовое И 

PCNF0 &= (0<<PLOCK0);

вот тут я мог и накосячить кстати

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

  • Similar Content

    • By Rad TV
      Скетч простой и кислий. Сделан автором RadTV канал:https://www.youtube.com/channel/UC1k5elIKErFnmwTzIsRgQrA?view_as=subscriber
      Буду рад рокомендациях и помощи!Сделал сам проект должен бить простим и  что би влезло в ATtini85!
      Есть защита акб и просто парения (!!!Кнопка на розмикания!!!)
      Обновления будут!!!!
       
       
      RadMOD ver1.0.txt
    • By Стас73
      Доброй ночи, уважаемые.
      Прошу Вашего совета по следующей куче проблем для меня, т.к. не соображаю в электронике, схемах, резисторах и подобному, но дружу с компом и есть желание сделать определенный механизм, но пока нет наставления на путь истинный от специалистов)
      Задача состоит в следующем - хочу мотор стеклоочистителя подключить к Ардуино, но управлять им необходимо с кнопки. Шилд, например, который обрабатывает сигнал нажатия на кнопку (допустим кнопка записи), при ее активации, нажимаю на другую кнопку, которая дает команду движку вращаться по часовой стрелке. Отпускают ее, моторчик останавливается. Другая кнопка, вращение в противоположную сторону. Т.е. записал последовательность и продолжительность вращений,  нажимаю вновь на кнопку запись и мои действия сохраняются. Далее на 4 кнопку жму и моя игра с моторчиком автоматически воспроизводится. Если такое выполнимо с помощью плат и шилдов без доп программирования логики, то буду ОЧЕНЬ  признателен если расскажете как вкратце это осуществить или кинете ссылки к примеру на Али с нужными товарами. Если легковыполнимо, то в будущем наверное уже разберусь,  как обойтись без нажатия на 4 кнопку (воспроизведения записанных действий) и запускать этот процесс, подключив датчик движения или звука.
      Если необходимо описывать логику или создавать типа какого-то протокола, что шилд (?) умел понимать, что я от него хочу, то подскажите среду разработки для неба, что б там по минимуму было наворотов) В принципе с основами c++ для Ардуино скорее всего придется ознакомиться. 
      Заранее спасибо!
    • By Ilya Gray
      Доброго времени суток!
      В целом, имеется опыт разработки малых устройств, что-то понимаю, в общем, старательно читаю даташиты, даже понимаю их, но на звание серьёзного инженера (пока что) не претендую.
      Я пытаюсь использовать I2C на 8-битном PIC16F18326. Сижу в даташитах. Всё понимаю, всё делаю, на мой неопытный взгляд, правильно. Даже копирую полностью рабочие примеры (я даже купил такой же микроконтроллер, как в примере, скопировал код, контролируя, что он делает. Но всё равно не работает - SCL/SDA на 5в и всё тут).
      Так вот: PIC16F18326 on breadboard (прошу прощения, я хз как это по-русски) на внутреннем 32мгц кристалле. Чип пашет, без проблем моргаю LEDкой. Ну, думаю, щас быстренько подниму I2C. В итоге SCL SDA сидят на 5в без движения. Я использую LED для отладки. Судя по LED, код заloopливается в месте, где проверяется while PIR1bits.SSP1IF==0. Я уже везде был, кучу форумов перерыл. Уже попробовал всё, что мог представить. Я довольно новый в мире PIC, хотел попробовать их, а они ужасно сопротивляются. Уже 2 недели долблюсь безуспешно.
      Подтяжки 10к, проблем с ними никогда не было.
      Собственно, вот код (я уже там попробовал повыключать ADC, вычитал про баг, что сначала I2C пины надо делать OUTPUT LOW, а потом уже INPUT из-за бага MSSP, но ничего не помогло).
      // PIC16F18326 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FEXTOSC = OFF // FEXTOSC External Oscillator mode Selection bits (Oscillator not enabled) #pragma config RSTOSC = HFINT32 // Power-up default value for COSC bits (HFINTOSC with 2x PLL (32MHz)) #pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; I/O or oscillator function on OSC2) #pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed) #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled) // CONFIG2 #pragma config MCLRE = ON // Master Clear Enable bit (MCLR/VPP pin function is MCLR; Weak pull-up enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config WDTE = OFF // Watchdog Timer Enable bits (WDT disabled; SWDTEN is ignored) #pragma config LPBOREN = OFF // Low-power BOR enable bit (ULPBOR disabled) #pragma config BOREN = ON // Brown-out Reset Enable bits (Brown-out Reset enabled, SBOREN bit ignored) #pragma config BORV = LOW // Brown-out Reset Voltage selection bit (Brown-out voltage (Vbor) set to 2.45V) #pragma config PPS1WAY = ON // PPSLOCK bit One-Way Set Enable bit (The PPSLOCK bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle) #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a Reset) #pragma config DEBUG = OFF // Debugger enable bit (Background debugger disabled) // CONFIG3 #pragma config WRT = OFF // User NVM self-write protection bits (Write protection off) #pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE configuration bit is ignored.) // CONFIG4 #pragma config CP = OFF // User NVM Program Memory Code Protection bit (User NVM code protection disabled) #pragma config CPD = OFF // Data NVM Memory Code Protection bit (Data NVM code protection disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #include <htc.h> #include <stdio.h> #include <stdint.h> #define _XTAL_FREQ 32000000 void i2c_is_idle(void){ //while(!PIR1bits.SSP1IF); //while(SSPCON2bits.SEN==1 || SSPCON2bits.RSEN==1 || SSPCON2bits.PEN==1 || SSPCON2bits.RCEN==1 || SSPCON2bits.ACKEN==1 || SSPSTATbits.R_nW==1){}; while(PIR1bits.SSP1IF == 0){ PORTCbits.RC2=1; }; // SSP1IF is set when operation complete PORTCbits.RC2=0; PIR1bits.SSP1IF = 0; // clear interrupt flag } void i2c_start(void){ i2c_is_idle(); SSPCON2bits.SEN = 1; } void i2c_rep_start(void){ i2c_is_idle(); SSPCON2bits.RSEN = 1; } void i2c_stop(void){ i2c_is_idle(); SSPCON2bits.PEN = 1; } void i2c_write(uint8_t i2c_data){ i2c_is_idle(); SSPBUF = i2c_data; while(SSPSTATbits.BF != 0); while(SSPCON2bits.ACKSTAT != 0); } uint8_t i2c_read(uint8_t ack){ uint8_t recieve =0; i2c_is_idle(); SSPCON2bits.RCEN = 1; while(SSPSTATbits.BF != 1); recieve = SSPBUF; SSPCON2bits.ACKEN = ack; return recieve; } void i2c_init(void){ TRISCbits.TRISC0 = 1; TRISCbits.TRISC1 = 1; SSPSTATbits.SMP = 1; SSPSTATbits.CKE = 0; SSPCONbits.SSPM = 0x08; SSPADD = 79; SSPCONbits.SSPEN = 1; } void main(void) { ANSELCbits.ANSC0 = 0; //ADC RC0 OFF ANSELCbits.ANSC1 = 0; //ADC RC1 OFF TRISCbits.TRISC2=0; //LED PIN TRISCbits.TRISC0=0; //MSSP bug counter TRISCbits.TRISC1=0; //MSSP bug counter //__delay_ms(5); LATCbits.LATC1=0; //MSSP bug counter LATCbits.LATC0=0; //MSSP bug counter //__delay_ms(5); INTCONbits.GIE=1; //global interrupt en INTCONbits.PEIE=1; //peripheral interrupt en ADCON0bits.ADON=0; //unpower adc just in case i2c_init(); //THIS SETS TRISC BITS FOR SCL SDA while(1){ i2c_start(); i2c_write(0x3C); i2c_stop(); } return; } Задача: просто увидеть коммуникацию на SCL SDA, я уже потом по даташитам таргет девайсов без проблем напишу дрова. Не получается именно осуществлять коммуникацию.
      Подскажите, пожалуйста, я не понимаю, где я дурак, а между тем волос на голове становится всё меньше, а те, что остались, стремительно приобретают серый окрас, ибо 2 недели я долбаюсь с одной проблемой. Благодарю за ваши советы. Спасибо.
       
    • By MirVsem
      Добрый день.
      Есть интересные модули ибп для слаботочки до 1А.
      m.aliexpress.ru/item/4000109380893.html
       По цене идеально подходит для зоопарка роутеров, IoT устройств... Переключение на резерв (туда-обратно) без просадки. Зарядка литиевой банки как положено, всякие защиты от перегрузки и прочее. Казалось бы все замечательно. 
      НО как всегда не без ложки дёгтя.
       Защита от переразрядки работает неадекватно. Хотя возможно это не сама защита, а повышающий модуль. На пороге ~3в у него срабатывает циклический перезапуск и так пока банка не просядет ниже 3в. Точно померять нечем.
      Из наблюдений. Проверил напряжение переключается с 12в на 9в и щелчки. Естественно нагрузка в это время дико насилуется (роутер свистит минут 5 пока полностю не отключится)
      Вопрос к гуру. Возможно ли что-то доработать в даном модуле чтобы исправить этот досадный баг?
    • By Юлия Михайлова
      Требуються люди умеющие работать с микроконтролерами esp 32 и stm32 , так же будет плюсом опыт работы с raspberry , требования опыт работы не мение 1,5 года , возраст не старше 35 лет , готовы взять на удаленную работу просьба отправлять резюме , и звонить по номеру +380 (68) 227 82 52
×
×
  • Create New...