Таймеры в at tiny2313
t
timsa™
15:20, 25.07.2011
скользящие средние или фильтр калмана
дяденька, я не настоящий сварщик!
если я воткну TLE4905 то всё заработает?
[Сообщение изменено пользователем 25.07.2011 15:21]
дяденька, я не настоящий сварщик!
если я воткну TLE4905 то всё заработает?
если я воткну TLE4905 то всё заработает?
а если переключать светодиод каждый раз, когда ICP срабатывает, оно правильно срабатывает?
и я не понял почему светодиоды обновляются
а после каждого дрыгания холлом порта ICP
по-идее они по таймеру должны обновляться (по переполнению, например).
t
timsa™
15:56, 25.07.2011
по-идее они по таймеру должны обновляться
обновляются по прерыванию захвата.
предполагается, что импульсы идут с периодичностью 0,6 - 6 секунд. каждый раз мы имеем в ICR1 длину и соответственно зажигаем нужное количество светодиодов.
а если переключать светодиод каждый раз, когда ICP срабатывает, оно правильно срабатывает?
счас попробую.
х
0хCB
16:06, 25.07.2011
>каждый раз мы имеем в ICR1 длину и соответственно зажигаем нужное количество светодиодов.
длину чего?
кстати подумалось тут насчет холла с его выходом в 1/2vdd. У 2313 есть аналоговый компаратор, выход которого может цеплятся к icp, тогда на одну ногу компараторв - холл на вторую - 1/4 (3/4) питашки
длину чего?
кстати подумалось тут насчет холла с его выходом в 1/2vdd. У 2313 есть аналоговый компаратор, выход которого может цеплятся к icp, тогда на одну ногу компараторв - холл на вторую - 1/4 (3/4) питашки
t
timsa™
16:16, 25.07.2011
счас попробую.
попробовал. дребезга нет
ну тогда я ваще ничего не понимаю.
предполагается, что импульсы идут с периодичностью 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
что какбе скорее всего не то, что нужно потому что не линейно.
t
timsa™
16:43, 25.07.2011
примерно так
ненене
для круглого счета ноль выкидываем (горят от одного до 10 светодиодов).
0,6 секунды = 100 об/мин = 10 светодиодов
6 секунд = 10об/мин = 1 светодиод
всё более чем линейно.
и это не обороты колеса, это обороты педалей. я каденс меряю.
попробовал. дребезга нет
отладку продолжаю. мне показалось что яркость какая-то разная у отладочного и других. походу дребезг таки есть.
0,6 секунды = 100 об/мин = 10 светодиодов
6 секунд = 10об/мин = 1 светодиод
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
что опять таки нифига не линейно.
кстати поменяй
на
и на дребезг тебе станет положить. тока прерывание обратно не включай пока с r16:17 не закончишь.
и еще перечитай как работать с 16-битными регистрами. кажись ты неправильно их готовишь (там вроде чтение и запись в разных порядках надо делать, хотя могу и путать).
[Сообщение изменено пользователем 25.07.2011 17:25]
Исходник: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]
t
timsa™
17:31, 25.07.2011
в оборотах: 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?
кстати поменяй
нет смысла. при переходе по прерыванию захвата в ICR УЖЕ есть значение. туда копируется TCR ПЕРЕД переходом на прерывание.
во всяком случае в отладчике так.
и порядок загрузки 16битных логичный: читаем/пишем сначала старшее, потом младшее.
t
timsa™
17:35, 25.07.2011
нет смысла
проверил. нет смысла.
не понимаю, откуда эти жуткие дроби?
разве не 0.6, 1.2, 1.8, 2.4, 3.0, 3.6, 4.2, 4.8, 5.4, 6.0?
разве не 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 об/мин |
нет смысла. при переходе по прерыванию захвата в ICR УЖЕ есть значение. туда копируется TCR ПЕРЕД переходом на прерывание.
если после обнуления TCR сработает ICP то прерывания не будет (так как заблокированно) но ICR обнулится разве не? хотя да, поскольку обнуление/чтение рядом вряд ли это проблема.
х
0хCB
18:48, 25.07.2011
тьфу ты блин. в опере мини сайт е1 коряво отображается, половину исходника невидно :-)
здесь:
OUT TCNT1H, R16
OUT TCNT1L, R16
правильно, а тут:
IN R17, ICR1H
IN R16, ICR1L
надо поменять местами, читают сначала мл. потом старший, может по этому маленькие значения вылазят
здесь:
OUT TCNT1H, R16
OUT TCNT1L, R16
правильно, а тут:
IN R17, ICR1H
IN R16, ICR1L
надо поменять местами, читают сначала мл. потом старший, может по этому маленькие значения вылазят
надо поменять местами, читают сначала мл. потом старший, может по этому маленькие значения вылазят
[подымая палец вверх] а я ведь говорил, перечитай!
и порядок
загрузки 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
t
timsa™
11:27, 26.07.2011
в симуляторе всё работало идеально и так
но я поменял их местами и заработало в железе с кнопкой! щас перепроверю с холлом.
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
...
IN R17, ICR1H
IN R16, ICR1L
надо поменять местами
IN R16, ICR1L
надо поменять местами
но я поменял их местами и заработало в железе с кнопкой! щас перепроверю с холлом.
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ СИМУЛЯТОРУ В AVRSTUDIO
...
х
0хCB
11:49, 26.07.2011
>Я НИКОГДА НЕ БУДУ ДОВЕРЯТЬ
>СИМУЛЯТОРУ В AVRSTUDIO
эт зря, лучше внимательно читать даташиты :-) ну а симулятор хоть тресни всех тонкостей поведения железяки не отразит никогда.
>СИМУЛЯТОРУ В AVRSTUDIO
эт зря, лучше внимательно читать даташиты :-) ну а симулятор хоть тресни всех тонкостей поведения железяки не отразит никогда.
t
timsa™
18:32, 26.07.2011
внимательно читать даташиты
я думаю без долгого опыта, набранного на подобных ошибках, чтение даташитов ничего не стоит.
к тому же увидеть и понять все нюансы сходу невозможно. особенно когда в симуляторе всё работает...
p.s. увеличивая диапазон отображения скорости, столкнулся с ограничением дальности бранчей. пользуясь случаем разобрался с индексными регистрами и сделал очень изящное сравнение с таблицей.
это мне еще сто раз пригодится :-)
Авторизуйтесь, чтобы принять участие в дискуссии.