Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
СтуденT
6 / 6 / 1
Регистрация: 18.12.2011
Сообщений: 126
1

AT89C51. Организация задержки

08.12.2012, 21:22. Просмотров 3155. Ответов 18
Метки нет (Все метки)

Доброго времени суток. Возникла задача организовать задержку 3 секунды с помощью 16ти разрядного счетчика на МК at89c51. По моим расчетам переполнение произойдет только через 1,0176 секунд. Правильно ли я расчитал? Если нет то прошу объяснить как нужно рассчитать. Если все правильно то неужели для задержки в 20 мин нужно запустить таймер больше 1000 раз?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 21:22
Ответы с готовыми решениями:

Мигание светодиодом на PIC. Организация задержки
объясните пожалуйста как сформировать чередующуюся еденицу и нолик длительностью 1(2) секунды, при...

Ev8031 и at89c51
Суть вопроса такова: есть стенд ev8031 и на нём мк at89c51. к стенду есть методичка с лабами, в...

AT89C51 UART
Добрый вечер. Вот возникла такая проблема: на контролере AT89C51 питаюсь завести UART. SCON: SM0 =...

частотомер на at89c51
Сделал модель частотомера ra4nalа в протеусе. <Изображение удалено> не могу разобраться,...

Задержка на МК AT89C51
Добрый день. Вот такая проблема: хочу организовать задержку на МК AT89C51. Делаю циклом: нифига, а...

18
OldFedor
7457 / 4124 / 471
Регистрация: 25.08.2012
Сообщений: 11,504
Записей в блоге: 11
09.12.2012, 07:57 2
Цитата Сообщение от СтуденT Посмотреть сообщение
Правильно ли я расчитал?
1. Какой кварц? По ТТД - 4-24 МГц.
2. Частоту на входе делить на 2^16 и 1/F
3. На кристале уже есть генератор и часы
4. Если реализовывать так как Вы написали, то да. Но зачем? Можно проще.

Удачи
1
СтуденT
6 / 6 / 1
Регистрация: 18.12.2011
Сообщений: 126
09.12.2012, 10:58  [ТС] 3
Частота 12 МГц , а если проще то как?
0
OldFedor
7457 / 4124 / 471
Регистрация: 25.08.2012
Сообщений: 11,504
Записей в блоге: 11
09.12.2012, 12:18 4
Цитата Сообщение от СтуденT Посмотреть сообщение
Частота 12 МГц , а если проще то как?
1. Частоту на входе делить на 2^16 и 1/F - на входе счетчика.
2. Используйте встроенные часы по назначению

Удачи
2
09.12.2012, 12:18
СтуденT
6 / 6 / 1
Регистрация: 18.12.2011
Сообщений: 126
09.12.2012, 12:19  [ТС] 5
OldFedor, что есть 1/F
и что получим когда частоту на 2^16 поделим?
0
OldFedor
7457 / 4124 / 471
Регистрация: 25.08.2012
Сообщений: 11,504
Записей в блоге: 11
09.12.2012, 12:29 6
Цитата Сообщение от СтуденT Посмотреть сообщение
OldFedor, что есть 1/F
F - это частота, T = 1/F - период.
Если F частота на входе счетчика, то на выходе частота F2 = F/N,
где N - коэффициент деления (пересчета) и получаем
F2 = F/N = F/2^16.
Аналогично
T2 = 2^16/F
Например, если частота 65536 Гц, то Т2 = 2^16/65536 = 1 (сек.)
Именно по этому часовые кварцы имеют частоту кратную 2^n.
1
СтуденT
6 / 6 / 1
Регистрация: 18.12.2011
Сообщений: 126
09.12.2012, 12:55  [ТС] 7
OldFedor, спасибо за объяснения, извиняюсь за глупые вопросы))

Добавлено через 12 минут
OldFedor, правильно ли я посчитал что для 16ти разрядного таймера с кварцем 12 МГц, время одного полного прерывания почти 6 мин?
0
OldFedor
7457 / 4124 / 471
Регистрация: 25.08.2012
Сообщений: 11,504
Записей в блоге: 11
09.12.2012, 12:58 8
Цитата Сообщение от СтуденT Посмотреть сообщение
OldFedor, правильно ли я посчитал
Я не знаю какя частота прерываний.

Добавлено через 46 секунд
То бишь, что подается у Вас на вход.
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
13.12.2012, 15:29 9
Берете дополнительную переменную, которая будет инкрементироваться при каждом переполнении счетчика и проверяете ее на достижении определенного значения. Как достигли этого значения поднимаем порт.

Кварц берете на 32768 Гц, или 1,4,8мГц, в общем любой существующий в природе, а не ваш выдуманый на 10кГц.
1
СтуденT
6 / 6 / 1
Регистрация: 18.12.2011
Сообщений: 126
13.12.2012, 17:11  [ТС] 10
russo turisto, кто сказал что мой кварц выдуманный? вот вам ссылка http://www.gaw.ru/html.cgi/txt/el_mech/C-MAC/cristals/smd/start.htm модель я в начале поста писал
0
ValeryS
Модератор
7525 / 5701 / 737
Регистрация: 14.02.2011
Сообщений: 19,511
Завершенные тесты: 1
13.12.2012, 17:40 11
OldFedor,
чей то ты разошёлся
нет в этом камне ни встроенных часов ни предделителя
есть только два таймера 8 да 16 бит
частота срабатывания таймера 1/12 от тактовой частоты кварца

СтуденT,
в твоем случае 1 мГц
используем 16 битный таймер(1таймер)
записываем в него 15536 и включаем режим таймера
через 50000 импульсов произойдет прерывание
т.е прерывания вызываются 1 000 000/50 000= 20 раз в секунду
заводишь еще одну переменную записываешь в неё 20

в обработчике прерывания
1 в таймер опять записываешь 15536 (это нужно чтобы таймер отсчитал 50 000, он каждый раз прибавляет по единице свое значение счетчика и вызывает прерывание когда произойдет переполнение 65536-15536=50000)
из переменной которую ввел вычитаешь 1
когда она равна 0 ( это значит прошла 1 секунда)
записываешь в неё опять 20
и делаешь что тебе нужно при задержке

вот так примерно реализуются задержки
если тебе нужна большая(меньшая) задержка то корректируй значение переменной
если тебе нужна задержка в минутах
я бы ввел еше одну переменную и записал в неё 60
тогда вычитаем первую перемененную
если она равна 0 то записываем в неё 20 а из второй вычитаем 1
когда вторая равна 1 то прошла минута



Цитата Сообщение от СтуденT Посмотреть сообщение
Если все правильно то неужели для задержки в 20 мин нужно запустить таймер больше 1000 раз?
таймер перезапустить не нужно просто записывай в его счетчик значения

Добавлено через 3 минуты
Цитата Сообщение от СтуденT Посмотреть сообщение
Частота 12 МГц ,
Цитата Сообщение от russo turisto Посмотреть сообщение
не ваш выдуманый на 10кГц.
Цитата Сообщение от СтуденT Посмотреть сообщение
кто сказал что мой кварц выдуманный?
кварц то сколько???
и сколько кварцев используешь????
2
СтуденT
6 / 6 / 1
Регистрация: 18.12.2011
Сообщений: 126
13.12.2012, 21:54  [ТС] 12
ValeryS, Я уж совсем запутался. Я думал что только один кварц, он внутри МК, я использую только его, потом сказали зачем-то лепить кварцевый резонатор(я правда не знаю зачем, хоть стреляйте, я не электронщик, еще пару месяцев назад я ниже паскаля не спускался), я прилепил с частотой 10 КГц чтобы получить необходимое время в пределах одного прерывания. Но к сожалению все оказалось не важно, так как преподу оказалось глубоко пофиг на работоспособность программы и на то, что я там лепил к МК на схеме и дрючил он меня за оформление отчета, я ушел от темы, но это наверное от огорчения что даже преподам похрен знаешь ты или нет и нужно что-то объяснить или нет, поэтому думаю тему можно закрыть. Всем спасибо за внимание и за помощь, извиняюсь за глупые вопросы.
0
ValeryS
Модератор
7525 / 5701 / 737
Регистрация: 14.02.2011
Сообщений: 19,511
Завершенные тесты: 1
13.12.2012, 22:05 13
Цитата Сообщение от СтуденT Посмотреть сообщение
Я думал что только один кварц, он внутри МК,
это не ATMega у этого камня нет внутри резонатора, посему вешается внешний кварц (18-19 ножка у DIP40)
иногда правда видел вешают RC цепь

Цитата Сообщение от СтуденT Посмотреть сообщение
хоть стреляйте, я не электронщик,
а зря
сейчас как раз востребованы специалисты по микроконтроллерам
если тебе будет это интересно то найди протеус (это такая программка эмулятора электронных схем)
и изучай по тихоньку

Добавлено через 1 минуту
Цитата Сообщение от СтуденT Посмотреть сообщение
что я там лепил к МК на схеме и дрючил он меня за оформление отчета, я ушел от темы, но это наверное от огорчения что даже преподам похрен знаешь ты или нет и нужно что-то объяснить или нет,
Это конечно огорчает
но учишся ты для себя и поэтому наплюй на преподов и получай знания

Добавлено через 1 минуту
а вообще AT89C51. это клон intel 8051 очень хорошо описан и много информации в интернете
1
bill_vs
35 / 35 / 1
Регистрация: 07.02.2012
Сообщений: 79
14.12.2012, 19:31 14
Цитата Сообщение от ValeryS Посмотреть сообщение
это не ATMega у этого камня нет внутри резонатора
У меги тоже нет внутри кварца. В полупроводниковой технологии кварцы выращивать, насколько я знаю, не научились.

В большинстве микроконтроллеров есть встроенный RC генератор. В ATmega48, например, есть встроенный RC генератор
на 8 МГц, точность установки +/- 10%. При изменении температуры от -30 до +50 °С частота меняется от 7.85 до 8.1 МГц.
Зависит частота и от напряжения питания.

Точность настройки кварцевых резонаторов обычно лучше +/- 50 * 10^-6 (50 ppm) = 0.005 %! Температурная зависимость - лучше 100 ppm.

Точность RC генератора не удовлетворяет, например, при работе по асинхронным стыкам (RS232 и т.д.). Максимальное расхождение частоты приёмника и передатчика для 10-ти битной посылки не должно превышать 5%. Если у приёмника RC генератор будет иметь +10%, а у передатчика -10%, то расхождение частот 20%.
0
ValeryS
Модератор
7525 / 5701 / 737
Регистрация: 14.02.2011
Сообщений: 19,511
Завершенные тесты: 1
14.12.2012, 19:49 15
Цитата Сообщение от bill_vs Посмотреть сообщение
У меги тоже нет внутри кварца.
я где то говорил про кварц?
внутри меги есть генератор, что ты и сам подтвердил
Цитата Сообщение от bill_vs Посмотреть сообщение
есть встроенный RC генератор.
посему я мегу могу включить без кварца, AT89.... нет
0
bill_vs
35 / 35 / 1
Регистрация: 07.02.2012
Сообщений: 79
14.12.2012, 20:39 16
Фразу
Цитата Сообщение от ValeryS Посмотреть сообщение
это не ATMega у этого камня нет внутри резонатора
я понял как противопоставление AT89 (у которой нет резонатора) и ATmega (у которой есть).
ValeryS, приношу свои извинения.
0
OldFedor
7457 / 4124 / 471
Регистрация: 25.08.2012
Сообщений: 11,504
Записей в блоге: 11
15.12.2012, 10:03 17
Цитата Сообщение от ValeryS Посмотреть сообщение
OldFedor,
чей то ты разошёлся нет в этом камне ни встроенных часов ни предделителя
есть только два таймера 8 да 16 бит
О встроенных часах придумал не сам - http://alexhak.narod.ru/radiofak/spr...l/at89c51.html
После Вашего замечания полез искать. Действительно, нет! Вот поросята, сбили меня с толку.
Вложение 213353
Цитата Сообщение от ValeryS Посмотреть сообщение
частота срабатывания таймера 1/12
Я считал, что это и есть предделитель. Но я имел ввиду внешний.

Спасибо за поправку.
0
ValeryS
Модератор
7525 / 5701 / 737
Регистрация: 14.02.2011
Сообщений: 19,511
Завершенные тесты: 1
15.12.2012, 10:16 18
Цитата Сообщение от OldFedor Посмотреть сообщение
Я считал, что это и есть предделитель.
это не предделитель
камень старый (точнее ядро) посему каждый цикл команд выполняется за 12 тактов
отсюда и частота срабатывания таймера 1/12
кстати у at89c5131 at89c5132 есть режим х2 там уже 6 тактов
Цитата Сообщение от OldFedor Посмотреть сообщение
Вложение 213353
чей то не открывается
что там ?
0
OldFedor
7457 / 4124 / 471
Регистрация: 25.08.2012
Сообщений: 11,504
Записей в блоге: 11
15.12.2012, 10:25 19
Цитата Сообщение от ValeryS Посмотреть сообщение
чей то не открывается
что там ?
Для Вас, видимо, ничего интересного - подробное описание 51-го.
Нужно - перезалью.
0
15.12.2012, 10:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 10:25

задача на микроконтроллере Atmel AT89C51
найти все простые числа до заданного n n∈

задача на микроконтроллере Atmel AT89C51
перевести 8 разрядное дробное положительное число представленное в двоично десятичном формате в...

задача на микроконтроллере Atmel AT89C51
Программа Keil Вычислить произведение 16-ти разрядного целого числа и 8-ми разрядного целого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru