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

 
 
> cypress FX2 DemoBoard и светодиоды, запарило - не врубаюсь
torik
сообщение Jan 30 2007, 13:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Привет!

На плате с CY7C68013A от сайпраса хочу включить светодиоды D5-D2.
Компилятор - Кейл (в мювижене пишу)
В доке написано, что надо состряпать переменную
xdata volatile BYTE D5ON _at_ 0xB000;

а далее когда надо светодиод врубить:
BYTE dum;
dum = Diod5ON; //включение светодиоды

Блин, люди - не врубаюсь!!!! Нихрена не работает

а когда объявляю D5ON - вообще ошыбку дает, если делаю ее extern - то варнинг и всеравно них не работает...

Кто включал светодиоды на этой плате, подскажите...

При этом индикатор семисегментный и кнопки, подключенные по I2C работают нормуль...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
torik
сообщение Jan 31 2007, 09:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Да не - адрес можно и "0xB000" и "0x8000" - это просто разные светодиоды. Название переменных "D5ON" (очепятка в тексте сообщения)...

Дело в другом:
в файле fh2regs.h делаю объявление:
EXTERN xdata volatile BYTE D5ON _AT_ 0xB000;
рядом стоит объявление регистров данного камня:
..........
EXTERN xdata volatile BYTE RES_WAVEDATA_END _AT_ 0xE400;
............

где бы ни объявлял переменную "BYTE dum", на команду:
dum = D5ON;
компилер дает варнинги

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: D5ON
MODULE: bulkext.obj (BULKEXT)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: DUM
MODULE: bulkext.obj (BULKEXT)

Почему? При этом мерзко еще то, что на команду^
dum = RES_WAVEDATA_END;
Варнингов не идет, хотя отличий в объявах вроде и нету...

Так что вопрос по существу к тем кто разбирается в компиляторе....


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
jur
сообщение Jan 31 2007, 11:43
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Цитата(torik @ Jan 31 2007, 08:28) *
Да не - адрес можно и "0xB000" и "0x8000" - это просто разные светодиоды. Название переменных "D5ON" (очепятка в тексте сообщения)...

Дело в другом:
в файле fh2regs.h делаю объявление:
EXTERN xdata volatile BYTE D5ON _AT_ 0xB000;
А, теперь понял. Тут дело вот в чем, твоя переменная D5ON объявлена, как внешняя с атрибутом EXTERN (в этом случае она должна присутствовать в какой-нибудь библиотеке, но ведь ты ее туда не помещал, поэтому следует варнинг и, соответственно, обращение к нулевому адресу). Кроме того, EXTERN и _AT_ написаны в верхнем регистре, т.к. переопределяются где-то в заголовочных файлах. IMHO, следует поступить проще: нужно объявить D5ON вот так:

xdata volatile BYTE D5ON _at_ 0xB000; // LED address

то есть, именно так, как написано в доке, а не так, как сделал ты. И все будет в порядке. В этом случае компилятор генерирует правильный код. Вот сишный текст:

xdata volatile BYTE D5ON _at_ 0xB000; // LED address

void proba(void)
{
BYTE dum;
dum = D5ON;
}

А вот соответствующий ассемблерный:

; FUNCTION proba (BEGIN)
; SOURCE LINE # 38
; SOURCE LINE # 39
; SOURCE LINE # 41
0000 90B000 MOV DPTR,#D5ON
0003 E0 MOVX A,@DPTR
0004 F500 R MOV dum,A
; SOURCE LINE # 42
0006 22 RET
; FUNCTION proba (END)


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post



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

 


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


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