Разное и полезное > Микроконтроллеры и их программирование
перевести с ардуиновского на русский
(1/1)
lgedmitry:
Опять в трёх соснах заблудился. Пытаюсь перевести библиотеку от ардуиновского быстрого преобразования Фурье в язык, понятный CCS6.
Какая-то загвоздка с типами данных вышла - не могу понять.
Выкладываю скриншот, а также исходные arduino и мои исправленные MSP430 архивы с прогой. Помогите, плиз, братцы ;-[
(Извините, но у Вас нет доступа в Галерею)
(Извините, но у Вас нет доступа в Галерею)
(Извините, но у Вас нет доступа в Галерею)
cu6apum:
Преобразование типов. Указателю на char нельзя присвоить значение char.
1. char c ='c';
2. char *p = &c;
blindman:
Тут дело в том, как компилятор avr-gcc работает c данными, размещенными в флэш-памяти. Хотя атрибут PROGMEM и говорит, что массив Sinewave размещается в флэш, компилятор непосредственно не может обращаться к элементам такого массива. Поэтому используется семейство функций pgm_read_*, которые в качестве аргумента принимают адрес во флэше. На самом деле это макроопределения, а не функции, но не суть важно. Компилятор для MSP430 может обращаться к константным данным непосредственно, для него надо писать так же, как если бы данные были в обычном массиве
AVR:
wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);
MSP430:
wr = Sinewave[j+N_WAVE/4];
lgedmitry:
--- Цитата: blindman от 29 Апреля 2014, 02:36:23 ---AVR:
wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);
MSP430:
wr = Sinewave[j+N_WAVE/4];
--- Конец цитаты ---
Так и сделал и там и там. Скомпилировалось :yah:
Спасиб, Андрей :fr:
Навигация
Перейти к полной версии