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

 
 
> WinAVR организация данных, Вопросы начинающего
Dim_ON
сообщение Jan 2 2008, 11:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 28-09-07
Пользователь №: 30 914



Недавно начал учиться программировать МК AVR семейство Mega, для этого использую WinAVR 20071221, тестирую в Proteuse 7 SP2. В чем собственно непонядки:
Проблемы с массивами:
Код
const unsigned char TabKey[4][4]  PROGMEM = \
       {{ '1', '2', '3', CTRL0 },\
        { '4', '5', '6', CTRL1 },\
        { '7', '8', '9', CTRL2 },\
        { '*', '0', '#', CTRL3 }};
//или
const u08  Tab[16] PROGMEM = \
{  33, 0xFA, 16, CTRL0, \
   48, 0xF9, 18, CTRL1, \
   56, 0xF8, 13, CTRL2, \
   69, 0xF7, 28, CTRL3 \
    };
//использую внешний индекс
extern u08             LastKey;
//но возращаются левые выборки
LastKey = Tab[LastKey]; //лажа

Объясните плиз использование static, extern, volatile переменных, функций. В каких случаях лучше объявить extern переменную, а где лучше использовать функцию возращающую значение static переменной. Про volatile я вообще ниче не знаю 05.gif
С массивами тоже туго... Что лучше, использовать одномерный массив или при необходимости можно создавать несколько размерностей. Как правильно их объявлять и определять, как обращаться к элементам массива. Операции с массивами: логические, арифметические, сортировка...
Структуры(struct)...Объявление, определение, битовые поля, использование массива в структуре и использование массива структур
Объединения(union)...
Перечесления(enum)...
Динамическое выделение памяти...malloc...free
Объявление и определение переменных внутри операторов... for(u08 i = 0; i < 10; i++){}
Перегрузка функций
Шаблоны функций

PS Хочется услышать советы бывалых при использовании тех или инных типов данных
PSS Хочется разобраться как организуется тот или иной тип на аппаратном уровне, что бы корректно использовать
PSSS Сильно не ругайтесь если это все 1000 раз обсуждалось, просто захотелось собрать все в одном месте, можно ссылки если не хотите по 150 раз переписывать одно и тоже. Ссылки на литературу по теме приветствуются
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bloodden
сообщение Jan 2 2008, 11:46
Сообщение #2


Бывалый
***

Группа: Validating
Сообщений: 375
Регистрация: 19-10-05
Из: Kiev, UA
Пользователь №: 9 853



Вся проблема в том, что у АВР память программ и память данных находятся на разных шинах, соответственно и команды для чтения/записи будут разными (это если грубо, точнее в даташит). По-моему надо подключить pgmspace.h или что-то вроде этого. Там хранятся подпрограммы для работы с памятью программ.


--------------------
Заходите кому надо на мой сайт
Go to the top of the page
 
+Quote Post
Dim_ON
сообщение Jan 2 2008, 12:04
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 28-09-07
Пользователь №: 30 914



Цитата(bloodden @ Jan 2 2008, 15:46) *
По-моему надо подключить pgmspace.h или что-то вроде этого. Там хранятся подпрограммы для работы с памятью программ.

подключал
Код
#include <avr/pgmspace.h>
const u08 static IndTab[] PROGMEM = \
{0b11000000, 0b11111001, 0b10100100, 0b10110000, \
  0b10011001, 0b10010010, 0b10000010, 0b11011000, \
  0b10000000, 0b10010000 \
};
//попытка через макросы
#define Read_IndCode(adata)     pgm_read_byte(&IndTab[adata])
#define Write_IndCode(adata)    IND_PORT_DATA = adata


массивы нехотят у меня работать никак

Так забыл написать, в листенги пишет:
*ABS*:00000000 main.c
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:5 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:6 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:119 .text:00000000 main
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:356 .progmem.data:0000008d __c.1807
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:352 .progmem.data:00000075 __c.1809
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:348 .progmem.data:00000063 __c.1811
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:344 .progmem.data:0000005a __c.1813
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:340 .progmem.data:0000004a __c.1815
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:336 .progmem.data:00000037 __c.1817
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:332 .progmem.data:00000024 __c.1819
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:328 .progmem.data:00000010 __c.1821
C:\DOCUME~1\POPOV~1.HOM\LOCALS~1\Temp/ccAkJpIy.s:309 .progmem.data:00000000 Tab

