Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.02.2008, 19:45
|
#21
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
|
|
|
|
07.02.2008, 20:35
|
#22
|
Почётный гражданин KAZUS.RU
Регистрация: 28.12.2007
Сообщений: 1,699
Сказал спасибо: 9
Сказали Спасибо 149 раз(а) в 128 сообщении(ях)
|
kison, Я твою прогу залил, да, все работает, маленькая погрешность -- светодиод почти секунду горит и почти секунду не горит. Часы получились бы не точные ![Весело](images/smilies/icon_laugh.gif)
Но если поставить I‹7 а задержку 150(это даже за типа разрешенные 192 не выходит, хотя хз) то светодиод моргае приблизительно в два раза быстрее, но 7*150=1050 а 20*50=1000. Моежшь у себя проверить, будет ли у тебя тот же результат?
|
|
|
|
07.02.2008, 20:46
|
#23
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от soladko
|
kison, Я твою прогу залил, да, все работает, маленькая погрешность -- светодиод почти секунду горит и почти секунду не горит. Часы получились бы не точные ![Весело](images/smilies/icon_laugh.gif)
Но если поставить I‹7 а задержку 150(это даже за типа разрешенные 192 не выходит, хотя хз) то светодиод моргае приблизительно в два раза быстрее, но 7*150=1050 а 20*50=1000. Моежшь у себя проверить, будет ли у тебя тот же результат?
|
Часы???? 8O 8O
У себя проверю, а насчет пределов - я уже поправился.
Код:
|
The maximal possible delay is 262.14 ms / F_CPU in MHz. |
Т.е. около 60мС. А 192 это для микросекундных задержек при 4МГц.
У себя могу только в студии смотреть, иначе дома мерять время нечем.
Итого - между изменениями проходит 1000025,5 микросекунды. Для часов не подойдет, а так - довольно точно.
|
|
|
|
07.02.2008, 21:07
|
#24
|
Почётный гражданин KAZUS.RU
Регистрация: 28.12.2007
Сообщений: 1,699
Сказал спасибо: 9
Сказали Спасибо 149 раз(а) в 128 сообщении(ях)
|
Да, проблема была в невнимательном чтении даташита, ставил и=250 а задержку 4 и тоже было все правильно, чего же оно не ругается, когда видит, что значения запредельные вводятся....
Я не могу скачать с той ссылки винавр, можешь на почту бросить, если не сложно? Soladko@rambler.ru
|
|
|
|
07.02.2008, 21:10
|
#25
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от soladko
|
Я не могу скачать с той ссылки винавр, можешь на почту бросить, если не сложно? Soladko@rambler.ru
|
Я то могу, но размер 25 метров, нормально? А почему не скачивается?
|
|
|
|
07.02.2008, 21:21
|
#26
|
Почётный гражданин KAZUS.RU
Регистрация: 28.12.2007
Сообщений: 1,699
Сказал спасибо: 9
Сказали Спасибо 149 раз(а) в 128 сообщении(ях)
|
Thank you for downloading WinAVR.
Your download should begin shortly. If you are experiencing problems with the download please use this direct link
Но ничего не качается, сколько ни жди. Если рамблеровский ящик может принять 25 то без проблем, я на работе у меня на шару.
|
|
|
|
07.02.2008, 21:24
|
#27
|
Почётный гражданин KAZUS.RU
Регистрация: 28.12.2007
Сообщений: 1,699
Сказал спасибо: 9
Сказали Спасибо 149 раз(а) в 128 сообщении(ях)
|
Извини, я чуть протупил, уже качается ![Смущение](images/smilies/icon_redface.gif) Спасиб!
|
|
|
|
08.02.2008, 18:45
|
#28
|
Почётный гражданин KAZUS.RU
Регистрация: 28.12.2007
Сообщений: 1,699
Сказал спасибо: 9
Сказали Спасибо 149 раз(а) в 128 сообщении(ях)
|
Сегодня прикалывался и решил в той проге, где задержки в цикле, вместо фиксированой задержки переменную I подставить....и получил код почти 6 кб, и это при двух всего цыклах!!!! А мой больше 2 не тянет....Эт получается напишу прогу, и так может быть, что придется многоногого контроллера с большой памятью брать (((
|
|
|
|
09.02.2008, 10:51
|
#29
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Это значит, что инструмент - одно, а его пользующий - другое ...
Когда Вы вызываете функцию задержки с константой, то компилятор собирает компактный код именно для этой задержки ... если же ставить туда переменную, то компилятор не знает, что стукнет в кремний проца ... вот и вкладывает в память код на все случаи жизни.
Если Вам необходимы плавающие задержки - используйте таймеры.
|
|
|
|
09.02.2008, 17:59
|
#30
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Все не так плохо.
Код:
|
void DelayMs(uint16_t _del)
{
while(_del--) _delay_ms(1);
} |
Задержка до ~65 секунд... И экономия памяти - _delay_ms inline функция, включается в код полность при каждом вызове. И еще - функции задержки получают аргумент в виде float, так что при переменном аргументе задействуются вычисления с плавающей точкой. Отсюда и размер.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:03.
|
|