Урок 27. EEPROM настройки | Часть 1 | Программирование микроконтроллеров AVR
ฝัง
- เผยแพร่เมื่อ 12 มิ.ย. 2019
- Рассмотрены настройки EEPROM микроконтроллеров AVR. EEPROM - это энергонезависимая память микроконтроллера, которая по принципу действия аналогична flash памяти (как у обычной флешки), что означает данные будут сохраняться даже при отсутствии питания. Наиболее наглядный пример EEPROM памяти - это настройка радиостанции магнитолы. После соответствующих настроек нужной радиостанции при отключении питания, а затем его включении магнитола снова будет воспроизводит запомненную станцию. Для настройки EEPROM памяти микроконтроллеров AVR применяются всего три регистра: регистр адреса EEAR, регистр данных EEDR и регистр контроля EECR. В первой части видео подробно рассмотрены принцип организации энергонезависимой памяти EEPROM и настройки соответствующих регистров.
Ссылки на покупку полезных элементов, необходимых для успешного изучения программирования микроконтроллеров AVR.
Сначала рекомендую получить ВЫСОКУЮ СКИДКУ НА ВСЕ ПОКУПКИ: ali.pub/3mulxb
Микроконтроллеры ATmega8: ali.pub/3muk7a
Программатор AVRASP: ali.pub/3mtqa2
Программатор AVRASP в хорошем корпусе: ali.pub/3mtqxz
Программатор STK500: ali.pub/3mtril
Программатор TOP3100, который программирует ВСЕ: ali.pub/3mtsgt
Макетная плата: ali.pub/3mtvcu
Удобная макетная плата: ali.pub/3mtvyt
Серьезная макетная плата: ali.pub/3mtx4m
Гибкие перемычки для макетной платы: ali.pub/3mtxj0
Перемычки в пенале 14 видов 140 штук: ali.pub/3mtxtw
Набор резисторов 600 штук, 30 номиналов по 20 штук: ali.pub/3muaey
Набор светодиодов разных цветов 300 штук: ali.pub/3mubp1
Набор транзисторов: ali.pub/3muc1h
Семисегментные индикаторы: ali.pub/3muisx
Тактовые кнопки: ali.pub/3muj92
#EEPROM #НастройкаEEPROM #AVR #ATmega8
Программирование микроконтроллеров. Полный курс для начинающих: diodov.net/programmirovanie-mikrokontrollerov-avr/
Электроника для начинающих. Мощный курс. diodov.net/elektronika-dlya-nachinayushhih/
Очень дорого как для студента. А что будет с контентом на канале?
Будет продолжение.
@@user-li4xh9fi6w Будет ли просто видеокурс? Достаточно интересно, Смотрю просто для саморазвития, но купить готов.
Удачи тебе и в деле и в бизнесе
Дима, какой ты молодец. Я пытался изучать данные темы самостоятельно, по книгам, но увы - мозгов не хватает. Ещё лет 20 назад. Но всё бесполезно. Сейчас хоть что-то стал понимать. Спасибо тебе, продолжай в том же духе.
Компилируем-не дышим-ошибок нет. Какое это счастье!
Продолжай снимать, не бросай этот канал. Спасибо!
Спасибо, как всегда все четко, и наконец то UART и даташиты, спасибо вам большое, я на ваших видосиках много чему научился, вот добрались и до EEPROM.
Лекциите са на изключително високо, професионално ниво. Изложението е ясно, кратко, точно ! Подходът е академичен! Благодаря!
Доступно и понятно, спасибо тебе друг !
Ждём с нетерпением продолжение.
Шикарные видео. Спасибо!!!
Это прям чудо какое то!! спасибо за ваш труд!
Молодец..... Спасибо добрый чоловек дай бог тебе здоровья...
Познавательно, но очень нужна вторая часть))
Наконец-то новое видео! Ура!
Супер канал, все саое нужно ничего лишнего!
Спасибо тебе за уроки
Ну наконец, новое видео.
Молодчага !
Так держать !!!
Не забрасывайте канал, пожалуйста.
просто афигенно объясняешь,
Спасибо за Ваши видео!
Насчёт красоты кода.
PORTB=z; EEPROM_write(0x00,z); повторяются и в if и в else, можно просто один раз написать после if и esle PORTB=z; EEPROM_write(0x00,z); так как в при любом исходе условия производится передача данных в порт и запись в память (переменная z, порты и адреса и в if и в else одинаковые)
Точно также с zz;
После if и else? Это куда? В while(1)? А сколько раз можно в eepom записать? 100к? При частоте 8MHz сколько раз за минуту произойдёт запись. Вы хотите eepom мк убить.
@@splinterkab9007 Почему в while? В первом if останется (после проверки нажатия кнопки). Мы проверили, что кнопка нажата, дальше сравнили z
@@Old_GaM ок понятно. Сразу не дошло куда запись в память предложено вынести. Сонный был. Он действительно в своих видео усложняет иногда. Где можно проще и за один раз, ставит дополнительный if. Хотя для начинающих думаю самое то.
Ну наконец то
Был приятно удивлен, увидев что в Протелусе тоже сохраняются данные в EEPROM.
Спасибо за уроки. Хочу подметить возврат нуля это как раз таки возврат чего то.
вауу.. маладец очень полезно
Когда примерно ожидать вторую часть ? Очень бы хотелось посмотреть, а то у меня не работает что то нечего:(
Ура ура ураааа
Добрый день! А вы не планируете случайно сделать уроки по ATmega ARM - ATSAM...? Было бы очень здорово!
Здорова, Дмитрий. Сделай видос как управлять микроконтроллером с пульта ДУ инфракрасного . Один видос всего про программирование ещё
Супер
Спасибо за канал. Не забрасывайте его пожалуйста.
Скажите, чем будет отличаться учебный курс от этого канала?
На сайте есть программа и описание курса.
Хорошим делом занимаетесь, несете знания в массы, спасибо. Но прошу, учите писать нормально... Колдовали с EEPROM чтобы запомнить значения, но по факту после нажатия кнопки они сбрасываются в 0, потому что считанное из памяти надо не в порты писать, а в переменные. Весь блок "if (z 10) z=0;", второй строкой запись значения в EEPROM, всё.
тоже непонятен двойной вызов WRITE.
Переписал код по вашему методу. Заработало, но не без сложностей.
"Я пошёл другим путем" в сторону программирования контроллеров. Начал в возрасте 54 лет с самого примитивного устройства : программируемого реле ПР200 компании "ОВЕН автоматика". И ничуть не пожалел. Получилась система "от простого - к сложному". Это реле позволяет программировать на самом простом уровне - на уровне функциональных блоков в среде "ОВЕН ЛОГИК", которая легко быстро и бесплатно скачивается с сайта производителя. Именно такой контроллер я рекомендую начинающим ("чайникам"). Программируемое реле можно не покупать, так как в программе имеется симулятор , который проверяет правильность написания программы. Понятие входа-выхода, цифрового, аналогового сигнала, счетчиков, реле времени, генераторов сигналов, переменных четырех видов, сетевых переменных и прочее - все это легко понять любому "хорошисту" восьмикласснику.
+ бесплатное быстрое обновление программы, + аксессуары.... Само программируемое реле стоит почти 6 000 руб. Зато там есть программируемый дисплей, куда можно выводить информацию, кнопочки управления, и прочие удовольствия начинающего программиста.
От этой простой программы я легко перешел в СoDeSys V2.3 СoDeSys V3.5. и получил настоящее удовольствие в программировании настоящих контроллеров компании "ОВЕН Автоматика". Вся документация русифицирована, есть отличная тех поддержка.
Мой совет - начинайте с оборудования" ОВЕН Автоматика!"
Добрый день. Где можно найти информацию о Ваших видеокурсах. С уважением к Вам Александер
Буду Ждать данные Курсы) Тем более в Большом количестве Имеются Atmega 128
Вот не понимаю откуда у людей берутся просто так всякие микросхемы?
Хотелось бы урок по управлению атресными rgb светодиодами. Пример такой, линейка допустим 10 светодиодов в середине 4 горят красным. При нажатии 1-ой кнопки остальные загораются красным. При нажатии 2-ой кнопки 4 которые горели красным начинают бегущей строкой гореть синим.
Добрый день, не знаю где вам написать, поэтому решил тут.
Для того, чтобы прошить к примеру микроконтроллер xmos, для получения прошивки нужно иметь спец лицензию или может любой скачать ?
В ЦАПе вышел из строя стабилизатор, с которого шло питание на микроконтроллер xmos, стабилизатор заменили, питание заходит 1v, 3.3v с другого стабилизатора, устройство не обнаруживается по usb, остальные входы прекрасно работают.
Вам доверяю, так бы лучше вам послал бы микроконтроллер для платной прошивки, если это возможно.
Подскажите как подобрать аналог eeprom? У меня стоит на ЭБУ at25080nc на сколько я понимаю 080 это 80кб памяти, соответственно могу ли я впаять на 160кб или ещё больше?
Цена вспугнула за курс,больше 11 тысяч .Конечно,хочется некоторые вещи узнать,такие как протоколы данных ..Что ж.Быть может в записи кусками будете продавать
24:57 Записывать данные с каждым изменением числа, учитывая ограничение записей в EEPROM = 100000 - нерационально.
Думаю стоит делать отдельную кнопку для сохранения данных.
И считывать данные только при запуске, а не каждый цикл while (1) 27:09
я бы ставил раз в секунду запись) а а чтение - только при старте, нафиг столько раз делать запись..
И считывать в переменную а не сразу в порт, а переменную записывать в порт. Сейчас при загрузке логика не корректна. Да состояние светодиодов восстановлено, но переменные то остались в 0.
.
12:54 Разве дребезг происходит не во время нажатия???
.
А что за долесекундеое потухание при повторном вкл записанных в память?
А какие первоначальные данные будут считываться из EEPROM при первой итерации бесконечного цикла while, если мы первый раз запускаем код?
Мусор который там есть.
16:59 начало и "// Записываем данные в резистр данных" " // Устанавливаем флаг EEMWE, отвеающий "
Если можно,то раскажите доступно ,как работает схема мультиварки рэдмон на сенсорном управлении. Что происходит в схеме от прикосания пальца и т.д.
Бешельме кешельме шайтана-ма!
я не очень понял по стокам оплаты. Написано оплатившим до 31 июня стоимость курсов составит 180$. В июне вроде 30 дней...
Philip Morris он с нулевого бита считает
@@dimdimiych5718 ахаха это профессиональное искажение :D
настроил таймер счетчик на срабатывание по переполнению а не по совпадению. как раз 31 июня переполниться и после 30 перейдет на 1-е июля. единственное логичное объяснение на мой взгляд.
Philip Morris он не предусмотрел watchdog timer , в лице нас. Который сработал при ошибке. Но уроки смотреть приятно. Хорошо объясняет
Я бы сказал что это на данный момент лучший ютуб канал по программированию МК AVR. У автора талант преподносить инфу понятно.
Программу я понял. Но есть проблема. В протеусе после запуска сразу загораются все светодиоды и перестает реагировать на кнопки. Подозреваю что проблема связана с симуляцией.
Siz pcf2100ct proqramlaya bilərsiniz? İnanmıram bacara bilmərsiniz.
Я уже подумал, что ты забросил канал)
А он и забросил. Новых видео давно нет.
зачем цифры хранить в char ? зачем в цикле каждый раз перечитывать из eeprom? до цикла это сделать нельзя?
Unsigned char 0..255. Зачем больше. На порту больше не получить. Всего 8 бит. Считать из памяти можно и до цикла. И хорошо что он запись в цикл не вставил.
А вот обнуление z и zz он зря делал. Больше 255 не будет. Проще говоря обнуляется само.
Забыл добавить что число больше 8 бит должно записаться в несколько ячеек.
а кто говорит про больше? для цыфр есть свой тип данных, его и надо применять. Из памяти не можно считать до цикла, а нужно, иначе это быдлокодинг, на что я собственно и намекнул.
@@user-pu7qj6ve1x а в видео разве не до цикла считывает. Может я смотрел невнимательно. Если так то это лишнее. А для переменных я обычно использую тот тип, который минимально необходим и меньше места занимает. Зачем мне unsigned long если число не больше 100 например.
чтобы сравнивать символы, нужно их сначала преобразовать к порядковому номеру, поэтому эта операция более затратная, чем сравнение чисел. И при чем здесь long? Используй числовой тип данных с необходимой длинной, например byte или word
P.S. на 27:40 посмотри - считывание внутри цикла
Кстати, да. Вполне можно использовать и uint8_t. (восьмибитное беззнаковое целое)
На мой взгляд, чтение из еепром в бесконечном цикле излишне. Получается, мы записываем z, zz, и тут же их считываем. Зачем? Ведь данные уже есть в переменных. Я бы сделал чтение один раз при инициализации переменных, там, где им присваивается ноль. Инициализировать z и zz сохраненными в еепром числами и вывести их в соответствующие порты. В цикле только записывать.
Правда, при самом первом запуске проги в переменные считается "мусор", но это тоже легко решаемый вопрос.
А как при первом запуске программы не читать из EEPROM мусор? Ведь контроллер же не "понимает" первый доя него запуск или уже было сохранение данных в память.
@@ValeraDXM Блин, год прошел. Я уже и не помню, о чем речь, надо смотреть..
спасибо за видео очень познавательно я сделал все что било на видео и у меня видает ошибку (
Error expected declaration specifiers or '...' before numeric constant eeprom
Error expected declaration specifiers or '...' before 'z' eeprom
не понимаю в чем дело
когда закоментирую функции void EEPROM_write(0x01, zz); и void EEPROM_write(0x00, z);
тогда компилируется (
#define F_CPU 1000000L
#include
#include
unsigned char z=0 , zz=0;
void EEPROM_write(unsigned int address, unsigned char data) //запис даних в еепром
{
while(EECR & (1
Это внутренний EEPROM/
Ребята не пойму - в даташит написано uiAddress и uiData, а в реальной программе address и data. Я пробовал и так и так - есть разница. Объяснений не нашел. В чем же дело?
У меня Attiny2313 - заработало без ui.
@@Artur-sparf да у меня тоже, но почему в даташит написано с ui? вот что интересно. может устаревший даташит?
@@user-xz9dz3zm8e Не могу по этому поводу что-то сказать, поскольку сам недавно с МК занимаюсь, стараюсь запоминать алгоритмы записей, которые работают.
@@user-xz9dz3zm8e Мне еще и такое попадалось: void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
while(EECR & (1
Кстати, а не может это быть аббревиатурой от unsegned int (ui) и unsigned char (uc)?
Плохо то что на этом канале изучение микроконтроллеров закончилось .Спасибо,но печально.Хоть бы изредка что то продолжали.
А что за флаг?
пожалуйста моргайте иногда) вас как будто в заложниках держат))
Юморист)
Чей флаг за спиной?
Похоже, что это флаг Республики Крым
Со времен Киевской Руси эти цвета имели сакральный смысл. Такой флаг был у нас в государстве. Теперь, надеюсь, этот флаг снова вернется в наше государство.
@@TheAerotrike нифига... у нас синяя узкая, белая широкая, красная узкая... Это непонятно чей... Села Большой Яблунец ,только пропорции другие... ну, или Сварога-Перуна-Даждьбога)))
это флаг смелянской СШ №1
www.nasha-persha.org.ua/symbolics
@@1654045 понятно.
Хер поймешь на компьютере что ты делаешь и так далее , четкого объяснение нет