Разное и полезное > Микроконтроллеры и их программирование

перевести с ардуиновского на русский

(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:

Навигация

[0] Главная страница сообщений

Перейти к полной версии