Отговори на тема  [ 7 мнения ] 
"Масивен" проблем 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 22, 2007 3:04 pm
Мнения: 48
Мнение "Масивен" проблем
Здравейте,

Та значи, управлявам 7-сегментни дисплеи с ATTiny26, използвам avr-gcc. В хедър съм дефинирал:
Код:
#define   SEG_a   0x01
#define   SEG_b   0x02
#define   SEG_c   0x04
#define   SEG_d   0x08
#define   SEG_e   0x10
#define   SEG_f   0x20
#define   SEG_g   0x40
#define   SEG_DOT  0x80

#define   CHAR_0   0xff - (SEG_a+SEG_b+SEG_c+SEG_d+SEG_e+SEG_f      )
#define   CHAR_1   0xff - (      SEG_b+SEG_c                        )
#define   CHAR_2   0xff - (SEG_a+SEG_b+      SEG_d+SEG_e+      SEG_g)
#define   CHAR_3   0xff - (SEG_a+SEG_b+SEG_c+SEG_d+            SEG_g)
#define   CHAR_4   0xff - (      SEG_b+SEG_c+            SEG_f+SEG_g)
#define   CHAR_5   0xff - (SEG_a+      SEG_c+SEG_d+      SEG_f+SEG_g)
#define   CHAR_6   0xff - (SEG_a+      SEG_c+SEG_d+SEG_e+SEG_f+SEG_g)
#define   CHAR_7   0xff - (SEG_a+SEG_b+SEG_c                        )
#define   CHAR_8   0xff - (SEG_a+SEG_b+SEG_c+SEG_d+SEG_e+SEG_f+SEG_g)
#define   CHAR_9   0xff - (SEG_a+SEG_b+SEG_c+SEG_d+      SEG_f+SEG_g)
#define   CHAR_A   0xff - (SEG_a+SEG_b+SEG_c+     +SEG_e+SEG_f+SEG_g)
#define   CHAR_B   0xff - (            SEG_c+SEG_d+SEG_e+SEG_f+SEG_g)
#define   CHAR_C   0xff - (SEG_a+            SEG_d+SEG_e+SEG_f      )
#define   CHAR_D   0xff - (      SEG_b+SEG_c+SEG_d+SEG_e+      SEG_g)
#define   CHAR_E   0xff - (SEG_a+            SEG_d+SEG_e+SEG_f+SEG_g)
#define   CHAR_F   0xff - (SEG_a+                  SEG_e+SEG_f+SEG_g)


В главния файл дефинирам масив inline:
Код:
unsigned char digits[16] = {
   CHAR_0, CHAR_1,   CHAR_2,   CHAR_3,   CHAR_4,   CHAR_5,
   CHAR_6,   CHAR_7,   CHAR_8,   CHAR_9,   CHAR_A,   CHAR_B,
   CHAR_C,   CHAR_D,   CHAR_E,   CHAR_F };


И сега, всеки път като се опитам да използвам стойност от масива получавам 0xFF. Това се вижда на дисплеите (т.е. нищо не се вижда, щото са актив-лоу). За да съм по сигурен пратих данните по RS232, пак получих 16 пъти 255.

Вероятно е нещо адски елементарно, ама доста време се главоблъскам вече. Със сигурност тук има хора, които са се сблъсквали с това. Добри хора, помогнете!


Последна промяна lz3060 на Сря Сеп 26, 2007 6:04 pm, променена общо 1 път



Вто Сеп 25, 2007 3:26 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Пробвай:

#define CHAR_0 (0xff - (SEG_a+SEG_b+SEG_c+SEG_d+SEG_e+SEG_f ) )
....


Вто Сеп 25, 2007 9:34 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 22, 2007 3:04 pm
Мнения: 48
Мнение 
Тц.

Пробвах всичко за което се сетих, включително
Код:
unsigned char digits[16] = {
   192, 249, 164, 176,
   153, 146, 130, 248,
   128, 144, 136, 131,
   198, 161, 134, 142 };


Пак получавам само 0xff. Интересното е, че дори това:
Код:
unsigned char aString[3] = "bla";


Дава същия резултат. Някаква особеност на компилатора/библиотеката?!


Вто Сеп 25, 2007 10:15 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
Не ти се инициализират променливите. Не съм работил с avr-gcc, но изглежда имаш проблем с .data секцията. Или не се линква правилно или не се копира в RAM-а при стартиране на програмата.
А digits[16] трябва ли да е променлива? Защо не я обявиш като const?

_________________
Най-опасният враг на истината и свободата е мнозинството.


Вто Сеп 25, 2007 12:37 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Пон Яну 09, 2006 11:32 am
Мнения: 276
Местоположение: Kozloduy
Мнение 
и аз не съм запознат в детайли с avr-gcc но проблема е в него, пробвах го на cvavr и си е ОК


Вто Сеп 25, 2007 1:02 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Авг 22, 2007 3:04 pm
Мнения: 48
Мнение 
Zdrav, прав си. Използвам темплейтен Makefile, рипнат някъде от нета. Много съм нов още в тези материи, изобщо не съм се загледал:
Код:
PROJECT = sandbox
TARGET = attiny26
CC = avr-gcc
OBJCOPY = avr-objcopy
CFLAGS = -mmcu=$(TARGET) -O2 -Wall $(DEBUG)
INCLUDES = -I.
SRC = $(PROJECT).c
OBJ = $(SRC:.c=.o)
ADUDE_OPTS = -c stk200 -P /dev/parport0 -p t26 -y

# "-c" means compile but don't link
.c.o:
        $(RM) $@
        $(CC) -c $(CFLAGS) $(INCLUDES) $*.c

# Targets...

all: $(OBJ)

hex: $(PROJECT).hex

bin: clean $(PROJECT).bin

$(PROJECT).hex: $(PROJECT).elf
        $(OBJCOPY) -j .text -O ihex $(PROJECT).elf $(PROJECT).hex

$(PROJECT).bin: $(PROJECT).elf
        $(OBJCOPY) -j .text -O binary $(PROJECT).elf $(PROJECT).bin

$(PROJECT).elf: $(OBJ)
        $(CC) $(CFLAGS) -o $(PROJECT).elf -Wl,-Map,$(PROJECT).map $(OBJ)

simulate: $(PROJECT).bin
        simulavr -d atmega16 -P simulavr-disp $(PROJECT).bin

upload: $(PROJECT).hex
        avrdude $(ADUDE_OPTS) -U flash:w:$(PROJECT).hex:i

clean:
        rm -f *.o *.elf *.map *.hex *.bin $(PROJECT)

.PHONY: clean


И по-точно, bin таргета:
Код:
$(PROJECT).bin: $(PROJECT).elf
        $(OBJCOPY) -j .text -O binary $(PROJECT).elf $(PROJECT).bin


-j .text --> копирай само .text секцията.

Много благодаря!

А за const -- такава ще е, но ми се щеше да има данни в нея първо :)


Вто Сеп 25, 2007 1:41 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
lz3060 написа:
И по-точно, bin таргета:
Код:
$(PROJECT).bin: $(PROJECT).elf
        $(OBJCOPY) -j .text -O binary $(PROJECT).elf $(PROJECT).bin


-j .text --> копирай само .text секцията.

Това е грубо. Не бях се сетил за тази възможност. :)

_________________
Най-опасният враг на истината и свободата е мнозинството.


Сря Сеп 26, 2007 5:51 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни