Jump to content
Sign in to follow this  
maix

Есть Ли В Atmega16 Не Эноргозависимая Память ?

Recommended Posts

Доброго времени суток уважаемые форумчане!

Делаю кодовый замок на atmega16, впринципе все понятно, но есть один момент.. Хочется сделать этот замок программируемым, что бы по мастер-паролю добавлять и удалять ключи, отсюда вытекает вопрос - есть ли в atmega16 НЕ ЭНЕРГОЗАВИСИМАЯ память, в которую можно из программы записать несколько шестизначных чисел, а так же прочитать их от туда ?

Всем спасибо за внимание.

Share this post


Link to post
Share on other sites

Datasheet, первая страница:

• Nonvolatile Program and Data Memories

– 512 Bytes EEPROM

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

Tesla, благодарю, извините, по неграмотности не знал что такое EEPROM..

А не подскажите пару примеров записи и чтения в эту память на СИ ?

Share this post


Link to post
Share on other sites

Безмостовые ККМ для 99% КПД!

Схема коррекции коэффициента мощности (ККМ) на основе так называемого «тотемного столба» (Totem Pole) обладает минимально возможными потерями и потенциально может обеспечить самые жесткие требования к энергоэффективности источников питания. Компания Wolfspeed представляет референсную разработку – плату ККМ CRD-02AD065N на базе собственных карбид-кремниевых MOSFET и диодов с наилучшими в отрасли характеристиками.

Подробнее

А в даташите это тоже есть

Запись:

void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
   /* Ожидаем завершения предыдущей операции записи */
   while(EECR & (1<<EEWE))
   ;
   /* Устанавливаем значения регистров адреса и данных */
   EEAR = uiAddress;
   EEDR = ucData;
   /* Запускаем процесс записи */
   EECR |= (1<<EEMWE);
   EECR |= (1<<EEWE);
}

Чтение:

unsigned char EEPROM_read(unsigned int uiAddress)
{
   /* Ожидаем завершения предыдущей операции записи */
   while(EECR & (1<<EEWE))
   ;
   /* Устанавливаем значение регистра адреса */
   EEAR = uiAddress;
   /* Запускаем процесс чтения */
   EECR |= (1<<EERE);
   /* Возвращаем считанные данные */
   return EEDR;
}

Share this post


Link to post
Share on other sites

Гибридные IGBT - сила Si и SiC в одном корпусе!

Компания Infineon представила новые гибридные IGBT-транзисторы на 650 В, которые сочетают в себе преимущества технологий TRENCHSTOP и CoolSiC. Использование SiC-диода Шоттки позволяет значительно расширить возможности IGBT и снизить уровень энергии, необходимой для включения транзистора (Eon), а также уменьшить потери на переключение.

Подробнее

Вебинар «Параметры выше, цена ниже. Обновление в линейке AC/DC- и DC/DC-преобразователей MORNSUN» (26.01.2021)

Приглашаем 26 января на бесплатный вебинар, посвящённый преимуществам и отличиям новых источников питания и DC/DC-преобразователей Mornsun. На вебинаре будут рассмотрены изолированные и неизолированные DC/DC-преобразователи последнего, четвертого, поколения (R4) и компактные модульные источники питания второго и третьего поколений (семейства LS/R3 и LD/R2) на плату. Рассмотрим новую группу продукции – встраиваемые источники питания в кожухе.

Подробнее

Flash тоже энергонезависимая. В ней хранится программа, там по-другому нельзя. Хотя без нужды лучше бы ее не перезаписывать из программы.


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

COKPOWEHEU, совсем запутался.. флеш же не энэргозависимый ? 512 байт, это не то место где может хранитиься программа микросхемы, значит EEPROM как я понимаю и создана для хранения ?

Иначе, я вообще все не правильно осмысливаю...

Edited by maix

Share this post


Link to post
Share on other sites

В AVR есть три типа памяти - SRAM, EEPROM и "Flash". Энергонезависимыми являются последние два.

Flash как правило используется только для хранения программы и констант, не изменяющихся в течение жизненного цикла устройства, данные во flash записываются программатором (имеется возможность перезаписи этих данных и самой программой микроконтроллера, но это применяется в основном для обновления прошивки). Atmel заявляет, что ресурс этой памяти более 10,000 перезаписей.

EEPROM используется для хранения время от времени изменяемых данных, например, пользовательских настроек устройства. Ресурс этой памяти уже 100,000 перезаписей.

Share this post


Link to post
Share on other sites

maix, да, неправильно. У ATmega16

– 16 Kbytes of In-System Self-programmable Flash program memory

– 512 Bytes EEPROM

– 1 Kbyte Internal SRAM

, 16 кБайт флеша, память программ. Энергонезависимая иначе как хранить программу в обесточенном устройстве.

512 байт EEPROM тоже энергонезависимая, про нее Tesla расписал.

1 кБайт ОЗУ. Вот это уже энергозависимое, зато перезаписывать можно сколько угодно. Там хранятся переменные и прочая информация, которую не нужно хранить при отключении питания.


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

maix, если используете CVAVR, то там еще проще-

eeprom char primer;
primer=10;

Edited by dm211

Share this post


Link to post
Share on other sites

Как будто в avr-gcc сложнее. Подключить <avr/eeprom.h> и написать eeprom_write_byte().


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

Tesla, COKPOWEHEU, dm211 благодарю, походу разобрался, по крайней мере все компилируется без ошибок =)) Пишу основной код, продумываю как лучше всего сравнивать введенный код с теми которые будут в eeprom..

сначала хотел собирать нажатия кнопок и собирать их в одну переменную типа такого temp = temp + key, но потом подумал что если первое число будет 0 , то получится не например 0378, а просто 378, поэтому решил использовать массивы, собирать из нажатий кнопок один массив и сравнивать его с остальными которые будут в eeprom..

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

char array1 = {1,2,3};

char array2 = {1,2,3};

array1[] == array2[]; так вить ?

и тут попутно следующий возникший вопрос - в php есть многомерные массивы, я ими часто пользуюсь, как многомерный массив создать в СИ ? и возможно ли это ?

Share this post


Link to post
Share on other sites

char [10][10], проблем-то


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. 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...
Sign in to follow this  

  • Сообщения

    • Это всё-таки не техническая наука. Наверное, ближе к формальной, как и математика. Я разговаривал с математиком. Он кроме математики больше ничем не интересуется. Но это было ещё до вброса о лунной афере. Химики тоже нифига ничего не знают ни о космосе, ни о Аполлоне, хотя это естественная наука.  А вот люди инженерных профессий, если даже ничего и  не слышали о лунных фальсификациях, то очень быстро ориентируются в предоставленной информации противоборствующих сторон и разоблачают сторонников лунной аферы. Я для этого прикидывался дилетантом и выкладывал самые распространенные "факты" обмана, с просьбой разобраться и разьяснить положение дел. Как правило, почти никто не вникал в тонкости предоставленной информации от НАСА. Все довольно быстро заостряли своё внимание и замечали фальшивки из длинного списка  "фактов обмана" и после двух - трех разоблаченных фейковых доводов, остальные уже не рассматривали, вынося окончательный вердикт. ))  Среди астрономов вообще нет "немогликов". И нет таких, кто бы не знал о полете Аполлона с высадкой на Луну. Ну это и понятно, почему. Я утверждал именно о вранье, а не о заблуждении.  А какое может быть у наших  специалистов заблуждение по Аполлону??? Это люди, далекие от космонавтики могут в чем то заблуждаться, а у наших академиков и докторов подобные заблуждения исключены. Точно!  Это философское словечко встречается ещё и в математике.   Да какая разница, имела или не имела редакционная коллегия полномочий выступать авторами ?????  Ты хочешь сказать, что в этой книге, отредактированной академиками и докторами, описана конструкция Сатурна,  Аполлона, которые не летали на Луну и ровера, который не бороздил просторов её поверхности??    Остальное, чистой воды демагогия. Это не моё. В книге имеются все ссылки на литературу.
    • Мдя... ИИ не обманешь. Любимый вами Яндекс видимо хорошо вас изучил и выдаёт то, что вам действительно надо. Смиритесь и не дёргайтесь.
    • Питать сетевую ламповую радиолу от батареек - глупость и утопия. Так как аутентичный внешний вид уже похерен  (), то никакой антикварной ценности аппарат не представляет. Поэтому предлагаю следующее: Найти на месте специалиста с руками и головой, который удалит из неё ламповое шасси и внедрит вместо него схему современного тюнера с усилителем, которая потребляет в десятки раз меньше энергии, да и ловит радиостанции куда лучше. Органы управления и переднюю панель при этом сохранить. Заодно и внутри куча места освободится, хоть автомобильный аккумулятор можно будет засунуть.
    • У ТЭНа и материал другой, чем у лампочки, и  дельта температур холодный - горячий тоже сильно отличается (тем более, для "водяного" ТЭНа, он же не добела нагревается в баке). Так что, мизерное изменение сопротивления при нагреве можно вообще никак не учитывать.
    • Она как бы есть, но мнения о схеме неоднозначные. Недавно человек собирал здесь, предложили ещё несколько доработок.
    • Ты даже не представляешь, сколько известных людей за него голосовало и агитировало, которые сейчас готовы забить его чем попало насмерть!  Какие в адрес пуйла были в то время нарекания? Да никаких! То, что он патологический вор, стало позднее. Дальше сам знаешь...
    • Не уверен что правильно понимаю термин "гражданское общество".  Одно понятно точно - сегодняшний день является точкой бифуркации.  И про "гражданское общество" можно будет забыть, чем бы оно не было...

  • Двусторонний теплопроводящий скотч. Ширина 8, 10, 12 или 20мм. Длина намотки 5, 10 или 25м

  • Similar Content

    • By Обычный Человек
      Микроконтроллер ATmega328p, внешний кварц 16МГц. Компилятор avr-gcc с оптимизацией O1

      Написал код для управление шаговым двигателем. Работает так: требуемая скорость задается переменной STP1_ReqSpeed, дальше с частотой 100Гц срабатывает таймер TIM0, который высчитывает с какой частотой надо подавать сигналы на вход шагового драйвера. TIM1 работает в режиме частотно импульсной модуляции и по прерыванию меняет значение пина на противоположное.

      Управление работает, скорость регулируется, но по какой то причине случаются пропуски шагов. Чаще всего во время ускорения. Количество пропусков от 0 до 4, обычно 2-3, длятся 32мс.

      Из кода вырезал неиспользуемое. Заменить прерывания на аппаратный ШИМ возможности нет. Как убрать эти пропуски?
      Осциллограммы:
       
       
    • By Артур Измаилов
      1.Создать схему в которой два светодиоды загораются в следующей последовательности:  1 и 2, 2 и 3, 3 и 4, …, 15 и 16, 1 и 2 и т.д. (т.е. создается эффект движения двух светодиодов).
      Дано условие выше. Решение задачи нужно представить в Proteus. Код для программирования пишу в AtmelStudio 7. Схему собрал в Proteus. Вывел 16 светодиодов через 2 порта (Порт B и Порт D). МК использовал ATMEGA 8 вариации в корпусе DIP с 28 ножками (SPDIL28). 
      До этого смог написать схему, чтобы работали светодиоды в последовательности 1.2.3.4.5....16.1.2.3.4 и тд. Делал через оператор FOR. Однако с этим кодом начались проблемы. Помогите пожалуйста. 
      Нижу представил изображение кода. 
      Заранее спасибо!
       

    • By Lisitsin
      Собираем компьютер ZX Spectrum на микроконтроллерах AVR своими руками!
      Проект открытый, все исходники и информация проекта по ссылке
      https://yadi.sk/d/9S2S0ZmNqsLykQ
      Проект печатной платы выполнен в PCAD-2006, программное обеспечение разработано в AVRStudio  4b401
      Здесь отвечу на все возникающие вопросы и помогу со сборкой и запуском
    • By O5-14
      По поводу этого https://cxem.net/mc/mc220.php девайса. Как напоминалка паролей думал сделать, только в моих краях 1604 нету( Под wg12864 нет случаем модификации ? 
      И что такое значит "Текстовые файлы должны быть в обычном txt формате и без форматирования" - первая часть понятна. А без форматирования ? Одна длинная строка ? Пробелы-то хоть можно ?
    • By Karl-Ieronim
      Коллеги, всем привет. 
      Увидел вот такой проект. 
      Несмотря на явную привлекательность что-то совсем мало повторивших. 
      Может кто-то из завсегдатаев форума делал этот проект? 
      Интересует ваше мнение: хочу повторить, но не силен в программировании, поэтому беспокоюсь на счёт подводных камней с которыми не смогу справиться. 
×
×
  • Create New...