Перейти к содержанию
    

разностные уравнения на LPC2148

Да блин...

 

Мы говорим о квантовании в 10 мс или в "примерно 20 секунд" ?

хм, 20 секунд убрать нельзя - ТАУ не позволяет (задание такое, что 20 секунд никуда не денешь), но и в уравнениях заложен такт квантования 0,01

не знаю...что Вы предлагаете ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предлагаю изучить матчасть.

можно даже в википедию заглянуть

хитро, спасибо)

 

еще вопрос для общего развития: как на Си задержки правильно делать? Допустим 1 секунду, на том же контроллере

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На таймере, всё на таймере.

 

Это и Си, и ассемблер, и всё-что-угодно.

Задержки типа "тупой цикл" можно делать только для проверки (программа "подёргать ножкой", для проверки живости вывода) или для коротких задержек, которым некритичны небольшие отклонения.

 

Вот, например. Там, правда, смесь STMа c LPC, но принцип (целых два!) видно.

http://electronix.ru/forum/index.php?showtopic=99675

 

Если использовать просто циклы (даже написанные на ассемблере, для исключения влияния компилятора), результат никто не гарантирует. Прерывание в середину влезет, например.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На таймере, всё на таймере.

 

Это и Си, и ассемблер, и всё-что-угодно.

Задержки типа "тупой цикл" можно делать только для проверки (программа "подёргать ножкой", для проверки живости вывода) или для коротких задержек, которым некритичны небольшие отклонения.

 

Вот, например. Там, правда, смесь STMа c LPC, но принцип (целых два!) видно.

http://electronix.ru/forum/index.php?showtopic=99675

 

Если использовать просто циклы (даже написанные на ассемблере, для исключения влияния компилятора), результат никто не гарантирует. Прерывание в середину влезет, например.

понятно, еще вопрос: где можно найти полный список команд на Си для LРС ? Я поискал - ассемблера выше крыши, а на Си одни обрывки. Или это просто от компилятора зависит ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

значит от компилятора))) :rolleyes:

значит, руководство по С

читаем "Керниган, Ричи. Язык C", гуглится сразу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то "список команд на Си" придуман задолго до появления LPC и описан в любом учебнике по Си.

 

Есть маааленькие расширения языка (дополнительные функции, прагмы и прочие служебные слова). Это в первую очередь зависит от компилятора. Однако для простоты можно про них не думать.

 

Работать лень, загнал в Кейл вышеприведённый пример.

Рекомендую повторить, очень полезно - у кейла (демоверсия - бесплатно) более-менее работоспособный симулятор и удобные окошки с галками для просмотра периферии (да, они с "побочными эффектами", но для первоначального ознакомления пойдёт).

 

Так вот:

- АЦП неработоспособно (два канала при ручном запуске выбирать нельзя, надо каждый раз заново устанавливать)

- таймер неработоспособен (неправильно выбран режим)

- несколько мелких опечаток в именах регистров

 

А всё остальное работает. Я сделал маленькое открытие - зря я боялся float'ов, на 32-битниках они довольно шустро обсчитываются. Просто я в своих проектах медленно и мучительно переводил всё в fixed-point, пересчитывая все коэффициенты.

Десяток сложений и десяток умножений - это около 600 тактов. Терпимо...

 

Да, и ещё. У 2148 32 килобайта памяти (+ 8 килобайт "сбоку"), туда никак не влезет 20000 запомненных значений.

Разве что ограничить точность одним байтом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

значит, руководство по С

читаем "Керниган, Ричи. Язык C", гуглится сразу

основы я немного знаю, на 1м курсе С++ был

мне бы про манипуляции с АЦП/ЦАП/таймером/портами

юзермануал и даташит есть но там про Си нет ничего

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

основы я немного знаю, на 1м курсе С++ был

мне бы про манипуляции с АЦП/ЦАП/таймером/портами

юзермануал и даташит есть но там про Си нет ничего

и не будет :)

в даташите рассказано, какие есть регистры управления периферией, какие биты в них за что отвечают. На какой языке вы будете записывать в эти регистры нужные значения - даташиту по барабану.

 

Допустим, имеем LPC2148

 

Нам нужно настроить пин контроллера как AD0.7

 

Лезем в даташит. Пин с функцией AD0.7 есть 29, пятый бит порта 0 (P0.5). Смотрим регистр, отвечающий за функцию пина P0.5 -- PINSEL0

Для этого регистра занесение в биты 11:10 значения 11 как раз настроит функцию пина 29 контроллера как AD0.7

 

Как записать это на С?

 

// Сбросим эти биты в 0

PINSEL0 &= ~(3UL<<10);

// и установим в 11

PINSEL0 |= (3UL<<10);

 

Все, пин 29, он же P0.5 стал AD0.7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и не будет :)

в даташите рассказано, какие есть регистры управления периферией, какие биты в них за что отвечают. На какой языке вы будете записывать в эти регистры нужные значения - даташиту по барабану.

 

Допустим, имеем LPC2148

 

Нам нужно настроить пин контроллера как AD0.7

 

Лезем в даташит. Пин с функцией AD0.7 есть 29, пятый бит порта 0 (P0.5). Смотрим регистр, отвечающий за функцию пина P0.5 -- PINSEL0

Для этого регистра занесение в биты 11:10 значения 11 как раз настроит функцию пина 29 контроллера как AD0.7

 

Как записать это на С?

 

// Сбросим эти биты в 0

PINSEL0 &= ~(3UL<<10);

// и установим в 11

PINSEL0 |= (3UL<<10);

 

Все, пин 29, он же P0.5 стал AD0.7

где про такие команды можно почитать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Волшебные буквы |= &= ~ << UL (и прочие) должны быть описаны в любом справочнике по языку Си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Волшебные буквы |= &= ~ << UL (и прочие) должны быть описаны в любом справочнике по языку Си.

отлично, спасибо))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...