Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Silabs C8051F120
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Страницы: 1, 2, 3, 4, 5
A. Fig Lee
Цитата(Radik2 @ Aug 31 2015, 07:03) *
На форумах тишина насчет SDCC для 8051.


В смысле "тишина"? Если склероз не изменяет мне, я им компилировал для СС2530, которые 8051
Radik2
Цитата(A. Fig Lee @ Aug 31 2015, 20:34) *
В смысле "тишина"? Если склероз не изменяет мне, я им компилировал для СС2530, которые 8051


Я имел ввиду, что в google поиск по ключевым словам "SDCC 8051" не принес положительных результатов. На русскоязычных сайтах практически ничего не нашел. Нет ни отзывов, ни примеров реализации, ни рекомендаций по применению...
A. Fig Lee
Цитата(Radik2 @ Aug 31 2015, 22:26) *
Я имел ввиду, что в google поиск по ключевым словам "SDCC 8051" не принес положительных результатов. На русскоязычных сайтах практически ничего не нашел. Нет ни отзывов, ни примеров реализации, ни рекомендаций по применению...


https://www.google.com/search?client=safari...-8&oe=UTF-8

Не знаю насчет русскоязычных, все довольно обыденно.
вот пример батника на Виндоус для компиляции программы на CC2530.

Код
sdcc --model-large -c radio.c
sdcc --model-large -c ..\lib\cmdargs.c
sdcc --model-large cc2530.c radio.rel cmdargs.rel
Radik2
Цитата(A. Fig Lee @ Sep 1 2015, 16:39) *
https://www.google.com/search?client=safari...-8&oe=UTF-8

Не знаю насчет русскоязычных, все довольно обыденно.
вот пример батника на Виндоус для компиляции программы на CC2530.

Код
sdcc --model-large -c radio.c
sdcc --model-large -c ..\lib\cmdargs.c
sdcc --model-large cc2530.c radio.rel cmdargs.rel

Для меня с первого взгляда ничего не понятно: необходимо читать MANSDCC.PDF.
Для себя узнал, что мой любимый Keil не имеет ограничения по размеру кода. Точнее, я так перевел сообщение с сайта Silabs: https://www.silabs.com/products/mcu/Pages/8...r-software.aspx
Продолжим работать в нем ))
Radik2
Цитата(редактор @ Jun 2 2015, 12:05) *
PS: Будут вопросы - можно в личку.


Прошу подсказки.
После того как поработал немного с ЖК-дисплеем на контроллере HD44780 решил попробовать цветной дисплей на контроллере ST7735.
После долгих поисков в просторах интернета готовой библиотеки для С51 наткнулся на файлы из вложения. Как я понял - это для АВРок.
Первый архив - скачанные файлы без изменений. Второй архив - мой проект в Keil.
Подкорректировал под C8051Fxxx
Но при компиляции возникли неожиданные ошибки.
Некоторые я поборол. Как мне кажется. Возможно, что они позже всплывут.
Сейчас имеем следующее.

в блоке void TFTInit() в самом конце есть следующий код
unsigned char i;
for(i = 0; i < 32; i++)
write_byte(2*i,1); //Red
for(i=0;i<64;i++)
write_byte(1*i,1); //Green
for(i=0;i<32;i++)
write_byte(2*i,1); //Blue

write_byte(0x2c,0);
delay_us(150);

Keil при компиляции выдает следующие ошибки

compiling main.c...
TFTM1802.h(131): error C141: syntax error near 'unsigned'
TFTM1802.h(131): error C202: 'i': undefined identifier
TFTM1802.h(132): error C202: 'i': undefined identifier
TFTM1802.h(133): error C202: 'i': undefined identifier
TFTM1802.h(134): error C202: 'i': undefined identifier
TFTM1802.h(135): error C202: 'i': undefined identifier
TFTM1802.h(136): error C202: 'i': undefined identifier
TFTM1802.h(137): error C202: 'i': undefined identifier
main.c - 8 Error(s), 0 Warning(s).

Указанный тип переменной поддерживается. http://www.keil.com/support/docs/1677.htm
Чего ему не хватает?
Harbinger
Вот так компилится (переменная i определена в начале функции).
CODE
void TFTInit()
{
unsigned char i;
Reset();

//char i=0;
write_byte(0xB9,0);//SETEXTC
write_byte(0xFF,1);
write_byte(0x83,1);
write_byte(0x53,1);

write_byte(0xB0,0);//RADJ
write_byte(0x3C,1);
write_byte(0x01,1);

write_byte(0xB6,0);//VCOM
write_byte(0x94,1);
write_byte(0x6C,1);
write_byte(0x50,1);

write_byte(0xB1,0);//PWR
write_byte(0x00,1);
write_byte(0x01,1);
write_byte(0x1B,1);
write_byte(0x03,1);
write_byte(0x01,1);
write_byte(0x08,1);
write_byte(0x77,1);
write_byte(0x89,1);

write_byte(0xE0,0); //Gamma setting for tpo Panel
write_byte(0x50,1);
write_byte(0x77,1);
write_byte(0x40,1);
write_byte(0x08,1);
write_byte(0xBF,1);
write_byte(0x00,1);
write_byte(0x03,1);
write_byte(0x0F,1);
write_byte(0x00,1);
write_byte(0x01,1);
write_byte(0x73,1);
write_byte(0x00,1);
write_byte(0x72,1);
write_byte(0x03,1);
write_byte(0xB0,1);
write_byte(0x0F,1);
write_byte(0x08,1);
write_byte(0x00,1);
write_byte(0x0F,1);

write_byte(0x3A,0);
write_byte(0x05,1); //05

write_byte(0x36,0);
write_byte(0xC0,1); //83 //0B

write_byte(0x11,0); // SLPOUT
delay_us(150);

write_byte(0x29,0); // display on
delay_us(150);

write_byte(0x2D,0); //Look up table


for(i = 0; i < 32; i++)
write_byte(2*i,1); //Red
for(i=0;i<64;i++)
write_byte(1*i,1); //Green
for(i=0;i<32;i++)
write_byte(2*i,1); //Blue

write_byte(0x2c,0);
delay_us(150);
}


Но надо копать дальше - ругается линкер:
Код
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  _DELAY_SEC
    MODULE:  delay.obj (DELAY)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  _DELAY_MS
    MODULE:  delay.obj (DELAY)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  _DELAY_US
    MODULE:  delay.obj (DELAY)

Исполняемый код в TFTM1802.h и "#include "delay.c"" в этом файле смотрятся по меньшей мере странно.

(upd) Переделал немного. Собирается.
Radik2
Цитата(Harbinger @ Nov 3 2015, 08:41) *
(upd) Переделал немного. Собирается.


Большое спасибо за помощь!
Но появилась следующая проблема:

*** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
MODULE: C:\KEIL\C51\LIB\C51L.LIB (-----)
LIMIT: 0800H BYTES
Target not created

Но как я понял, для чипов Silabs не должно быть ограничений по размеру кода.
Буду разбираться.
Harbinger
Там есть некая процедура для получения лицензии, нужно её выполнить. Но: лицензия только на компилятор, ассемблер и линкер; в Keil uVision не будет работать отладка. В Silabs IDE или Simplicity Studio с подключенным кейловским инструментарием - будет.
И ещё. В проекте установлена модель памяти "large" (т.е. переменные в xdata), можно попытаться заменить на "compact" (переменные в pdata), а там, где критично быстродействие, указать "data" или "idata" явно.
Radik2
Цитата(Harbinger @ Nov 4 2015, 11:47) *
И ещё. В проекте установлена модель памяти "large" (т.е. переменные в xdata), можно попытаться заменить на "compact" (переменные в pdata), а там, где критично быстродействие, указать "data" или "idata" явно.


Если мы не выберем модель памяти "large", то xdata (бОльшая часть встроенного ОЗУ в МК) не будет использоваться?
Или необходимо установить галочку в настройках "Use On-chip XRAM" ?

Цитата(Harbinger @ Nov 4 2015, 11:47) *
Там есть некая процедура для получения лицензии, нужно её выполнить. Но: лицензия только на компилятор, ассемблер и линкер; в Keil uVision не будет работать отладка. В Silabs IDE или Simplicity Studio с подключенным кейловским инструментарием - будет.


Я думал, что у меня есть лицензия ..

Harbinger
Цитата(Radik2 @ Nov 4 2015, 09:02) *
Если мы не выберем модель памяти "large", то xdata (бОльшая часть встроенного ОЗУ в МК) не будет использоваться?
Или необходимо установить галочку в настройках "Use On-chip XRAM" ?

Галочку - да, нужно поставить. А основная память ещё под стек нужна.

Насчёт лицензии.
Цитата
Find the Product Serial Number printed on the CD-ROM or the ToolStick kit box or register on the Silicon
Labs website (www.silabs.com/8bit-software) to obtain the Product Key
.

Т.е. после регистрации ключ пришлют. Каких-либо Toolstick и пр. железяк с серийниками не требуется (у меня их никогда и не было).
Вот ссылка для регистрации: http://pages.silabs.com/lp-keil-pk51.html
Возможно, придётся скачать оттуда 8-bit microcontroller studio - не исключаю, что там дистрибутив Кейла видоизменён специально под Silabs.
Radik2
Цитата(Harbinger @ Nov 4 2015, 12:41) *
Насчёт лицензии.

Т.е. после регистрации ключ пришлют. Каких-либо Toolstick и пр. железяк с серийниками не требуется (у меня их никогда и не было).

Да, спасибо. Получилось, разобрался.

Скомпилировалось, прошивку выдал. Буду проверять в железе.
Столько вопросов возникло касательно Keil, файлов входящих в проект ...
Radik2
Цитата(Radik2 @ Nov 4 2015, 12:56) *
Да, спасибо. Получилось, разобрался.

Скомпилировалось, прошивку выдал. Буду проверять в железе.
Столько вопросов возникло касательно Keil, файлов входящих в проект ...


Не работает.
Логический анализатор "ничего не видит" на выводах МК. Возможно, что не правильно настроены порты или еще что-то.
редактор
У меня лог.Анализатор работал только в режиме симуляции. При работе с камнем - нет. В отличии от CM3 даже обновление данных в окне WATCH на лету не выполняется.Только после остановки программы (или при пошаговом исполнении).
Radik2
Цитата(редактор @ Nov 6 2015, 17:07) *
У меня лог.Анализатор работал только в режиме симуляции. При работе с камнем - нет. В отличии от CM3 даже обновление данных в окне WATCH на лету не выполняется.Только после остановки программы (или при пошаговом исполнении).


Я говорил о железном логическом анализаторе. Проверял работу в железе.
Radik2
Я совсем запутался. Решил для проверки всей системы в железе, вывести меандр на один из портов МК.
Написал следующий простейший код:

Код
void main ()
{
    Init_Device();
    
    while(1)
    {
        _nop_();
        _nop_();
        _nop_();
        _nop_();        
                RST = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
                RST = 0;
    }
}


Подключил к выводу МК логический анализатор. Наблюдаю лог. 1. Ничего не меняется.
Отладки в Кейл уже нет. Запускаю симулятор - значения в регистре порта не меняются.

Нажмите для просмотра прикрепленного файла

На что похоже?

Поменял номер порта с 7-го на 2-й. Все в порядке.


Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.