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

Быстро и просто. Разработка бюджетного неизолированного источника питания на контроллере VIPer122

С помощью VIPer122 можно создавать как изолированные, так и неизолированные сетевые источники питания. Разберем самый простой и бюджетный вариант – разработку неизолированного понижающего источника питания с выходным током в несколько сотен миллиампер без трудоемких расчетов трансформаторов и компонентов обвязки.

Подробнее

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

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

atmega8.jpg


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

Share this post


Link to post
Share on other sites

Пополнение линейки ViperPlus от STMicroelectronics

Компания ST обновила семейство ШИМ-регуляторов со встроенным ключом ViperPlus, выпустив новые бюджетные микросхемы VIPER122 и VIPER222, и микросхемы VIPER265K и VIPER267K, имеющие встроенный ключ MOSFET напряжением 1050 В. С их помощью возможно реализовать топологии: изолированный и неизолированный обратноходовой преобразователь (flyback), понижающий преобразователь (buck), повышающе-понижающий преобразователь (buck-boost).

Подробнее

LED-драйверы LCM - бюджетное решение для умного дома!

Для более простого и бюджетного решения по организации управляемого освещения в здании с имеющейся системой KNX компания Mean Well предлагает готовые к использованию LED-драйверы семейства LCM/KN, управляемые по протоколу KNX. По своим техническим возможностям эти изделия похожи на драйверы из популярного семейства LCM/(DA).

Подробнее

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

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

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

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


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

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...

  • Сообщения

    • Неверно мыслишь! Внимательно пойми эти два пункта: Схема имеет всего ДВА вывода. Эти два вывода подключается в разрыв нагрузки. И не важно, какой "полярностью", ведь напряжение - переменное. От перемены мест слагаемых сумма не меняется. ОЧЕНЬ ВАЖНО НЕ ПУТАТЬ A1 с A2! Напряжение подаётся на вывод G (вывод 3), относительно вывода A1 (вывод 1)! А на печатке у тебя напряжение подаётся между A2 (вывод 2) и G (вывод 3). А надо подавать управляющий сигнал между A1 и G. Иначе работать не будет. Ещё раз - между выводами 1 и 3 должен быть резистор!
    • Опять поднимаю тему насчет ремонта данного блока....не ругайтесь сильно))) Этот блок был мной отремонтирован в мае.  Был выбит силовой транзистор Q01, и половина обвязки вокруг него сгорела. Причиной этого стал остановившийся вентилятор, от перегрева все это произошло. Блок этот заработал, вентилятор закрутился, я напряжения на выходе померил и радостный успокоился. Сейчас прикупил галогенные лампы и .....решил дать этому блоку нагрузочку ватт так на 150. При включении с нагрузкой от вентилятора начинает идти постоянный свист из блока и напряжения на выходе скачат -+ 0,03 вольт. Когда подцепляю лампу галогенную 50 Ватт на 12v шину, напруга на 12v начинает скакать от 1,5 до 12 вольт.... Прожал аккуратно карандашем все дроссели на выходе, все керам конденсаторы (103, 104, там еще зеленые есть пленочные), трансформаторы все,  при нажатии нигде "тональность" не меняется. Свист идет по ощущениям из района транса дежурки, траса Т2, оптопары...хотя могу и ошибаться. У кого какие есть мысли куда копать??? Сразу скажу, осциллографа нет у меня.  
    • Оптом от тонны? Или от вагона? В розницу в прошлом году по 340 (сейчас по 320 берут) сдавал и то спикулянт причитал что дорого и пытался придраться что бы скинуть за сор (за стеклянную изоляцию в любом случае скинут) + на массе полюбому на2, 7...т. По факту как на базаре: "прошу хххх, одаю за уууу".  Где? 
    • У меня открылось...
    • Для таких мощностей радиатор должен быть солидный. Например, в такой лампочке используется стеклянная колба, своего рода радиатор. Есть такая же лампочка, но колба из пластика - она перегревается. А если у тебя при такой мощности такой радиатор:   Лампочка перегреется за пару минут (свыше 150 градусов нагреется) и светодиоды опять деградировать продолжат. НЕТ смысла в таких лампочках, они сразу перегреваются. Такая лампочка через час начинает светить в два-три раза слабей из-за перегрева. Все светодиоды работают в одинаковых условиях. А значит, ресурс КАЖДОГО светодиода ИСЧЕРПАН на 99%. НЕТ никакого смысла менять 100% сдохший светодиод, так как остальные уже сдохли на 99%. Это нужно понимать. Поработает день и сгорит ещё один... пока все не перегорят. Единственное, можно продлить срок службы - уменьшить ток в драйвере, убрав (увеличив сопротивление) один резистор в токоизмерительном шунте. А не проще просто на номинал шунта посмотреть в драйвере??? Много кристаллов, соединённых последовательно, не должно вызывать сложностей в понимании данного вопроса:    В народе "Энергосберегающая люминесцентная лампа" не является "Светодиодной" 
    • Либо вставь сюда фото или снесу тему! По ссылке
    • Ну, а если лежит несколько лампочек с парой сгоревших светодиодов, почему бы и нет Ещё сколько-то времени послужат ))
  • Similar Content

    • By Alan247
      Представляю на ваш суд:    https://thisismyhobby.ru/AVR_PAL_W.php   Ваше мнение?
       

    • 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 пока полностю не отключится)
      Вопрос к гуру. Возможно ли что-то доработать в даном модуле чтобы исправить этот досадный баг?
×
×
  • Create New...