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

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


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

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

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

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

этот бред описан в даташите:

" ADIF is cleared by writing a logical one to the flag"

Мудрость приходит вместе с импотенцией...

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

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

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

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

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

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

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

8 часов назад, NIKE сказал:

Долго не мог понять, что этот ADIF нужно сбрасывать именно 1, а не 0.

А все потому, что кто-то надоумил вас использовать ADIF в качестве индикатора окончания преобразования, хотя ADSC для этой цели гораздо удобнее: он установлен в 1, пока идет преобразование и падает в 0 сам, когда оно завершено.

8 часов назад, NIKE сказал:

Кто знает почему именно так происходит сброс, почему не нулём, а еденицей ?

Потому что внутренний триггер в ядре МК реагирует на лог.1

8 часов назад, NIKE сказал:

Я так понимаю это все флаги прерывания нужно так сбрасывать

Все флаги запроса прерываний (вообще все, не только АЦП) сбрасываются точно так же - записью 1. http://arv.radioliga.com/content/view/189/49/

 

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

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

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

17 часов назад, NIKE сказал:

1. Кто знает почему именно так происходит сброс, почему не нулём, а еденицей ?

потому что так внутренняя схема реализации флагов становится проще - грубо говоря меньше транзисторов надо чтобы схематехнически реализовать флаг.

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

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

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

Есть устройство с портами ISP толерантными только к 3,3 в и другое - с 5 в. Верно ли, что протокол двунаправленный и резисторами тут не поможешь?  Есть ли случай организации обмена только "в одну сторону" по ISP? 

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

Как это резисторами не поможешь? Если вы соединяете по SPI устройства 5В <-----> 3В, то вам резисторы помогут: 5-вольтовые Мк в большинстве своем воспринимают лог.1 от 3,3-вольтовых МК корректно, и согласования не требуется. А вот те сигналы, что "выходят" из 5-вольтового надо просто поделить делителем напряжения 1,8К-3,2К ну или примерно в такой пропорции, и всех делов.

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

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

Спасибо. Скажите, какие из сигналов MOSI MISO SCK идут от мастера ( у меня это будет 5 вольтовое устройство), а какие из них - обратно?. RESET -я догадаюсь сам. SCK - 'это синхро, потом есть данные ... и что- нигде нет обратной связи на подтверждение передачи??

И еще: предлагают только 1 ком последовательно включать. Если не очень ответственно - то можно?

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

3 часа назад, dim3740 сказал:

предлагают только 1 ком последовательно включать

Вам жалко еще одного резистора? 

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

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

1 час назад, snn_krs сказал:

MOSI - мастер выход слэйв вход

MISO - мастер вход слэйв выход

SCK - всегда от мастера выход

Подтверждения приема нет.

Где выход Мастера - снижаю. Где вход - буду расчитывать что 3.3. прочитается Мастером. 

Один резистор - это просто разрезка дорожки, а землю найти поблизости не просто для SMD. Поставлю навесной. 

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

Привет всем вот пробую из книги  вот этот текст программы программы :

/* 
Программа переключаемого светодиода 
антидребезг с использованием внешней библиотеки 
*/ 
♦include <Button.h> 
// Определение констант: 
const int buttonPin =2; // номер контакта кнопки 
const int ledPin =8; // номер контакта светодиода 
const int DelayTime =20; // Задержка антидребезга 
// Создание объекта «кнопка» 
Button buttonl (buttonPin, DelayTime); 
void setup () { 
// Инициализация контактов модуля 
pinMode(ledPin, OUTPUT); // конт. светодиода 
pinMode(buttonPin, INPUT_PULLUP); // конт. кнопки 
digitalWrite(ledPin, HIGH); 
void loop () { 
// Вызов метода ожидания стабильного состояния кнопки 
buttonl.scanState(); 
if ( buttonl.flagClick == true ) { 
buttonl.flagClick = false; // сброс признака клика 
// Переключение светодиода: 
digitalWrite(ledPin, !digitalRead(ledPin)); }

Не могу понять почему arduino IDE  ругается  на  ошибки 

эту библиотеку " Для примера возьмем библиотеку, которая называется 
«Button», автор Калинин Эдуард. Скачать библиотеку 
можно на сайте «Мир книг по электронике» (book.mirmk.ru).  указанную в книге не могу  найти  :(

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

У меня есть мысль , и я её думаю ...  

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

@dim3740 ,  выход 5В логики подключить ко входу 3.3В логики просто через резистор, без резистора на общий, можно - в этом случае излишек напряжения лог."1" упадет на резисторе, т.к. откроется диод "вход -> плюсовая шина", т.е. ситуация штатная. Однако, если у выхода 5В логики уровень логического "0" по каким-либо причинам окажется завышенным, он может быть принятым за "1" входного 3В логического элемента, т.к. уровень "0" для него ниже, чем для 5В логического элемента. Т.е. помехоустойчивость снижается.

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

void AMP0_read(void)
{
	while (AMP0CSR & (1 << AMP0EN)) continue;//ждем оканчания измерения
	ADMUX&=0xF0;//обязательно обнуляем канал
	ADMUX|= ((1<<MUX0)|(1<<MUX1)|(1<<MUX3));//задаем канал стр248 табл21-4
	ADMUX&=~(1<<MUX2);
	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;
}

Warning        'return' with a value, in function returning void    
не пойму в чем дело, в другом проекте на это не ругалось

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

Ну потому что ты написал

return amper;

а функцию обьявил как

void AMP0_read(void)

ну ясен пень что будет warning. Компилятор же не может без зарезервированного регистра вернуть результат.

Ты хоть читай что пишут то

Цитата

 'return' with a value, in function returning void

и еще вопрос - нафига ты глобальную переменную тащишь в процедуру, а потом ее еще и вернуть пытаешься? Бред какой то пишешь...

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

21 час назад, mail_robot сказал:

ну ясен пень что будет warning. Компилятор же не может без зарезервированного регистра вернуть результат.

ну конечно же! как так получилось сам не пойму.

 

21 час назад, mail_robot сказал:

и еще вопрос - нафига ты глобальную переменную тащишь в процедуру, а потом ее еще и вернуть пытаешься? Бред какой то пишешь...

а как надо и почему так нельзя

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

забей. тебе можно. лишь бы работало. Это фрики всякие пусть яйца программе вылизывают

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

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

а как надо и почему так нельзя

Глобальные переменные можно таскать куда угодно. Более того, процедуры (функции не возвращающие значения) как раз и обрабатывают (модифицируют) глобальные переменные, ибо им ничего другого и не остается.

Другое дело, что не стоит плодить глобальные переменные без нужды.

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

戦う前に相手のベルトの色に注目

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

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

Поясню

Если процедура объявлена как void(void), но она должна оперировать только тем что сама создала. Такое вообще редкость, поэтому практически не используется. Если процедура меняет глобалку, то она должна принять аргумент в виде указателя на нее, чтобы при чтении кода было понятно, что она оперирует этими данными изменяя их. Если не изменяет, то глобалка передается в нее напрямую. Тогда ее значение не изменится никак, так как будет преобразовано в локальную переменную. Второй способ корректно изменить глобалку - возврат значения, но он более грубый и менее гибкий чем указатель и возвраты лучше использовать типизированными константами. Есть конечно еще нюансы, но это лучше почитать в литературе, а то лекция получится.

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

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

50 минут назад, mail_robot сказал:

Если процедура объявлена как void(void), но она должна оперировать только тем что сама создала. Такое вообще редкость, поэтому практически не используется.

дадада... :crazy:  Вот только обработчики прерываний ничего об этом не знают...

Мало того, об этом ничего не знают функции инициализации периферии...

ЗЫ. К слову и в догон. Функция оперирующая только тем, что сама создала, будет выброшена из кода при оптимизации. Ибо  не нужна.

 

 

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

戦う前に相手のベルトの色に注目

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

1 час назад, mail_robot сказал:

. Асмописателям конечно по барабану, у них все глобальное

Прежде чем что либо писать об АСМе и писателях на нем, стоит сначала этот самый АСМ хоть немного изучить.

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

1 час назад, mail_robot сказал:

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

Во первых, передача указателя на глобальную переменную - это тоже работа с ней. Во вторых,  назначение функции может быть узкозаточенным и специфическим, что делает бессмысленным передачу указателя. Например, функция смесителя в SDR приемнике с единственным каналом сигнала. А кроме того, любые действия с указателями создают дополнительный код. В том числе и там, где нужна предельная скорость. Смеситель в SDR из этой оперы, к слову.

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

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

戦う前に相手のベルトの色に注目

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

господа, не могу запустить пошаговую отладку. custom prog tool я так понимаю нужно сменить на AVR simulator но его нет для выбора. чего делать то.

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

20 часов назад, mail_robot сказал:

Если процедура объявлена как void(void), но она должна оперировать только тем что сама создала.

Вам правильно ответили выше:

"если процедура объявлена как void(void), -И- она оперир-УЕТ только тем что сама создала." она не нужна - то есть ее можно выкинуть, что компилятор с оптимизацией скорее всего и сделает!

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

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

custom prog tool я так понимаю нужно сменить на AVR simulator

Сдается мне ты что то не то ищешь, симулятор - это про отладку программы запущенной на  компьютере (без твоей платы с процессором, для которого она предназначена), а ПРОГ ТУЛ это что то про програмирование реального железа (насколько я понимаю) - это совсем разные вещи, я вообще не помню что бы я когда либо использовал пошаговую отладку в реальном железе для АВР-ов, хотя в симуляторе - сколько угодно!

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

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


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

Про устройство:
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

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

3 часа назад, vezoqfry сказал:

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

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

А если не в одно - то соберитесь все вдесятером и посовещайтесь для начала!

3 часа назад, vezoqfry сказал:

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

Может это вопрос начинающего Стива Джобса или Билла Гейтса? По крайней мере очень похоже :) !

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

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

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

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

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

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

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

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

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

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

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

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

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