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

 
 
> Микроконтролеры AVR. Джон Мортон. Ошибки в книге?
Merovey
сообщение Oct 27 2009, 12:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 24-08-07
Из: Санкт-Петербург
Пользователь №: 30 043



Добрый день!
Речь идет не о банальных опечатках, а о более глобальных ошибках.
Например, вот фрагмент кода, который формирует секундную задержку для микроконтроллера AT90S1200. Кварц на 2.4576 МГц.

Код
     ldi Count30,30
     ldi Mark80,80  
TimeLoop:
    out TCNT0,temp  
    cp temp,Mark80  
    brne TimeLoop    
    subi  Mark80,-80
    dec   Count30    
    brne  TimeLoop

Понимаю, что вместо out TCNT0,temp должно быть in temp,TCNT0. Быстрей всего это косяк переводчика. Но насколько работоспособен сам принцип формирования такой задержки? Насколько я понял, таймер считает до 255 и начинает заново, значит после 3-х циклов, когда Mark80 превысит значение 255 равенства не наступит. Правильно ли я понимаю, или есть какие-то особенности?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Valek
сообщение Nov 1 2012, 12:36
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 19-06-07
Из: Челябинск
Пользователь №: 28 542



В моей формуле Т - это время задержки (сек) которое мне нужно получить. F - это частота тактового генератора МК.
И того мы имеем две величины, а так же количество и разрядность регистров. Всетаки до конца не понятно как выбирать Х. Приведите пожалуйста пример расчета используя эти величины.
Go to the top of the page
 
+Quote Post
bookd
сообщение Nov 1 2012, 12:58
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 4-02-09
Из: Поволжье
Пользователь №: 44 403



Цитата(Valek @ Nov 1 2012, 15:36) *
В моей формуле Т - это время задержки (сек) которое мне нужно получить. F - это частота тактового генератора МК.
И того мы имеем две величины, а так же количество и разрядность регистров. Всетаки до конца не понятно как выбирать Х. Приведите пожалуйста пример расчета используя эти величины.


Если не брать в расчет время исполнения самих команд, тогда все вот так:
T = время задержки, пускай 5ms
F= тактвая частота, пускай 4MHz, период соотвтественно Tf = 1/4MHz = 0.25us

Если разделить время задержки на Tf = получим число которое надо записать в регистр 5ms/0.25us = 5000us/0.25us = 20000 или в 100 раз больше чем можнт поместиться в регистр

Пусть в регистр мы записываем 200, тогда 20000/200 = 100 это тот делитель на который нам надо поделить частоту, или x.

Конечно я все вывернул, теперь проверим цифры в прямом порядке.

T = 5ms, F=4MHz, x = 100. F/x = 4MHz/100 = 40KHz Tf1 = 1/40kHz = 25us
Число которое надо записать в регистр
N = T/Tf1 = 5ms/2.5us = 5000us/25us = 200 все.
Единственное что я тут произвольно выбрал это число 200. Все зависит от того, какое число можно записывать в x
В данном случае общий делитель равен 20000. Поэтому пара N*x должна обеспечивать 20000, и чему будут равны конкретные значения N и x неважно, конечно ограничение есть и оно одно значения в N и x должны быть в пределах 1..255.
Вроде все понятно.


--------------------
Всеобщая дебилизация не повод наносить ущерб своему здоровью.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Merovey   Микроконтролеры AVR. Джон Мортон. Ошибки в книге?   Oct 27 2009, 12:40
- - V_G   А как байт (Mark80) может превысить 255? А какую ч...   Oct 27 2009, 13:33
- - Merovey   ЦитатаА как байт (Mark80) может превысить 255? Раб...   Oct 27 2009, 13:46
- - Палыч   Цитата(Merovey @ Oct 27 2009, 15:40) Но н...   Oct 27 2009, 14:02
|- - Merovey   Цитата(Палыч @ Oct 27 2009, 17:02) Ну о...   Oct 28 2009, 07:32
|- - Палыч   Цитата(Merovey @ Oct 28 2009, 10:32) А на...   Oct 28 2009, 07:57
- - SasaVitebsk   Как переводчик может перепутать: "out TCNT0,t...   Oct 27 2009, 14:34
|- - Палыч   Цитата(SasaVitebsk @ Oct 27 2009, 17:34) ...   Oct 27 2009, 14:59
|- - ReAl   Цитата(SasaVitebsk @ Oct 27 2009, 16:34) ...   Oct 27 2009, 15:03
|- - SasaVitebsk   Цитата(ReAl @ Oct 27 2009, 18:03) Вычитае...   Oct 27 2009, 17:26
- - Merovey   Ну вот пример программы из книги, где это использу...   Oct 28 2009, 12:31
|- - Палыч   Цитата(Merovey @ Oct 28 2009, 15:31) Код....   Oct 28 2009, 13:11
|- - Merovey   Цитата(Палыч @ Oct 28 2009, 16:11) P.S. У...   Oct 29 2009, 06:02
- - SasaVitebsk   Разобраться с самим МК, конечно надо. И немного ас...   Oct 30 2009, 09:05
- - Valek   У меня есть вопрос какраз по этой книге. Когда мы ...   Nov 1 2012, 08:00
|- - bookd   Цитата(Valek @ Nov 1 2012, 11:00) У меня ...   Nov 1 2012, 08:12
- - Valek   УРА!!! УРА!!! УРА!...   Nov 1 2012, 13:44


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

 


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


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