Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

12.02.2020 в 13:40, ruhi сказал:

симулятор - это про отладку программы запущенной на  компьютере (без твоей платы с процессором, для которого она предназначена)

это и нужно, но на то чтоб сделать пошаговую отладку вот что пишет. не знаю что это значит много не знакомых букав

ошибка.jpg

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

4 часа назад, Дмитрий Вас сказал:

не знаю что это значит много не знакомых букав

он пишет что ты ему суешь пустую команду. Но меня смущает что ты вызываешь какой то "programming tool" который судя по названию предназначен для программирования, а тебе нужна отладка, то есть что то про DEBUG.

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

привет, подскажите, что я упустил?

нужен диммер который вкл/выкл каждые 12 часов.

есть датчик нуля, на 814 и "драйвер" симистора на МОС-ьке. железо рабочее. только ардуинка Про Мини, странно себя ведет.такое впечатление что тактовая частота сильно занижена но не уверен. как проверить?

начал писать код димера.

логика простая. ловим импульс на  INT0 и в прерывании запускаем таймер2. в прерывании таймера считаем задержку до импульса и  длительность  самого импульса. выключаем таймер и запрещаем его прерывание после окончания отпирающего симистор импульса. 

ардуина 5вольт 16МГц.

осцилограф показывает ширину импульса на 13 ноге равной 4 миллисекунды, а не 20 микросекунд как ожидалось..

подключена лампочка накала 60вт через симистор и латр. так вот, если на латре накрутить больше 170 вольт, лампочка почему-то тухнет. если меньше, то светится. если увеличить значение dimmingLVL, лампочка начинает моргать при любом напряжении. частота выдачи импульсов на симистор вроде как уплывает. оно должно "не работать", а не моргать если задержка включения будет больше 10мс  верно?

у меня уже закончились идеи. пробовал и так и эдак. что тут может быть не так? может не знаю еще чего..


volatile unsigned int timer2count;
volatile unsigned int dimmingLVL = 2; //1 == 0.00001c 1000==10ms
volatile unsigned int pulseToTriac = 2; //1 == 0.00001c длительность импульса на УЭ симистора
//volatile unsigned int value;

void setup() {

  //enable global interrupt
  sei();

  pinMode(2, INPUT);
  pinMode(13, OUTPUT);
  attachInterrupt(0, zerroDetect, RISING);

  //********TIMER2 Configuration**********
  //activate CTC mode
  bitSet(TCCR2A, WGM01);                   //TCCR2A |= (1 << WGM01);

  //set value to compare register
  OCR2A = 0xA0;                   //160

}

/////////////////////////////////////////////////////////////
void loop() {

}

//////////////////////////////////////////////////////////////////
void zerroDetect() {
  //reset register value
  TCNT2 = 0b00000000;
  //enable compare match interrupt on TIMER2
  bitSet(TIMSK2, OCIE2A);
  //prescaller configuration. start timer.
  TCCR2B |= (1 << CS20);//no presc
  //bitSet(TCCR2B,CS20);
  //bitSet(TCCR2B,CS21);

}
/////////////////////////////////////////////////////////////////
//TIMER2 CTC interrupt handller
ISR (TIMER2_COMPA_vect)
{
  timer2count++;

  if (timer2count == dimmingLVL) { //подаем импульс на симистор

    //start pulse
    digitalWrite (13, HIGH);
    return;
  }

  if (timer2count == dimmingLVL + pulseToTriac) {

    //end of pulse
    digitalWrite (13, LOW);

    //disable TC2
    bitClear(TCCR2B, CS20); //set no clock sorce mode

    //disable compare match interrupt on TIMER2
    bitClear(TIMSK2, OCIE2A);

    //bitClear(TCCR2B,CS20);
    //bitClear(TCCR2B,CS21);


    timer2count = 0;

    return;
  }
  return;

}

если в dimmingLVL записать 4 то лампочка не горит, хотя на ноге 13 есть меандр периодом 10мс и импульсом 4мс.

Изменено пользователем Sahenus
Ссылка на комментарий
Поделиться на другие сайты

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Добрый день,

Хочу собрать устройство, которое будет принимать команды с ИК пульта и переключать реле. Хотелось бы, чтобы по умолчанию устроийство находилось в режиме глубокого сна, просыпалось по прерыванию, читало код кнопки пульта, переключало реле и уходило в сон после приема кода кнопки пульта ДУ и ее обработки.

