Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 16.07.2015, 15:06  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Помогите советом ATmega8535

Есть 18 переменных. Это цифры семисегментного индикатора. Которые запоминаются в EEPROM атмеги при нажатии кнопки "Программирование."
Прибор имеет 4 таймера. И должен выводить сумму времени 4 таймеров
Отсюда 18 переменных.

ВОПРОС. Можно ли в процессе работы(перед выводом на индикатор) каждый раз их читать с EEPROM.
Или все-таки лучше При включении их раз сосчитал в переменные и дальше они болтаются в ОЗУ. ?

Борюсь за память программ. Если читать их с EEPROM то мне достаточно будет 6 переменных.

Донес ,надеюсь свой вопрос до читающих !
Реклама:
ARTEM277 вне форума  
Непрочитано 16.07.2015, 15:58  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,904
Сказал спасибо: 2,969
Сказали Спасибо 3,156 раз(а) в 2,142 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
ВОПРОС. Можно ли в процессе работы(перед выводом на индикатор) каждый раз их читать с EEPROM.
Или все-таки лучше При включении их раз сосчитал в переменные и дальше они болтаются в ОЗУ. ?
Абсолютно на Ваше усмотрение. ИМХО.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
look22 (27.07.2015)
Непрочитано 16.07.2015, 16:24  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,896
Сказал спасибо: 2,541
Сказали Спасибо 11,816 раз(а) в 5,924 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
Донес ,надеюсь свой вопрос до читающих !
Криво и косо. Но основное можно вычленить. На него уже ответили. Добавлю только, что количество чтений не ограничено, ограничено количество записей в ЕЕПРОМ.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 16.07.2015, 19:04  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
Борюсь за память программ
А что за нее бояться? Она же не зависит от EEPROM

Сообщение от ARTEM277 Посмотреть сообщение
Отсюда 18 переменных
Почему 18?? Мне для суммирования хватало одной.

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

Последний раз редактировалось NewWriter; 16.07.2015 в 19:41.
NewWriter вне форума  
Непрочитано 16.07.2015, 22:01  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от NewWriter Посмотреть сообщение
А что за нее бояться? Она же не зависит от EEPROM


Почему 18?? Мне для суммирования хватало одной.


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

Таймер имеет 4 цикла счета. Т.е в устройстве есть 4 таймера.Работают они
так .... Таймер один отсчитал ,включил лампочку. Таймер два отработал включил еще лампочку. И так до четвертого таймера.Потом гаснут все лампочки и выводится на индикацию сумма всех таймеров.Потом контроллер опять ждет нажатия кнопки пуск(лампочки это пример.).
Все четыре канала таймера могут программироваться по времени не зависимо друг от друга. Нажали кнопку "Программирование" контроллер переходит в режим программирования.Начинает моргать младший сегмент
таймера один. Меняем его (например было 1 ставлю 9) потом так же следующий сегмент.То есть все сегменты(разряды начиная с младшего и до старшего) программируются не зависимо друг от друга.Потом переходим в Таймер 2 и т.д до 4 го таймера.

Вид цифр на индикаторе например 23.54 это значит 23 секунды и 54 миллисекунды.

При программирование новых значений таймеров нужно сделать так что бы они запоминались в EEPROM(Проще говоря устройство не длжно забывать запрогроммированных значений).Ну а раз у нас каждая цифра "индивид" то в епром надо закинуть уже 12 цифр(по 4 цифры на каждый таймер).Запись в епром будет производится конечно через одну переменную.Потом ,сумма таймеров ,если каждый запрограммировать на 99.99 сек, ,будет равна 399.96 сек. Т.е еще пять цифр надо где то хранить. Да получается 17 цифр , простите ошибся.
Когда начинают работать таймеры ,то счет назад отображается пр каждом работающем таймере.
Вот тут то и взбрёл мне этот вопрос в голову. Мож проще перед выводом на индикацию читать значения с епром.Что бы у меня было 17 ячеек свободных.
Если как то можно по другому организовать такой вывод данных на индикатор то подскажите.Буду очень благодарен.Я начинающий программист. Пишу на СИ. Связка AVR Studio+win avr.
ARTEM277 вне форума  
Непрочитано 16.07.2015, 22:07  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от akegor Посмотреть сообщение
Криво и косо. Но основное можно вычленить. На него уже ответили. Добавлю только, что количество чтений не ограничено, ограничено количество записей в ЕЕПРОМ.

Согласен ,что криво и косо.Это и хотелось услышать. В предыдущем устройстве я епром использовал только при включении и выключении устройства. Что,здесь мне не нравится дак это моё количество переменных.Как то много.... или их может быть столько сколько мне надо.Или есть какие то рамки приличия...?
ARTEM277 вне форума  
Непрочитано 16.07.2015, 22:11  
ARTEM277
Временная регистрация
 
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ARTEM277 на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Еще пытаюсь не использовать деление с остатком перед выводом на индикацию.
Долгая операция.И места занимает прилично.
Так можно было бы использовать 5 переменных типа unsigned int.

Жду советов и поправок. Всем спасибо тем кто ответил.
ARTEM277 вне форума  
Непрочитано 16.07.2015, 22:18  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

Сообщение от ARTEM277 Посмотреть сообщение
нужно сделать так что бы они запоминались в EEPROM(Проще говоря устройство не длжно забывать запрогроммированных значений).
А уверены, что нужно? Вот прямо на 100%?
Сообщение от ARTEM277 Посмотреть сообщение
Потом ,сумма таймеров
Если сумма равна сумме, какой смысл повторяться?
omercury вне форума  
Непрочитано 16.07.2015, 23:11  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

ТС бросай работать с десятичной системой исчисления. В цифровой технике принята двоичная.
На кой ляд хранить каждую цифру отдельно. Для каждого таймера достаточно всего два байта для задания значения в двоичной системе. Для суммы кстати тоже.
При программировании к значению для каждого таймера прибавлять/отнимать константу (1, 10, 100, 1000). Вот вам и будет коррекция определенного знакоместа.
В общем, как-то так.

Последний раз редактировалось alvadep; 16.07.2015 в 23:14.
alvadep вне форума  
Непрочитано 17.07.2015, 00:19  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Помогите советом ATmega8535

А что, разве в МК с его 512 байтами ОЗУ, прямо-таки и не хватает места, чтобы не загрузить в эту ОЗУ все цифры напрямую, пусть даже и в двоично-десятичном формате???
И автор не учитывает того, что в EEPROM цифры не меняются, и индикатор будет выводить только то, что хранится в EEPROM, если брать значения оттуда. Изменять же EEPROM при счете таймеров или при вводе новых значений - верный способ в скором времени исчерпать ресурс циклов перезаписи. Да и вообще, запись в EEPROM идет гораздо дольше, чем в ОЗУ.

В двоичной системе гораздо быстрее и проще идет сложение (вычитание), чем в двоично-десятичной.
Перед выводом на индикацию число из двоичной переводится в двоично-десятичную (BCD). А при изменении значений (программировании начальных значений) - наоборот, из двоично-десятичной в двоичную.

Сообщение от ARTEM277 Посмотреть сообщение
Или есть какие то рамки приличия...?
Именно у этого МК эти "рамки" - 512 однобайтных переменных. Хватит для таймеров?


Сообщение от ARTEM277 Посмотреть сообщение
.Работают они
так .... выводится на индикацию сумма всех таймеров.
Для суммы нужна всего лишь одна переменная (двухбайтная, целое число не больше 65536). В нее будут просто суммироваться значения каждого таймера, прочитанные последовательно из EEPROM или ОЗУ перед запуском таймера (или после изменения значений)

Сообщение от ARTEM277 Посмотреть сообщение
Еще пытаюсь не использовать деление
Деление не нужно - считай в целых числах. А десятичную точку ты всегда можешь поставить самостоятельно в любом месте, просто засветив сегмент индикатора в нужной позиции.

Я бы сделал так. Значения таймеров загружаются в ОЗУ и если их нужно изменить, то они меняются прямо в ОЗУ. А когда изменения будут закончены (по нажатию кнопки), то значения переписываются из ОЗУ в EEPROM и там хранятся до следующих изменений начальных значений.
Для счета в принципе то нужна только одна двухбайтная переменная. В нее читается из EEPROM первый таймер при запуске, и счет таймера идет в этой переменной. Далее, когда первый таймер досчитает до 0, в эту же переменную загружается из EEPROM значение второго таймера и счет повторяется. Далее третий и четвертый таймеры запускаются аналогично. А потом после окончания счета в эту же переменную читаются с накопительным суммированием значения таймеров из EEPROM.
Если нужно изменить значения конкретного таймера, читаются из EEPROM в ОЗУ и там изменяются, затем перезаписываются обратно.

Последний раз редактировалось NewWriter; 17.07.2015 в 00:51.
NewWriter вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Re-0505S помогите советом Superki Источники питания и свет 2 08.10.2008 20:14
Помогите советом начинающему eler Делимся опытом 64 11.09.2008 17:28
Товарищи помогите советом!!! Mrak Микроконтроллеры, АЦП, память и т.д 13 17.11.2005 18:46
[Решено] Помогите советом Madison Видеотехника 9 06.08.2005 04:17
[Решено] помогите советом pioneer KEH-P7450 sreg kr Информация по радиокомпонентам 2 20.07.2005 18:57


Часовой пояс GMT +4, время: 14:51.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot