Таймеры в at tiny2313

timsa™
15:20, 25.07.2011
От пользователя ITihonov
скользящие средние или фильтр калмана


дяденька, я не настоящий сварщик!
если я воткну TLE4905 то всё заработает?

[Сообщение изменено пользователем 25.07.2011 15:21]
0
15:42, 25.07.2011
От пользователя timsa™
дяденька, я не настоящий сварщик!
если я воткну TLE4905 то всё заработает?


а если переключать светодиод каждый раз, когда ICP срабатывает, оно правильно срабатывает?

и я не понял почему светодиоды обновляются

От пользователя timsa™
а после каждого дрыгания холлом порта ICP


по-идее они по таймеру должны обновляться (по переполнению, например).
0
timsa™
15:56, 25.07.2011
От пользователя ITihonov
по-идее они по таймеру должны обновляться


обновляются по прерыванию захвата.
предполагается, что импульсы идут с периодичностью 0,6 - 6 секунд. каждый раз мы имеем в ICR1 длину и соответственно зажигаем нужное количество светодиодов.


От пользователя ITihonov
а если переключать светодиод каждый раз, когда ICP срабатывает, оно правильно срабатывает?

счас попробую.
0
0хCB
16:06, 25.07.2011
>каждый раз мы имеем в ICR1 длину и соответственно зажигаем нужное количество светодиодов.

длину чего?
кстати подумалось тут насчет холла с его выходом в 1/2vdd. У 2313 есть аналоговый компаратор, выход которого может цеплятся к icp, тогда на одну ногу компараторв - холл на вторую - 1/4 (3/4) питашки
0
16:22, 25.07.2011
От пользователя timsa™
предполагается, что импульсы идут с периодичностью 0,6 - 6 секунд. каждый раз мы имеем в ICR1 длину и соответственно зажигаем нужное количество светодиодов.


т.е. один светодиод - 0.54 секунды, периметр колеса - 2 метра, если ты тупо делишь, то светодиоды в км/ч переводятся примерно так:

12.00 6.32 4.29 3.24 2.61 2.18 1.87 1.64 1.46 1.32

что какбе скорее всего не то, что нужно потому что не линейно.
0
timsa™
16:43, 25.07.2011
От пользователя ITihonov
примерно так

ненене

для круглого счета ноль выкидываем (горят от одного до 10 светодиодов).

0,6 секунды = 100 об/мин = 10 светодиодов
6 секунд = 10об/мин = 1 светодиод

всё более чем линейно.

и это не обороты колеса, это обороты педалей. я каденс меряю.


От пользователя timsa™
попробовал. дребезга нет

отладку продолжаю. мне показалось что яркость какая-то разная у отладочного и других. походу дребезг таки есть.
0
16:57, 25.07.2011
От пользователя timsa™
0,6 секунды = 100 об/мин = 10 светодиодов
6 секунд = 10об/мин = 1 светодиод



лана, если так вопрос стоит:

y об/мин = 60 * (1 оборот/x секунд)


в оборотах: 100.00 52.63 35.71 27.03 21.74 18.18 15.62 13.70 12.20 10.99 10.00

что опять таки нифига не линейно.
2 / 0
17:23, 25.07.2011
кстати поменяй

Исходник:
CLR  R16
OUT  TCNT1H, R16
OUT  TCNT1L, R16

IN  R17, ICR1H
IN  R16, ICR1L


на

Исходник:
IN  R17, ICR1H
IN  R16, ICR1L

CLR  Rnn
OUT  TCNT1H, Rnn
OUT  TCNT1L, Rnn


и на дребезг тебе станет положить. тока прерывание обратно не включай пока с r16:17 не закончишь.

и еще перечитай как работать с 16-битными регистрами. кажись ты неправильно их готовишь (там вроде чтение и запись в разных порядках надо делать, хотя могу и путать).


[Сообщение изменено пользователем 25.07.2011 17:25]
0
timsa™
17:31, 25.07.2011
От пользователя ITihonov
в оборотах: 100.00 52.63 35.71 27.03 21.74 18.18 15.62 13.70 12.20 10.99 10.00


не понимаю, откуда эти жуткие дроби?

разве не 0.6, 1.2, 1.8, 2.4, 3.0, 3.6, 4.2, 4.8, 5.4, 6.0?


От пользователя ITihonov
кстати поменяй


нет смысла. при переходе по прерыванию захвата в ICR УЖЕ есть значение. туда копируется TCR ПЕРЕД переходом на прерывание.
во всяком случае в отладчике так.
и порядок загрузки 16битных логичный: читаем/пишем сначала старшее, потом младшее.
0
timsa™
17:35, 25.07.2011
От пользователя timsa™
нет смысла


проверил. нет смысла.
0
18:07, 25.07.2011
От пользователя timsa™
не понимаю, откуда эти жуткие дроби?

разве не 0.6, 1.2, 1.8, 2.4, 3.0, 3.6, 4.2, 4.8, 5.4, 6.0?


ну пусть даже так, все равно получается:

Исходник:
60 / 0.60с = 100.00 об/мин
60 / 1.20с = 50.00 об/мин
60 / 1.80с = 33.33 об/мин
60 / 2.40с = 25.00 об/мин
60 / 3.00с = 20.00 об/мин
60 / 3.60с = 16.67 об/мин
60 / 4.20с = 14.29 об/мин
60 / 4.80с = 12.50 об/мин
60 / 5.40с = 11.11 об/мин
60 / 6.00с = 10.00 об/мин


От пользователя timsa™
нет смысла. при переходе по прерыванию захвата в ICR УЖЕ есть значение. туда копируется TCR ПЕРЕД переходом на прерывание.


если после обнуления TCR сработает ICP то прерывания не будет (так как заблокированно) но ICR обнулится разве не? хотя да, поскольку обнуление/чтение рядом вряд ли это проблема.
0
0хCB
18:48, 25.07.2011
тьфу ты блин. в опере мини сайт е1 коряво отображается, половину исходника невидно :-)
здесь:
OUT TCNT1H, R16
OUT TCNT1L, R16
правильно, а тут:
IN R17, ICR1H
IN R16, ICR1L
надо поменять местами, читают сначала мл. потом старший, может по этому маленькие значения вылазят
0
00:49, 26.07.2011
От пользователя FGV
надо поменять местами, читают сначала мл. потом старший, может по этому маленькие значения вылазят


[подымая палец вверх] а я ведь говорил, перечитай!

От пользователя timsa™
и порядок загрузки 16битных логичный: читаем/пишем сначала старшее, потом младшее.


а на самом деле:

[quote]To do a 16-bit write, the high byte must be written before the low byte. For a 16-bit read, the low
byte must be read before the high byte.[quote]
ATtiny2313 Datasheet, стр.84
2 / 0
timsa™
11:27, 26.07.2011
в симуляторе всё работало идеально и так
От пользователя FGV
IN R17, ICR1H
IN R16, ICR1L
надо поменять местами

но я поменял их местами и заработало в железе с кнопкой! щас перепроверю с холлом.



Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
...
0
0хCB
11:49, 26.07.2011
>Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ
>СИМУЛЯТОРУ В AVRSTUDIO

эт зря, лучше внимательно читать даташиты :-) ну а симулятор хоть тресни всех тонкостей поведения железяки не отразит никогда.
0
timsa™
18:32, 26.07.2011
От пользователя FGV
внимательно читать даташиты


я думаю без долгого опыта, набранного на подобных ошибках, чтение даташитов ничего не стоит.

к тому же увидеть и понять все нюансы сходу невозможно. особенно когда в симуляторе всё работает...

p.s. увеличивая диапазон отображения скорости, столкнулся с ограничением дальности бранчей. пользуясь случаем разобрался с индексными регистрами и сделал очень изящное сравнение с таблицей.
это мне еще сто раз пригодится :-)
0
Авторизуйтесь, чтобы принять участие в дискуссии.