ГлавнаяРегистрацияВход Сайт Сокола Сергея Пятница, 03.05.2024, 04:22
  Работа с EEPROM - Страница 3 - Форум Приветствую Вас Гость | RSS

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум » Основной форум сайта » Общее » Работа с EEPROM
Работа с EEPROM
miminoДата: Воскресенье, 03.02.2013, 22:55 | Сообщение # 31
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Цитата
Я пришел к выводу по поводу бегущей строки: Без сдвиговых регистров не обойтись.
В них записывать байты и по очереди и сдвигать.
А символы всетаки брать с ЕЕПРОМ.
Ну сдвиг регистров надо организовать все же программно. Алгоритм там довольно несложный, если разобраться. Рекомендую себе на листике нарисовать как именно должен происходить сдвиг для нескольких моментов времени, тогда алгоритм становится понятным.
Цитата
Еще у меня новшество, отладочную плату собрал на Tiny-13A.
Поздравляю! smile И как, работает?
Цитата
Пожалуйста сообщите алгоритм электронных часов. Неплохо и календарь чтоб там был.
Тут алгоритм довольно простой. Запускаете таймер, отсчитываете при помощи него секунды. Желательно при этом тактировать его от часового кварца на 32768 Гц, а таймер использовать 16-битный в режиме сброса по совпадению. Тогда можно сделать так, чтобы он срабатывал раз в секунду. А дальше дело техники. Наращиваете секунды, когда достигается 60, обнуляете секунды, добавляете одну минуту. С минутами так же, считаете до 60 и обнуляете. И с часами так же. Установку времени производить в прерывании по нажатию на кнопку. Вот тут придется повозиться, чтобы выводить на дисплей именно то, что требуется. Почитайте хотя бы мою статью про электронные часы. Там есть программа, можете в нее не вчитываться, а вот комментарии к каждой строке там очень подробные, и в них как раз алгоритм весь изложен очень подробно.
 
AVRикДата: Понедельник, 04.02.2013, 09:05 | Сообщение # 32
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, с контроллера Tiny 13 успел только сосчитать память программ и ЕЕПРОМ, вторая очень маленькая, где то две строки с небольшим .
 
miminoДата: Понедельник, 04.02.2013, 11:33 | Сообщение # 33
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Да, Владимир, к сожалению ATtiny13 не отличается большими объемами памяти. Если нужно больше при таком же малом размере корпуса, рекомендую обратить внимание на ATtiny45 или ATtiny85
 
AVRикДата: Понедельник, 04.02.2013, 15:01 | Сообщение # 34
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, я еще прикупил дополнительно Mega-48PA -AU, может пригодится ?
 
miminoДата: Понедельник, 04.02.2013, 21:50 | Сообщение # 35
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Да, хорошие контроллеры. Типа ATmega8, но с меньшим объемом памяти. Зато в нем появились другие полезные функции, которых нет в ATMega8, у него лучшие частотные и энергетические характеристики.
 
AVRикДата: Понедельник, 04.02.2013, 22:29 | Сообщение # 36
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей !
Контроллер Tiny 13A испытал, загрузил в нее первую прогу.
Начал с АЦП - работает, что интересно цена контроллера 28 р.
Только ножек маловато, подойдет для небольших устройств.
У меня задумка есть, написать программу прибора пожарного.
Суть идеи такова: постоянно измеряя ток на входе контроллера и
выдать единицу при увелечении тока более 7 мА. Я понимаю так
ток порта привязан к напряжению соответственно чем больше, ток тем ниже напряжение на входе ADC.
Но как реализовать контроль канала, что бы его можно было в нужный момент отключить и включить нажатием одной кнопки ?
Контроль канала должен быть подпрограммой или в программе находится ?
Как правильно реализовать ?
 
miminoДата: Вторник, 05.02.2013, 23:33 | Сообщение # 37
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Не совсем понял Вашу идею. Но сразу скажу, что насчет тока Вы заблуждаетесь. Нужно измерять падение напряжения на каком-то образцовом сопротивлении, а затем делить это падение напряжения на величину сопротивления. Так по закону у Ома и получится ток. Соответственно, чем больше ток, тем больше падение напряжения.
Насчет включения-выключения, возможно лучше использовать прерывание по изменению состояния вывода, чтобы более оперативно на него реагировать.
 
AVRикДата: Среда, 06.02.2013, 14:35 | Сообщение # 38
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей!
Идея этого прибора такова:  к порту подключен датчик дыма, через делители он запитывается от 12 В,
и подключается к порту контроллера, при попадании дыма в датчик его ток потребления повышается
от 50 мкА до 5 мА. Контроллер должен бесконечно считывать порт, при увелечении тока больше максимума
выдать команду на другой порт к которому подключено реле звукового оповещателя. Команду на звуковое
оповещение выдавать в контрольном режиме, то есть по нажатию кнопки, а если ненадо звука
то можно отключить порт реле, нажатием тойже кнопкой.
Сергей, я так понимаю деление производить методом вычитания, что бы получить ток?
А как это реализовать деление сопротивления на падения напряжения, подсказку если можно.
Это должно происходить бесконечно ?

Добавлено (06.02.2013, 14:35)
---------------------------------------------
Ого, я стал сержантом !!!

 
miminoДата: Среда, 06.02.2013, 22:02 | Сообщение # 39
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Ну Вы же будете знать величину сопротивления, на котором будете измерять падение напряжения. Например, если у Вас опорное напряжение АЦП будет составлять 5 В, то для тока 5 мА нужно иметь сопротивление 5/0,005= 1 кОм. Вот если поставите такое сопротивление, то численно ток в мА будет равен входному напряжению в В.

Насчет сержанта, ранг автоматически увеличивается при написании определенного количества сообщений smile
 
AVRикДата: Четверг, 07.02.2013, 22:38 | Сообщение # 40
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей !
Алгоритм деления разработал такой:
находится он в цикле программы
clr r21 ; Сброс r21
minus:
cpi r20,0 ; Сравниваем с константой нуль
brne exit ; Если равно нулю, то выход
subi r20,15 ; Вычитаем константу (15 - допустим что это и есть 1кОм)
inc r21 ; Увеличивает r21 на единицу
rjmp minus
exit:
В r20 записываем постоянно результат измерения
С r21 получаем результат деления
Далее определяем сколько будет 5 мА и создаем условие
 включения реле, если > или = 5 мА.
Поделил и далее на следующий цикл и т.д.
Вот такой фрагмент алгоритма работы моего будущего прибора.

Добавлено (07.02.2013, 22:38)
---------------------------------------------
Сергей, алгоритм пришлось доработать, вот этот вариант
реально делит.

main:               ;Основной цикл программы
clr r21 ; Сброс r21
minus:
cpi r20,1 ; Сравниваем с константой нуль
brlo exit ; Если равно 1, то выход
subi r20,10 ; Вычитаем константу (10 - допустим что это и есть 1кОм)
inc r21 ; Увеличивает r21 на единицу
rjmp minus ; Вычитаем
exit:
rjmp main        ;Конец основного цикла,

 
miminoДата: Четверг, 07.02.2013, 23:29 | Сообщение # 41
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Вот тут вот у Вас увидел несоответствие:
Код
brne exit ; Если равно нулю, то выход
Условие "если равно" - это команда breq
 
AVRикДата: Пятница, 08.02.2013, 23:31 | Сообщение # 42
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, как представить 1 кОм в цифровом коде, то есть от 0 - 255 ?
 
miminoДата: Пятница, 08.02.2013, 23:46 | Сообщение # 43
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир!

Ну вот смотрите. Как я писал ранее, если сопротивление будет равно 1 кОм, то ток в мА будет численно равен напряжению в В. То есть если Вы будете использовать 10-битный АЦП и опорное напряжение 5 В, то ток датчика 5 мА будет равен коду 1024, а код любого другого тока будет определяться как "код = I * 1024/5" или приблизительно "код = I * 205". Тогда, чтобы найти ток, зная величину кода, полученного от АЦП, нужно его разделить на 205, и получится ток в мА.
 
AVRикДата: Пятница, 08.02.2013, 23:58 | Сообщение # 44
Лейтенант
Группа: Проверенные
Сообщений: 73
Репутация: 0
Статус: Offline
Сергей, а если 8 бит то 256, а как обработать младший и старший регистр ?
 
miminoДата: Суббота, 09.02.2013, 00:15 | Сообщение # 45
Полковник
Группа: Администраторы
Сообщений: 227
Репутация: 101
Статус: Offline
Владимир, тогда выравниваете результат по левой границе, установив бит ADLAR. И считываете только старший байт результата, а младший просто игнорируете. А расчеты все аналогичные вышеприведенным, только подставляете не 1024, а 256
 
Форум » Основной форум сайта » Общее » Работа с EEPROM
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

 

Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz