16.08.2011, 14:11
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Примерно вот это я имел в виду. В железе еще не провеля. Хрен его знает, сколько это на асме команд займет. Подберу коэфициентом.
Код:
|
#define CPU_CLOCK 16000000
void delay_us(unsigned int us);
void delay_ms(unsigned short int ms);
void delay_s(unsigned char s);
void delay_us(unsigned int us)
{
unsigned int cycles=us*(CPU_CLOCK/3600000);
for(; cycles !=0; cycles--);
}
void delay_ms(unsigned short int ms)
{
unsigned int cycles=ms*(CPU_CLOCK/3600);
for(; cycles !=0; cycles--);
}
void delay_s(unsigned char s)
{
unsigned int cycles=s*(CPU_CLOCK/3.6);
for(; cycles !=0; cycles--);
} |
На счет прерываний. Каждое прерывние всегда надо сбрасывать, как в пиках. Есть какая-нибудь быстрая шпаргалка, какие регистры сбрасывать для каких прерываний. А то сами прерывания очень красиво описаны в старт-файле, а флаги, которые нужно сбрасывать, приходиться тащить с миру по нитке.
Последний раз редактировалось Easyrider83; 16.08.2011 в 17:43.
|
|
|
|
16.08.2011, 16:58
|
|
Гражданин KAZUS.RU
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от ^smbd^
|
Появилось время опять заняться этим вопросом.
А если без дма ? Если обрабатывать в прерывании? Он ведь после окончания каждого преобразования в очереди должен прерывания выдавать? Или только когда все отработает?
|
Я так не пробовал, в даташите вроде упоминается что прерывание будет только после последнего преобразования. Может быть, если отключить флаг ADC_CR1_SCAN, тогда прерывание будет выдаваться каждый раз. Но я не пробовал. Я делал зауск преобразования вручную по таймеру, на 1 канал, - работает.
|
|
|
|
16.08.2011, 17:01
|
|
Гражданин KAZUS.RU
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
Вы сразу ссылочку прикрепляйте, чтобы понятнее было.
|
В элитане поиск по STM32F100R4
Вот
http://www.elitan.ru/price/index.php...nd=STM32F100R4
|
|
|
|
16.08.2011, 17:31
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
tanq, не, такая ценовая политика мне не нравится. Ну их в баню.
|
|
|
|
16.08.2011, 17:39
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
zheleznjakov, у вас аргументом функции является количество циклов. Это у меня тоже есть. А мне надо, чтобы там фигурировала контсанта тактовой частоты. Чтобы компилятор сам пересчитывал, сколько тактов требуется, чтобы отработать определенное время. Сегодня до работы доберусь, сам накидаю. Задефайним константу, а дальше математика. Как известно, математику с константами считает компилятор, а не контроллер.
|
Ой, код не мой. Простой копи-паст, источник я указал.
Такие штуки я не использую, потому что в программе практически всегда есть прерывания, а они увеличивают "такие" задержки, поэтому я использую таймер для этого дела.
__________________
ziblog.ru
|
|
|
|
16.08.2011, 17:42
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
zheleznjakov, да я тоже уже понял. От степени оптимизации время исполнения поплыло. Надо на асме писать. В общем-то, тот мой код "почти работает". Т.е. работает нормально, но паузы не точные. Там, где время критично, на них лучше не полагаться.
|
|
|
|
16.08.2011, 18:01
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Получается вы не используете прерывания в коде? или за чем вам такие паузы?
__________________
ziblog.ru
|
|
|
|
16.08.2011, 18:36
|
|
Заблокирован
Регистрация: 01.10.2008
Сообщений: 8
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Кто знает, почему STM32L-Discovery может не шить через разьем SWD?
Пытаюсь прошить STM32F103VG ST-Link утилитой, читает нормально, можно поменять биты конфигурации но не шьет флеш.
Помогите кто знает в чем проблема.
|
|
|
|
16.08.2011, 18:50
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от zheleznjakov
|
Получается вы не используете прерывания в коде? или за чем вам такие паузы?
|
Да нет же. С прерываниями все просто. Паузы нужны в любом случае. Не всегда же заряжать тяжелую артилерию. Ининиализируете чип. Опустили CS. По даташиту нужно ждать 4мс. Зачем ради этого таймер запускать? Проще циклами подождать.
|
|
|
|
16.08.2011, 19:10
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
Да нет же. С прерываниями все просто. Паузы нужны в любом случае. Не всегда же заряжать тяжелую артилерию. Ининиализируете чип. Опустили CS. По даташиту нужно ждать 4мс. Зачем ради этого таймер запускать? Проще циклами подождать.
|
Раньше то же так думал, но сейчас с хорошей начинкой мк и постоянной борьбой за потребление стараюсь по больше спать и по меньше считать
__________________
ziblog.ru
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:24.
|
|