21.11.2012, 10:45
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
StopWatch в AVR Studio
Доброго времени суток!
Давно пользуюсь софтиной AVR Studio (сейчас версия 4.18 ) и в основном пишу на асме. Давно обращал внимание на несовпадение показания StopWatch в симуляторе с реальной работающим МК (отлаживая уже цифровым осциллографом), но в последний раз просто достало. Частоту кварца в симуляторе выставляю такую как на реальном МК. Совсем недавно отлаживал софтовый ШИМ, который должен давать частоту 38кГц, при отладке всё сходилось, в реале осциллограф показал почти 48кГц, это при частоте кварца 7.3728МГц. При работе этого куска кода никакие прерывания не работают (CLI), поэтому там проблемы быть не может.
Есть хотя подозрение, что при подсчете времени симулятор округляет микросекунды и в итоге ошибка накапливается.
Может кто сталкивался с этим ?
|
|
|
|
21.11.2012, 12:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: StopWatch в AVR Studio
Количество циклов в командах может отличаться для разных процов.
Например, для команды ld.
|
|
|
|
22.11.2012, 00:02
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: StopWatch в AVR Studio
Сообщение от black27512
|
Может кто сталкивался с этим ?
|
А зачем в таких вещах симулятор? Обычно считаешь и всё работает. Вы же таймер используете?
В эмуляторе не будет совпадать, так как в момент остановки процессора таймера продолжают жить своей жизнью. Это нормальное явление во всех процах. Обычно приходится вводить прибамбас программный, чтобы работать можно было с отладкой. А в симуляторе, я ни разу не замечал расхождений по времени исполнения.
|
|
|
|
22.11.2012, 01:00
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: StopWatch в AVR Studio
Сообщение от Boba_spb
|
Количество циклов в командах может отличаться для разных процов.
Например, для команды ld.
|
Речь не о циклах, а о времени выполнения и симулятор как бы и это должен учитывать, разве нет ?
|
|
|
|
22.11.2012, 01:05
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: StopWatch в AVR Studio
Сообщение от SasaVitebsk
|
А зачем в таких вещах симулятор? Обычно считаешь и всё работает. Вы же таймер используете?
В эмуляторе не будет совпадать, так как в момент остановки процессора таймера продолжают жить своей жизнью. Это нормальное явление во всех процах. Обычно приходится вводить прибамбас программный, чтобы работать можно было с отладкой. А в симуляторе, я ни разу не замечал расхождений по времени исполнения.
|
Еще раз повторюсь, я делал софтовый ШИМ без использования всякой переферии вообще, ни таймеров, ни прерываний, они заняты другими задачами, но прерывания на время этого цикла запрещаются. Так что именно несоотвествует время выполнения программы.
|
|
|
|
22.11.2012, 10:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,021
Сказал спасибо: 3,026
Сказали Спасибо 3,201 раз(а) в 2,172 сообщении(ях)
|
Re: StopWatch в AVR Studio
Ну давайте кусок кода и Ваши значения Stopwatch и циклов. Проверим, сравним...
|
|
|
|
22.11.2012, 10:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: StopWatch в AVR Studio
Сообщение от black27512
|
Речь не о циклах, а о времени выполнения и симулятор как бы и это должен учитывать, разве нет ?
|
Вот время и равно произведению числа циклов на время одного цикла.
А время одного цикла определяется частотой кварца.
Если симулятор считает циклы для одного процессора, а программа работает на другом, то времена будут разные.
|
|
|
|
22.11.2012, 14:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: StopWatch в AVR Studio
Сообщение от black27512
|
Может кто сталкивался с этим ?
|
Кладите код - будем посмотреть...
|
|
|
|
22.11.2012, 19:34
|
|
Временная регистрация
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: StopWatch в AVR Studio
Вот скриншот места события
Частота кварца такая как указана при симуляции, переменные сейчас методом тыка выставлены на 38 кГц и на выходе реальной железки столько и выходит. Но период 32.28мкс дает около 31 кГц, судя по сумуляции.
Вот код:
sbi PORTd,3 ;пачка (r17-длительность)
ldi r16,int_1
ww_1: dec r16
brne ww_1
cbi PORTd,3
ldi r16,int_0
ww_0: dec r16
brne ww_0
dec r17
brne rep11
ret
|
|
|
|
23.11.2012, 00:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: StopWatch в AVR Studio
Посчитано правильно.
7372,8 кГц / 238 тактов = 30,978151260504201680672268907563 кГц.
Проверяйте кварц.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:06.
|
|