реклама на сайте
подробности

 
 
> Помогите пожалуйста..., с указателями!
HCHUNTER
сообщение Dec 29 2007, 18:41
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 29-12-07
Пользователь №: 33 732



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

Ситуация заключается в следующем.
Контроллер AVR Mega8, среда разработки CVAVR.
Имею 2 больших массива, размещенных во FLASH
const char symbol[3072]={...,...,... ... ... } //закодированные символы, 256 штук размером 8х12
const char str_array[44*27] = {...,...,... ... ... } //символьная строка для вывода в порт
...
//определяю 2 указателя для работы с этими массивами (чтобы работать с ними с максимальной скоростью)
const char * _ptr;
const char * _ptr1;

...

//далее в коде пишу
_ptr = &str_array[ххх]; //установить указатель в позицию ххх одного массива
_ptr1 = &symbol[ууу]; //установить указатель в позицию ууу второго массива


SPDR = *_ptr1 + (*_ptr*12); //здесь идет обращение к большому массиву через маленький, чтобы выбрать нужный байт


В итоге в порт выводится не то что нужно. Левак.
Чувствую, что работа с указателями у меня неверная в последней строчке написана ерунда. То есть в SPRD выводится совершенно не тот байт, что мне нужен.
Или может где-то можно по-русски почитать про указатели применительно к CVAVR ?




Совершенно аналогичное решение вопроса в WinAVR записано так:

SPDR = PRG_RDB(_ptr1 + (* _ptr++)*12);

На сколько я понимаю, эта функция позволяет считать байт по адресу в памяти, указанному суммой указателей. А как это же правильно записать в CVAVR ?

05.gif




---------------------------

Сам задал вопрос, сам видимо и отвечаю... yeah.gif

Вот такая должна быть запись в CVAVR:

SPDR = *(_ptr1 + (* _ptr++)*12);

Непосредственно результат по указателю возвращается так: *(указатель) .
соответственно, моя ошибка была в том, что я неверно взял в скобки разные части выражения.

Никто ничего не добавит к моим умозаключениям...? 05.gif

Сообщение отредактировал HCHUNTER - Dec 29 2007, 18:44
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01291 секунд с 7
ELECTRONIX ©2004-2016