это нормально? Мб в Makefile надо че дописать?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dim_ON   WinAVR организация данных   Jan 2 2008, 11:17
|- - Dim_ON   Микроконтроллеры AVR семейства MEGA имеют RISC (со...   Jan 2 2008, 13:34
|- - zltigo   Цитата(Dim_ON @ Jan 2 2008, 15:34) Не я п...   Jan 2 2008, 13:44
|- - Dim_ON   Цитата(zltigo @ Jan 2 2008, 17:44) Вот им...   Jan 2 2008, 14:13
|- - zltigo   Цитата(Dim_ON @ Jan 2 2008, 16:13) Давайт...   Jan 2 2008, 14:38
- - mdmitry   >PS Хочется услышать советы бывалых при использ...   Jan 2 2008, 13:10
- - 733259   Вам сначала руководство по C бы почитать, про масс...   Jan 2 2008, 13:38
- - Dmitry77   Приветики! С Новым Годом!!! Посмот...   Jan 2 2008, 14:56
|- - mdmitry   Цитата(Dmitry77 @ Jan 2 2008, 17:56) Прив...   Jan 2 2008, 18:09
|- - Dim_ON   Цитата(mdmitry @ Jan 2 2008, 21:09) В док...   Jan 2 2008, 19:28
|- - Сергей Борщ   Цитата(Dim_ON @ Jan 2 2008, 21:28) Еще во...   Jan 2 2008, 19:48
||- - Dim_ON   Цитата(Сергей Борщ @ Jan 2 2008, 22:48) Т...   Jan 2 2008, 19:56
||- - Dog Pawlowa   Цитата(Dim_ON @ Jan 2 2008, 23:56) ну нап...   Jan 2 2008, 21:47
||- - Dim_ON   Цитата(Dog Pawlowa @ Jan 3 2008, 00:47) П...   Jan 3 2008, 07:29
||- - Dog Pawlowa   Цитата(Dim_ON @ Jan 3 2008, 11:29) Для эт...   Jan 3 2008, 08:09
|||- - Dim_ON   Цитата(Dog Pawlowa @ Jan 3 2008, 11:09) e...   Jan 3 2008, 08:16
|||- - Dog Pawlowa   Цитата(Dim_ON @ Jan 3 2008, 12:16) Я прав...   Jan 3 2008, 09:12
|||- - Dim_ON   Цитата(Dog Pawlowa @ Jan 3 2008, 12:12) Н...   Jan 3 2008, 09:29
|||- - Dog Pawlowa   Цитата(Dim_ON @ Jan 3 2008, 13:29) Я знаю...   Jan 3 2008, 09:57
|||- - Dim_ON   Цитата(Dog Pawlowa @ Jan 3 2008, 12:57) У...   Jan 3 2008, 10:34
||- - Сергей Борщ   Цитата(Dim_ON @ Jan 3 2008, 09:29) Но впр...   Jan 3 2008, 10:41
||- - Dim_ON   Цитата(Сергей Борщ @ Jan 3 2008, 13:41) П...   Jan 3 2008, 10:55
|- - mdmitry   Цитата(Dim_ON @ Jan 2 2008, 22:28) А вот ...   Jan 2 2008, 22:38
- - vooon   скорее всего вы компилируете Си компилятором а не ...   Jan 3 2008, 11:25
|- - Dim_ON   Цитата(vooon @ Jan 3 2008, 14:25) скорее ...   Jan 3 2008, 11:37
||- - vooon   да, тогда будут доступны все возможности С++   Jan 3 2008, 11:56
|- - Сергей Борщ   Цитата(vooon @ Jan 3 2008, 13:25) наверня...   Jan 3 2008, 14:23
|- - mdmitry   Цитата(Сергей Борщ @ Jan 3 2008, 17:23) Д...   Jan 3 2008, 21:46
- - Dim_ON   Всем спасибо за подсказки Пока вроде вопросы з...   Jan 3 2008, 12:06
- - Dim_ON   Подскажите плиз Как в avr-gcc обращаться к младшем...   Jan 5 2008, 15:12
|- - Сергей Борщ   Цитата(Dim_ON @ Jan 5 2008, 17:12) Как в ...   Jan 5 2008, 17:13
|- - Dim_ON   Цитата(Сергей Борщ @ Jan 5 2008, 20:13) К...   Jan 5 2008, 17:18
|- - zltigo   Цитата(Сергей Борщ @ Jan 5 2008, 19:13) И...   Jan 5 2008, 18:41
|- - Сергей Борщ   Цитата(zltigo @ Jan 5 2008, 20:41) Ну а ...   Jan 5 2008, 19:03
|- - zltigo   Цитата(Сергей Борщ @ Jan 5 2008, 21:03) в...   Jan 5 2008, 19:57
|- - Сергей Борщ   Цитата(zltigo @ Jan 5 2008, 21:57) Не дол...   Jan 5 2008, 21:49
|- - zltigo   Цитата(Сергей Борщ @ Jan 5 2008, 23:49) н...   Jan 5 2008, 22:17
- - Dim_ON   Еще можно наверное вот так:Кодuint16_t KeyCod; uin...   Jan 5 2008, 18:43
- - Dim_ON   Еще возник вопрос: создаю в EEPROM-е массив структ...   Jan 6 2008, 10:31
- - Сергей Борщ   Цитата(Dim_ON @ Jan 6 2008, 12:31) eeprom...   Jan 6 2008, 12:47


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

 


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


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