Как лучше зациклить внутри основного while(1) прием кода кнопки и ее обработку ? на примере схемы

INT (....) //обработка таймера для декодирования ИК протокола

{

}

main()

Init(); //Инициализация

while(1)

{

 

sleep(); // уход в режим сна

// прием кода кнопки и обработка

while(конец приема || ошибка)

{

    // точка выхода из прерывания

}

}

Заранее спасибо

 

 

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

4 минуты назад, Dupont сказал:

устроийство находилось в режиме глубокого сна

Не всякие микроконтроллеры из глубокого сна выходят достаточно быстро, чтобы не прозевать некоторое количество импульсов пульта. Поэтому надо к этому вопросу подходить более серьёзно: или сон не самый глубокий, или МК специальный, или пульт с длительным стартовым импульсом в коде.

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

Ссылка на комментарий
Поделиться на другие сайты

5 minutes ago, ARV said:

....или пульт с длительным стартовым импульсом в коде.

Пульт планируется с протоколом NEC. Там первые два импульса между 11.5мс и 13,5мс. Я надеюсь что этого хватит, чтобы выйти из режима сна

Изменено пользователем Dupont
Ссылка на комментарий
Поделиться на другие сайты

1 hour ago, Дмитрий Вас said:

а не лучше будить его кнопкой ВКЛ

Не совсем понял. Смысл устройства в управлении дистанционно. Сейчас и так все кнопками делается без контроллера

Ссылка на комментарий
Поделиться на другие сайты

12.02.2020 в 16:03, vezoqfry сказал:


Здравствуйте, помогите, пожалуйста, со схемой.

Про устройство:
1. большую часть времени будет находится в глубоком сне.
2. должно просыпаться при нажатии любой из двух центральных кнопок.
3. должно уметь принять со смартфона данные через jack 3.5, обработать внутри эти данные, и отдать их на смартфон через jack 3.5. на смартфоне предполагается приложение, которое будет осуществлять приемопередачу данных через jack 3.5, используя audio api.
4. работает от батарейки cr2032.
5. должно при поступлении данных отобразить на OLED некую информацию.

Требования к MCU:
1. возможность реализации argon2id (функция формирования ключа).
2. возможность реализации ассиметричного шифрования на основе эллиптических кривых.
3. низкое энергопотребление в глубоком сне (отключается всё, кроме backup регистров).
4. количество байт, которые можно сохранить в backup регистры - от 16 байт. Чем больше, тем лучше.
5. не дороже 100 р.
6. должен выдерживать просадку батарейки. предполагается длительный срок использования.

Вопросы:
1. какой подойдёт MCU?
2. при такой схеме подключения TRRS возможен ли двусторонний обмен данными со смартфоном? Что нужно, чтобы был возможен?
3. как сделать чтобы контроллер можно было перепрошивать через UART?
4. можно ли запитать OLED от цифрового пина? Какое будет напряжение на пине, если батарейка будет истощаться? если нельзя, как сделать чтобы на OLED подавалось питание только при поступлении данных по RX?
5. как сделать чтобы контроллер просыпался при нажатии любой из двух центральных кнопок?
6. реально ли извне вытащить данные из backup регистров?
 

Schematic_tttt_Sheet_small_1.png

Прочитал несколько раз, про подход человека к такому объему работ, если честно тут несколько человек точно надо, в одного даже имея опыт по всем разным темам тоже долго делать придеться! обкатка потом проэкта еще сколько займет хз. 

Ссылка на комментарий
Поделиться на другие сайты

господа кто нибудь использовал усилитель в микроконтроллере? что я делаю не так?

#include "amplifier.h"
void AMP_init (void)
{
	AMP0CSR |= (1<<AMP0EN); //включаем усилитель
    AMP0CSR&=~ (1<<AMP0IS)| //выключен шунт
		       (1<<AMP0G1)|(1<<AMP0G0)| //коэф. усиления стр257 табл.21-8
		       (1<<AMP0TS1)|(1<<AMP0TS0); //Auto synchronization on ADC Clock/8 стр257 табл.21-9
    ADMUX&=~(1<<ADLAR);                   // правое выравнивание результата АЦП
}
//задаем канал и получаем значение
unsigned int AMP0_read(unsigned char chanel)
{
	while (ADCSRA & (1 << ADSC)) continue;//ждем оканчания измерения
	ADMUX&=0xF0;//обязательно обнуляем канал
	ADMUX|= chanel&0x0F;//задаем канал стр248 табл21-4
	ADCSRA |= (1<<ADSC);//запуск преобразования
	//стр 249 21.8.3 описание bit4, для запуска преобразования в микроконтроллерах с приставкой
	// "В", необходимо установить бит ADCS в регистре ADCSRA (но в нем есть только бит ADSC)
	static unsigned int ADC_value;//переменная суммы измерений
	static unsigned char count;//переменная суммы количества измерений
	ADC_value+=ADC;//складываем ADCW 64раза
	if (count==64)//если прошло 64 измерения
	{
		amper=(ADC_value*100L)>>16;
		count=0;
		ADC_value=0;
	}
	else
	{
		count++;
	}
	return amper;
}

контроллер at90pwm3b

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, Дмитрий Вас сказал:

что я делаю не так?

ты не пытаешься сопоставлять предпологаемый результат с полученным результатом! Ты должен определиться что ты хочешь получить и сравнить с тем что у тебя реально получилось - об этом нет ни слова!

Изменено пользователем ruhi

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, ruhi сказал:

об этом нет ни слова!

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

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, Дмитрий Вас сказал:

не понимаю о чем вы говорите

А чего тут не понятного? Вы привел кусок кода и спрашиваете "Что не так?". А ответ на этот вопрос может быть только после того, когда вы сообщите нам, что для вас "так".

Например, эта функция должна возвращать 125 при подаче на такие-то пины такого-то напряжения, а на самом деле возвращает 256. А если я подаю вот такое напряжение, то вместо 256 она возвращает 612. Тогда становится понятно, что вы хотите, и тогда можно думать над тем, что не так...

При работе с АЦП немалую роль играет схема. Усилитель в большинстве AVR работает только для дифференциального режима АЦП - ваша схема это учитывает?

Правильно заданный вопрос содержит 50% ответа. Если ответа вы не получаете - вы задали вопрос не правильно.

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

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, ARV сказал:

Правильно заданный вопрос содержит 50% ответа

25-лет назад я слышал мнение, от старших товарищей, что, это содержание,часто доходит до 95% :) !

Изменено пользователем ruhi

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
14.02.2020 в 11:18, Дмитрий Вас сказал:

это и нужно, но на то чтоб сделать пошаговую отладку вот что пишет. не знаю что это значит много не знакомых букав

ошибка.jpg

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

 

12.02.2020 в 14:03, vezoqfry сказал:

Требования к MCU:
1. возможность реализации argon2id (функция формирования ключа).
2. возможность реализации ассиметричного шифрования на основе эллиптических кривых.
3. низкое энергопотребление в глубоком сне (отключается всё, кроме backup регистров).
4. количество байт, которые можно сохранить в backup регистры - от 16 байт. Чем больше, тем лучше.
5. не дороже 100 р.
6. должен выдерживать просадку батарейки. предполагается длительный срок использования.

На этапе разработки проекта про это надо ПОЛНОСТЬЮ ЗАБЫТЬ. Прямо про все пункты. Иначе похороните ваш проект прямо на старте, особенно 5-й пункт всегда стаёт костью в горле при малом тираже изделий. НЕ БЫВАЕТ дешёвых прототипов! Лучше взять железо с избыточностью раз в 100 если вы ничего не знаете о конертных алгоритмах, реализациях и прочее - как только пойдут первые реализации нужных алгоритмов, только тогда можно будет оценить их ресурсоёмкость и начинать подбирать камушек. Но выбрав изначально тесный камень, вы сразу столкнётесь с трудностями и проблемами, вместо того чтобы сосредоточится на общей проработке алгоритмов.

Остальные ваши пункты это детали реализации, и должны прорабатываться в последнюю очередь.

12.02.2020 в 14:03, vezoqfry сказал:

3. как сделать чтобы контроллер можно было перепрошивать через UART?
4. можно ли запитать OLED от цифрового пина? Какое будет напряжение на пине, если батарейка будет истощаться? если нельзя, как сделать чтобы на OLED подавалось питание только при поступлении данных по RX?
5. как сделать чтобы контроллер просыпался при нажатии любой из двух центральных кнопок?

