Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: DAlexV, ivan_fd  
delayus в рыбе
demanik Дата: Вт, 16.02.2010, 11:58  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Начал осваивать рыбу.
Возникли вопросы по функции "delayus" нигде в хелпе не встретил минимальное время задержки при разных тактовых частотах.
Наверняка есть ограничения на минимальное значение при разных частотах.
Может кто подскажет. cool

P.S. Думаю скоро еще будут и другие вопросы. Компилятор в целом неплохой и интересный.


Попробуй всё и вся... может быть пол...

ЯНДЕКС Дата: 16.02.2010
DAlexV Дата: Вт, 16.02.2010, 19:40  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (demanik)
Наверняка есть ограничения на минимальное значение при разных частотах.

Да нет Николай !!!! Не зависимо от частоты сколко поставил столько и будет. Если конечно не 1гц smile
Вот скопированое из хелпа:

DelayUS
sub delayus(expression as word)

The delayus subroutine suspends program execution for up to 65535 microseconds (μs). For example,

delayus(100) // delay 100 μs
delayus(Value) // delay Value μs
delayus(Value * 2) // delay Value * 2 μs

Перевод думаю не нужен. Это же относиться и к процедуре DelayMS().

Рад приветствовать в наших рядах !!!! Будут вопросы, не стесняемся, задаем. good


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
demanik Дата: Вт, 16.02.2010, 22:09  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (DAlexV)
Вот скопированое из хелпа

Я это тоже видел но не поверил. Сейчас попробую на живом камне.


Попробуй всё и вся... может быть пол...

demanik Дата: Вт, 16.02.2010, 22:18  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

При частоте 4мгц DELAYUS(1) дает задержку 3мкс
а при частоте 8мгц DELAYUS(1) дает задержку 2мкс

Отлично получается почти от нуля. На других компиляторах есть ограничения на минимальное время, приходилось ставить асмовские вставки для коротких задержек.
happy


Попробуй всё и вся... может быть пол...


Сообщение отредактировал demanik - Вт, 16.02.2010, 22:21
DAlexV Дата: Вт, 16.02.2010, 23:01  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (demanik)
При частоте 4мгц DELAYUS(1) дает задержку 3мкс а при частоте 8мгц DELAYUS(1) дает задержку 2мкс

Прошу прощения, не до конца понял вопрос. Не стоит забывать про скорость выполнения машинного цикла которое напрямую зависит от частоты кварца. Чем меньше частота тем дольше цикл. Если вставить да же оператор NOP (ASM) время прохождения напрямую зависит от частоты. Наглядный пример с USART. Скорость 57600 на частоте в 4MHZ не получить.

P/s А так как 18 линейка 20MHZ держит спокойно, что такое 4 и 8MHZ уже забыл.


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
demanik Дата: Вт, 16.02.2010, 23:36  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (DAlexV)
А так как 18 линейка 20MHZ держит спокойно, что такое 4 и 8MHZ уже забыл

Я использую внутренний генератор изза нехватки свободных портов, а он 8MHZ максимум.


Попробуй всё и вся... может быть пол...

DAlexV Дата: Вт, 16.02.2010, 23:55  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (demanik)
Я использую внутренний генератор изза нехватки свободных портов

Вопрос снимается.

P/s Роясь по библиотекам нашел очень интересную функцию

public inline sub Nop()
asm-
Nop
end asm
end sub

находиться в библиотеке system.bas

там же есть сброс сторожевого таймера
ClrWDT называется. Хотя в принципе во всех функциях она уже встроена.


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
demanik Дата: Вс, 07.03.2010, 14:09  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (demanik)
Я использую внутренний генератор изза нехватки свободных портов, а он 8MHZ максимум

Забыл еще есть 16 и 32MHZ при включении HPLL. cool


Попробуй всё и вся... может быть пол...


Сообщение отредактировал demanik - Вс, 07.03.2010, 14:11
  • Страница 1 из 1
  • 1
Поиск: