Jump to content

Recommended Posts

6 часов назад, Гость Жека сказал:

НО в момент подачи питания на микроконтроллер, и именно в момент, когда эти пины устанавливаются на выход, на них проскакивает короткий импульс напряжения. Что это значит и как это победить?

Если это переходный процесс при запуске МК, то вряд ли что-то простое можно посоветовать. Для начала покажите схему реального устройства, где этот всплеск проявляется, а там посмотрим, как быть.


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

Share this post


Link to post
Share on other sites

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


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

Share this post


Link to post
Share on other sites

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

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

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

                     

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

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

Подробнее

@ARV //Atmega8A

              #define F_CPU 8000000

              #include <avr/io.h>

              #include "n1510.h"

 

              void presets(){

                     Lcd_init;

                     Lcd_clear;

                     

 

               }

int main()

{

     presets();

     while(1)

      {

              Lcd_prints(0, 3, FONT_1X,(unsigned char *)PSTR("Hellow"));

              Lcd_prints(0, 4, FONT_1X,(unsigned char *)PSTR(Привет!"));

      }

}

}

Share this post


Link to post
Share on other sites
                     

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

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

Подробнее

Во-первых, код вставляют при помощи кнопочки <> , чтобы он выглядел по-людски.

Во-вторых, n1510.h тоже надо прикладывать.

Но мне кажется, вы снова не стали изучать, а надеетесь взять барьер наскоком. Вот что-то PSTR в функции  Lcd_prints меня настораживает...

В который раз так же повторяю: никогда не вставляйте #define F_CPU 8000000 в исходник! Добавляйте соответствующую настройку в параметры компилятора или makefile!


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

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

@ARV Во-первых - да, а во-вторых грешно смеяться над больными людьми! Я аутист, у меня проблемы с корой головного мозга, я на домашнем обучении, не люблю большое скопление людей!

@ARV я просто хочу, чтобы вы мне разжевали мне информацию по LCD дисплею

Share this post


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

я просто хочу, чтобы вы мне разжевали мне информацию по LCD дисплею

Я не могу вам ничего разжевать, потому что начинать не знаю откуда. Делать что-то за вас - это не правильно. Делать с вами - другое дело. Но если вы делать не будете, делать с вами не выйдет.

Здесь нет большого скопления людей - здесь только буквы на экране.


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

Share this post


Link to post
Share on other sites

Для начала покажите схему подключения и файлы, о которых я вам писал. Где вы их (схему и файлы) взяли? Я вам писал, что меня насторожило в уже показанном коде - вы что по этому вопросу выяснили? 

При решении проблем надо не головой о стенку биться, а шаг за шагом ставить вопросы и находить на них ответы.

Давайте так: вы не будете игнорировать задаваемые вам вопросы и просьбы, а будете спокойно и обстоятельно на них отвечать.


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

Share this post


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

Вот

Это не то, что я просил.

5 часов назад, ARV сказал:

Во-вторых, n1510.h тоже надо прикладывать.

Дело в том, что код в программе должен соответствовать схеме. Вы проверили - он соответствует?

Если вы не станете отвечать на мои вопросы, как я вас просил, я не стану отвечать вам - зачем мне зря тратить время?

30 минут назад, ARV сказал:

Где вы их (схему и файлы) взяли?

 

31 минуту назад, ARV сказал:

Я вам писал, что меня насторожило в уже показанном коде - вы что по этому вопросу выяснили?

 


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

Share this post


Link to post
Share on other sites
Posted (edited)
#include <avr/io.h>
#include "n5110.h"
#include <avr/pgmspace.h>

int main(void){
	Lcd_init();
	Lcd_clear();
	Lcd_prints(0, 0, FONT_1X, PSTR("Nokia 3310"));
	Lcd_update();
}

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

image.png.98e4511ee801251b8ab8f80028723298.png

Вот такой итог будет:

image.png.5ef2ec4301a6999ad212da0d44611afe.png

К сожалению, больше вам помогать у меня нет возможности.

Edited by ARV

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

Share this post


Link to post
Share on other sites

@ARV  Да! Я понял! Оказывается в видеоуроке про LCD дисплей рассказывается всё неправильно! Там использовалась нестандартная библиотека в Proteus, а надо использовать стандартную, и код написали неправильно! Понаберут непрофессионалов типа меня, и тут хрен поймешь! 

Share this post


Link to post
Share on other sites
Posted (edited)
3 минуты назад, Андрей Протаскин сказал:

Оказывается в видеоуроке про LCD дисплей рассказывается всё неправильно!

За свою жизнь я не посмотрел ни одного видеоурока. Зато прочитал много книжек, учебников, справочников, статей и документации на микросхемы и программы. Этого мне на 100% хватает, чтобы решать все возникающие у меня проблемы.

Никогда никому не советовал то, чем сам не пользуюсь. Поэтому вам советую читать книги (и документацию) и размышлять над прочитанным, а ВИДЕОуроки не смотреть. Пусть это будет медленнее и потребует больше усилий, зато и результат будет налицо.

Edited by ARV

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

Share this post


Link to post
Share on other sites

Здравствуйте. Потребовался генератор прямоугольных импульсов (меандра) с регулировкой частоты в диапазоне от 1Гц до 100кГц (T = 1s...10us) задание частоты и вывод на дисплей 16х2. Регулировка осуществляется кнопками. В общем для этой цели использую режим CTC  (Clear-To-Compare) таймер 1 (16 бит, 65535 тактов) при частоте ядра 8МГц и при двух установочных коэффициентах деления (1:1) и (1:256) можно варьировать в данном диапазоне. Вопрос состоит в следующем: как перейти из значения регистра OCR1A  к частоте сигнала? На данном этапе хотелось бы видеть реальную частоту на жки + как-то переключаться между коэффициентами деления (switch?), функция (set_freq()). В общем прошу помочь программно и отнестись с пониманием. Программирование со скрипом идёт. Код прилагаю. Спасибо.

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <stdio.h>
#include "main.h"							
#include "lcd.h"

#define F_CPU 8000000UL
  
char lcd_buffer[16];	
							
float freq = 1000000;						// max desired freq (Hz)
unsigned int prescaler = 1;					// divider
unsigned int temp;

void tc1_init()
{
	TCCR1A |= (1<<COM1A0) | (1<<COM1B0);	// toggle OC1A on compare match
	TCCR1B |= (1<<WGM12) | (1<<CS10);		// clk/1
	TIMSK |= (1<<TOIE1);					// enable interrupt overflow
	TCNT1 = 0;								// init counter	
}

void io_init()
{
	DDRB = 0x00;							// PB input buttons
	DDRD = 0x20;							// PD5 output gen
}

void set_freq()
{
	temp = (F_CPU/(2*prescaler*freq)-1);
  	OCR1A = temp;
}
  
// 	if (..)
// 	
// 		switch (prescaler)
// 		{
// 			case 1:		TCCR1B |= (1<<WGM12) | (1<<CS10); break;	// 1:1
// 			case 256:	TCCR1B |= (1<<WGM12) | (1<<CS12); break;	// 1:256
// 		}

void wave_adj()								// frequency adjusting
{
	if(~PINB & (1<<0))						// PB0 log 0 increase freq
	{
		freq +=10;
		_delay_ms(250);
	}
  
	if(~PINB & (1<<1))						// PB1 log 0 decrease freq
	{
		freq -=10;
		_delay_ms(250);
	}
}

ISR(TIMER1_OVF_vect)
{
	PORTD ^= (1<<5);						// toggle log level
}

int main(void)
{	
	port_init();
	io_init();
	tc1_init();
	lcd_init();
	lcd_load();
	lcd_clear();
	set_freq();
	sei();								// enable global interrupts
	
	while (1)
	{
		set_pos(0,0);
		string_lcd("SETTING FREQ = ");
		
		set_pos(0,1);
		sprintf(lcd_buffer, "= %u Hz", temp);
		string_lcd(lcd_buffer);
		
		wave_adj();
	}
}








 

Share this post


Link to post
Share on other sites

image.png.6f074745ab02025118907ca2c4bb2091.pngДиапазон-то перекрыть можно, да только вы учли, что шаг изменения частоты будет, мягко говоря, нелинейным?

Вот слева табличка экселя с небольшим расчетом... Устроит вас такая перестройка частоты?


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

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

  • Сообщения

    • Всем спасибо! Буду ставить 10 вт резистор со стабилитроном - самое простое решение.  
    • Falconist Все зависит от ПАДЕНИЯ напряжение на транзисторе.  Uвх-Uнаг = 3В. Я про Фому Вы про Ерему). Виктор Шаракин спрошу конкретнее. Какой будет стоять трансформатор (или какой у вас источник питания), интересно напряжение. Далее какой ток у гальваники и какое напряжение. И если не критична шумность питания, то зачем вам линейный стабилизатор? Намного лучше подойдет импульсное устройство.
    • С точностью до наоборот. При выходном напряжении 3 В на регулирующих транзисторах будет падать более 40 В. А при 30 В - всего вольт 12...15. Операцию умножения на 50 А произведите сами. P.S. Обозначение "Вольты" пишутся БОЛЬШОЙ буквой ("В"). Равно, как и Амперы ("А"). @Виктор Шаракин , так нафига Вам для подобных применений СТАБИЛИЗИРОВАННЫЙ БП нужен? Тупо регулируемый, а лучше вообще два отдельных питателя - один для гальваники и второй - зарядка. Разве что трансформатор может быть один на обе схемы. 
    • Блок питания планируется использовать в основном (70%) это гальваника, остальное (30%) это разное: зарядка мощных (100 амп) аккумов, и т.д.
    • Тему, не содержащую вопроса, лучше сразу создавать в Корзине - это уменьшает объем работы модераторов и обеспечивает тему фиксированной пропиской.
    • 1. какая разница в этом случае есть оптопара или нет? 2. а) поставьте диод, как вы рисовали ранее, перед R1     б) обратная полярность для стабилитрона будет прямой и уйдет через него на землю
  • 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...