Как быть с питанием? Ну одновибратор же... а нагружать цифровые пины индикатором нельзя - на некоторых камушках это может привести к выходу их из строя, и как минимум ограничит их быстродействие. Поэтому... проще коммутировать питание индикатора полевиком по сигналу с одного из пинов, а уже программно решать когда его включать а когда выключать.

На строки клавиатуры подать лог.1 в виде подтяжек, столбцы притянуть к земле, а контроллер настроить на пробуждение по лог.1 на пинах столбцов, или если это будет невозможно(чтобы эта функция работала, на многих контроллерах необходимо наличие тактирования ядра и как минимум тактирование периферии, что противоречит необходимости глубогого сна) то диодами свести эти выводы к входу аппаратного прерывания, которое разбудит контроллер из любого состояния, а после пробуждения это прерывание отключить(чтобы не мешало) вплоть до перехода в сон.

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

Ссылка на комментарий
Поделиться на другие сайты

On 2/12/2020 at 7:03 PM, vezoqfry said:

Здравствуйте, помогите, пожалуйста, со схемой.

Про устройство:

...
Требования к MCU:

...
Вопросы:

...

И это вопрос в разделе  "Вопросы От Начинающих По Мк" ? :lol2:

Офигеть, какие начинающие пошли...

Ссылка на комментарий
Поделиться на другие сайты

Знаю таких. Бейсджамперы :D

On 2/12/2020 at 7:03 PM, vezoqfry said:

помогите, пожалуйста, со схемой.

@vezoqfry ,  у вас практически уже все готово, и ТЗ, и схема. Вам можно начинать делать устройство. :) МК возьмите "с запасом", экзотические ресурсы его по возможности не используйте. Обкатаете прототип, и станет понятно, где можно "ужаться" по ресурсам и стоимости.

Хотя... Не буду вдаваться в подробности, но то, что вы написали в своем "ТЗ"  демонстрирует со всей очевидностью, что вы вообще не в теме.  Может, сразу в раздел "Работа"?

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

доброго всем дня. я забросил учить программирование и вот появилось время вновь взялся. проблема следующая. я хочу управлять скоростью с помощью энкодера. в энкодер отправляю через указатель 

ykazatel= &speed;

затем 

case 128:
			{
				if (next_state == 192) (*ykazatel)++;
				if (next_state == 0) (*ykazatel)--;
				break;
			}
			case 0:
			{
				if (next_state == 128) (*ykazatel)++;
				if (next_state == 64) (*ykazatel)--;
				break;
			}

что то вроде этого. а в теле основной исполнительной

while (1)
	{	
		OCR0SA=OCR0SB=OCR1SA=OCR1SB=OCR2SA=OCR2SB=50;//dead-time
		speed=200;
		OCR0RA=OCR0RB=OCR1RA=OCR1RB=OCR2RA=OCR2RB=speed;//ширина импульса

но выходит что speed теперь постоянный. мне бы хотелось чтобы  speed была на среднем значении скажем  200 а потом энкодером или увеличил или уменьшил. как это правильно написать

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

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

const unsigned char tab_sin[121]=
//__flash unsigned char tab_sin[121]=

{
0,2,5,7,10,12,15,17,20,22,
25,27,29,32,34,37,39,41,43,46,
48,50,52,54,56,58,60,62,64,66,
68,70,72,74,75,77,79,80,82,83,
85,86,87,89,90,91,93,94,95,96,
97,98,99,100,101,101,102,103,104,104,
105,105,106,106,107,107,108,108,108,109,
109,109,109,109,110,110,110,110,110,110,
110,110,110,110,110,110,110,110,109,109,
109,109,109,109,109,109,108,108,108,108,
108,108,107,107,107,107,107,107,107,106,
106,106,106,106,106,106,106,106,106,106,
106
};

вот только не могу понять что к чему. есть данные такие

OCR0SA dead-time верхнего ключа

OCR0RA on-time верхнего ключа

OCR0SB, OCR0RB соответственно нижнего ключа

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте! Скажите мне пожалуйста, почему когда я написал вот такой код для микроконтроллера вот такой микросхемы в Proteus  код написал как у вас и светодиоды не загораются, почему так?

CFile1.c avr.pdsprj

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...