Перейти к содержимому

Фото
- - - - -

Pic16


  • Вы не можете создать новую тему
  • Please log in to reply
2 ответов в этой теме

#1 Hofnar

Hofnar
  • Пользователь
  • 346 сообщений

Отправлено 11 июня 2013 - 20:13

Решил недавно написать программу для PIC16F684 в MikroC создаюшую синусоидальную ШИМ, но сталкнулся с проблемой "There is not enough ROM space".
Посоветуйте, как правильно распределить память. Чтоб компилятор не пытался записать программу на один 2кб лист.
  • 0

#2 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 11 июня 2013 - 20:49

Требовать, чтобы 8-ми битный контроллер рассчитал синус в режиме реального времени в оперативе крайне не разумно. Применяй таблицы. Пусть математика ложится на плечи компилятора. На восьмибитниках с таким объемом памяти даже умножение байта на байт может быть проблемой. Его поле деятельности - ногодрыг, простые интерфейсы.
Синусовых таблиц на просторах море. Можно готовую прилепить в виде константного массива, который расположится во флеши. Для точности в 1 градус достаточно хранить всего 360/4=90 байт, если разрешение 8 бит устроит.

Сообщение изменено: Вырвиглаз (11 июня 2013 - 20:50 )

  • 1
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.

#3 Sergio

Sergio
  • Постоялец
  • 3 051 сообщений

Отправлено 12 июня 2013 - 08:01

Да, у этих ПИКов даже аппаратного умножения нет. Т.е. вычисление синуса через ряд Тейлора - дохлый номер.
Почему, кстати, именно этот МК? Может имеет смысл на PIC18 смотреть? Они не намного дороже.
  • 0