WinAVR не видит дефайнов

Do you have a question? Post it now! No Registration Necessary

Threaded View
Hi, All!

 Взялся я тут немного поупражнятсься с АВР - поставил ВинАВР, поставил ВМЛАБ,
написал пару программок из букваря - всё работает, вроде ничего не забыл...
 Принялся реализовывать некий алгоритм, который требует двух таймерв - нулевого
и первого.
 И хлоп - при компиляции ошибки полезли - говорит, у тебя OCR0 не определен.
 Я - смотреть инклюд. В инклюде всё определено. И, судя по даташиту, всё
определено правильно. Остальные регистры нареканий не вызывают - лопает их
злобный ВинАВР, а вот именно OCR0 - не хочет.
 Таргет - AT90S8515.
 Что делать и кто виноват?

 Да, и еще вопрос - как в этой (WinAVR+VMLAB) связке посмотреть время
выполняемого кода? При ассемблере я это вручную считал, а при Сях как?

bye, Eugen!

... Если ничего не помогает - прочти инструкцию.

Re: WinAVR не видит дефайнов
Привет, Eugen Sergeev!

27.04.2009 22:50 Вы писали:

Quoted text here. Click to load it

Покажи дефайн, которого не видит gcc. И скажи версию gcc. Hа простейшем тесте
описанная
проблема, естественно, не воспроизводится:

alx2% cat test.c
#define OCR0 blablabla

OCR0
alx2% avr-gcc -E test.c
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"


blablabla
alx2% avr-gcc --version
avr-gcc (GCC) 4.3.1

Quoted text here. Click to load it

После компиляции Си превращаются в ассемблер. Еще можно воспользоваться
симулятором
например...

--
Всего наилучшего,
Алексей Могильников

We've slightly trimmed the long signature. Click to see the full one.
WinAVR не видит дефайнов
Hi, Alex!

28 Apr 09 12:02, Alex Mogilnikov >>> Eugen Sergeev:
 >> Остальные регистры нареканий не вызывают - лопает их
 >> злобный ВинАВР, а вот именно OCR0 - не хочет.
 >> Таргет - AT90S8515.
 >> Что делать и кто виноват?

 AM> Покажи дефайн, которого не видит gcc. И скажи версию gcc. Hа
 AM> простейшем тесте описанная проблема, естественно, не воспроизводится:
    Я, похоже, несколько коряво выразился. Если воткнуть строку с дефайном в
тело программы ( test.c ), то всё нормально, оно видится и компилиться
правильно.
 т.е.

 #include <avr/io.h>
 #include <avr/interrupt.h>
 #define OCR0 _SFR_IO8(0x3C)

 компилится и работает правильно.
 но определение этого самого OCR0 уже сделано в файле io8515.h ( откуда,
собственно, строка дефайна и заимствована ), подключенного директивой
 #include <avr/io.h>.
 другие определения из этого файла видятся, компилятся этцетера - все, кроме
OCR0.
 Хочется определить, почему.

 Версия AVR  от 13.03.2009, gcc 4.3.2 ( вроде так )

bye, Eugen!

... ■■■·Чем дальше в лес - тем толще партизаны·■■■

Re: WinAVR не видит дефайнов
Hello


Quoted text here. Click to load it

Приведи команду, которой вызывается avr-gcc.

--
WBR, Andrew

WinAVR не видит дефайнов
Hi, Andrew!

10 May 09 18:45, Andrew O Shadoura >>> All:
 >> кроме OCR0.
 >> Хочется определить, почему.
 AS> Приведи команду, которой вызывается avr-gcc.

avr-gcc -c -mmcu=at90s8515 -I. -O0 -gstabs -std=gnu99  -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums  -Wall -Wstrict-prototypes
-Wa,-adhlns=timer.lst   timer.c -o timer.o

 Вот это имеется в виду?

bye, Eugen!

... hAS ANYONE SEEN MY cAPSLOCK KEY?

Re: WinAVR не видит дефайнов
Hello


Quoted text here. Click to load it

Внимательно прочитай список регистров AT90S8515.

--
WBR, Andrew

Re: WinAVR не видит дефайнов
Hello


Quoted text here. Click to load it

А особенно прошу обратить внимание на наличие у таймера 0 схемы output
compare.

--
WBR, Andrew

Re: WinAVR не видит дефайнов
Привет, Eugen Sergeev!

10.05.2009 11:13 Вы писали:

Quoted text here. Click to load it

  ??? Вообще-то директива #include <avr/io.h> подключает файл avr/io.h. Ты
уверен, что
внутри этого avr/io.h есть #include <io8515.h>? Это во-первых.
  Во-вторых, если такая директива там есть, стоит убедиться, именно ли тот
io8515.h
подключается, который должен (судя по угловым скобкам, этот файл не является
частью
конкретного проекта). Это легко проверить по выводу препроцессора - он там
указывает
полные пути подключаемых файлов.
  В-третьих, если все это действительно так, то проблема в самом файле
io8515.h, и надо
изучать его текст. Там либо ошибка в самом дефайне (например опечатка в имени
макроса),
либо где-то рядом - возможно, это определение помещено под какие-нибудь #if-ы,
условие
которых не выполняется. А может просто в конце предыдущей строчки стоит '',
из-за чего
#define OCR0 превращается в продолжение предыдущего дефайна...

Quoted text here. Click to load it

  Hе имея исходного текста, мы можем об этом только гадать...

--
Всего наилучшего,
Алексей Могильников

We've slightly trimmed the long signature. Click to see the full one.
Re: WinAVR не видит дефайнов
Hello


Quoted text here. Click to load it

Так надо. Он подключает io8515.h, если используемая архитектура ---
at90s8515. Это --- системные инклуды.

--
WBR, Andrew

WinAVR не видит дефайнов
 ES>  Да, и еще вопрос - как в этой (WinAVR+VMLAB) связке посмотреть время
 ES> выполняемого кода? При ассемблере я это вручную считал, а при Сях как?

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


Site Timeline