Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.02.2010, 23:14
|
#11
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Регулировка частоты на контроллере
то есть он каждые сколько-то тиков Т1 прибавляет вычисленное ранее приращение?
AccFz ›› 24 - оставляет только 8 старших битов?
|
|
|
|
20.02.2010, 23:20
|
#12
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Сообщение от spballiance
|
то есть он каждые сколько-то тиков Т1 прибавляет вычисленное ранее приращение?
|
Да. Страшно сложный алгоритм?
Сообщение от spballiance
|
AccFz ›› 24 - оставляет только 8 старших битов?
|
Да.
|
|
|
|
20.02.2010, 23:35
|
#13
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Регулировка частоты на контроллере
алгоритм нестрашный, но
.equ TVal = 40
затем
ldi temp,high(TVal-1) ;Load compare register
out OCR1AH,temp
ldi temp,low(TVal-1)
out OCR1AL,temp
зачем такие сложности
можно было прописать TVal = 39
Последний раз редактировалось spballiance; 20.02.2010 в 23:44.
|
|
|
|
20.02.2010, 23:44
|
#14
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Да вроде все прозрачно.
40 - количество тактов между прерываниями.
Чтобы их получить, надо в регистр сравнения загрузить число меньшее на 1 такт, таймер будет считать от 0 до 39, т.е. ровно 40 тактов
Ну вместо
ldi temp,low(TVal-1)
out OCR1AH,temp
Можно было
ldi temp,0
out OCR1AH,temp
Но это ничего не меняет. Но в варианте Ридико сразу понятно что грузится в OCR1AH
|
|
|
|
20.02.2010, 23:48
|
#15
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Да, при переносе алгоритма на С стоит учесть что считывать из памяти 8 байт и сохранять 4 не очень быстро. Лучше для этого регистры зарезервировать.
Да обработчик все же лучше написать на ассемблере.
|
|
|
|
21.02.2010, 00:04
|
#16
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Регулировка частоты на контроллере
эх, асмовский код с большими цифрами читается тяжко
|
|
|
|
21.02.2010, 00:39
|
#17
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Сообщение от spballiance
|
эх, асмовский код с большими цифрами читается тяжко
|
Там вообще ни одной цифры не будет. ![Сомнение](images/smilies/icon_neutral.gif)
Удивительное высказывание для человека писавшего на асме по 60 страниц...
Одно сложение двух 32 битных переменных это не то что бы просто, а очень просто. Получить старший байт от результата тоже не сложно. Добавить его к адресу массива и по результирующему адресу извлечь данные для ЦАП. Три простейшие операции.
|
|
|
|
21.02.2010, 01:02
|
#18
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Сообщение от kison
|
Там вообще ни одной цифры не будет. ![Сомнение](images/smilies/icon_neutral.gif)
Удивительное высказывание для человека писавшего на асме по 60 страниц...
|
читать свой код и чужой большая разница. большие цифры - 3-4 байта, я уже не про приращение...
Цитата:
|
Одно сложение двух 32 битных переменных это не то что бы просто, а очень просто.
|
только вариантов реализации может быть несколько, тем более там еще накладываются операции умножения
сижу прокручиваю асмовский код по ссылке, разбираюсь с константами
;Freq = Fval x Calib / 16777216
;Nominal Calib = 180143985
16777216=2^24
откуда Nominal Calib = 180143985?
Последний раз редактировалось spballiance; 21.02.2010 в 01:10.
|
|
|
|
21.02.2010, 01:49
|
#19
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Сообщение от spballiance
|
только вариантов реализации может быть несколько, тем более там еще накладываются операции умножения
|
Я знаю только один вариант сложения. И других себе даже представить не могу. Так же как и при чем тут умножение. Это вообще заинтересовало, я сейчас мало пользуюсь ассемблером и может какие хитрые методики в сложении появились? Расскажите о этом поподробнее - куда накладывается умножение???
|
|
|
|
21.02.2010, 01:55
|
#20
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: Регулировка частоты на контроллере
Сообщение от kison
|
Расскажите о этом поподробнее - куда накладывается умножение???
|
еще раз говорю, с приращением все понятно, я теперь разбираюсь с вычислением этого приращения. вот тут и появляется умножение.
его алгоритм не заканчивается приращением фазы.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:21.
|
|