реклама на сайте
подробности

 
 
> Программирование С8051F341, запись в память
Aloc
сообщение Nov 29 2011, 19:59
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 29-11-11
Из: Санкт-Петербург
Пользователь №: 68 585



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

Идея, вообще, в следующем при первом включении оценивается средний уровень в 4-х каналах АЦП МК отключается, при последующем включении используются полученные значения.

Сообщение отредактировал Aloc - Nov 29 2011, 20:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
barabek
сообщение Nov 29 2011, 22:33
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Aloc @ Nov 30 2011, 05:59) *
Здравствуйте, помогите, пожалуйста, начинающему. В общем необходимо сохранить четыре двухбайтовые переменные, так, чтобы при выключении МК через регистр управления питанием, при новом включении по RST их можно было вернуть.

Идея, вообще, в следующем при первом включении оценивается средний уровень в 4-х каналах АЦП МК отключается, при последующем включении используются полученные значения.


Не совсем понял задачу. В Вашей постановке я вижу 2 варианта. Вариант 1. Опрос АЦП и запоминание производится только 1 раз после прошивания МК. В этом случае используем флэш. Работа с ней описана в документации на МК в соответствующем разделе "flash Memory". Будут вопросы после прочтения - обращайтесь сюда. Вариант 2. Вам при каждом включении питания нужно производить опрос, затем софтверный сброс и работа с новыми данными. В этом случае флэш насиловать не стоит. Дальнейшие действия зависят от компилятора. У меня была похожая задача - определять количество софтверных сбросов и после определенного числа вешать контроллер. У меня Keil/ Делал так. В xdata завожу переменную. В подстегиваемом файле startup.a51 по умолчанию
Код
XDATALEN    EQU    0H
Т.е. область xdata не обнуляется после сброса. Далее все просто. После сброса по питанию обнуляю переменную, после софтверного сброса инкрементирую. Причину сброса можно определить по регистру сброса RSTSRC.

UPD. Сейчас более внимательно вчитался в вопрос. Есть проблема. Хотите повторные сбросы производить ножкой RST. В этом случае нужно обеспечить при включении, чтобы нога сброса поднималась к 1 быстрее tPORDelay (<0.3ms из докуметации). Либо использовать другой сброс, например по копаратору.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016