Перейти к содержанию
    

ih_

Свой
  • Постов

    78
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о ih_

  • Звание
    Частый гость
    Частый гость

Контакты

  • ICQ
    Array

Информация

  • Город
    Array
  1. Keil: L121 Improper fixup error

    Дело не в стеке. У линкера нет прав на установку стека. Дело в переходах. ACALL и LCALL. Попробуйте поменять в настройках проекта: суммарный размер кодовых сегментов с "до 2к" на "2к..64к"
  2. Есть разница. У некоторых МК РОНы отображаются на память. И если в Вашем случае это так, то я хотел предложить создать по этому адресу volatile переменную, тогда компилятор не посягнул бы на эту область памяти - регистр.
  3. Как передать в макрос внутреннюю переменную i из другого макроса ? Хочется из одного макроса вызвать другой макрос несколько раз с разным параметрами. Но IAR не воспринимает i как число, как параметр, а передает ее как букву "i" tZond MACRO pZond\1: DS16 1 ENDM tZonds MACRO LOCAL i i SET 0 REPT \1 tZond i i SET i+1 ENDR ENDM tZonds 8
  4. День добрый, Братцы! (немного не в себе, прошу извинить :) ) Решил я "мигнуть светодиодом" на TMS320F28027. Три дня танцев вокруг CCS и controlSUITE, и пример откомпилировался и зашился даже. :( А интернет то модемный (xDSL). Стал смотреть как это чудо устроено... те исходники. Пока дошло, что собрано все в device.lib и хидеры c си файлами никак не сопоставляются на этапе компиляции. Вот пару строк: void WDOG_clearCounter(WDOG_Handle wdogHandle) { WDOG_Obj *wdog = (WDOG_Obj *)wdogHandle; ENABLE_PROTECTED_REGISTER_WRITE_MODE; // write first sequence wdog->WDKEY = 0x55; // write second sequence wdog->WDKEY = 0xAA; DISABLE_PROTECTED_REGISTER_WRITE_MODE; return; } // end of WDOG_clearCounter() function или вот: WDOG_Handle WDOG_init(void *pMemory, const size_t numBytes) { WDOG_Handle wdogHandle; if(numBytes < sizeof(WDOG_Obj)) return((WDOG_Handle)NULL); // assign the handle wdogHandle = (WDOG_Handle)pMemory; return(wdogHandle); } // end of WDOG_init() function Скажите зачем это все так сделано? В WDOG_init просто пребразование типа указателя, а про NULL после вызова никто и не вспомнил. А в WDOG_clearCounter разыменовывание указателя через переменную, чудно тоже. И в таком духе видимо вся периферия будет. Зачем так? На видео парень говорит про аж четыре уровня абстракции от аппаратуры. Это оно? Прошу объяснить, Братцы? И вообще направьте путем Истины, как бы время компиляции экономить?. И прозреть на предмет работы с C2000? Среду унифицировать, а то как захочется новое ядро освоить, так мы вечные студенты по "средам". Благодарю Вас, О Красноречивейшие из Трудолюбивейших :).
  5. День добрый! И у меня проблема с инициализацией :) Вводные данные: IAR XLINK 4.60K (4.60.11.0); IAR Assembler for MSP430 V4.10A/W32 (4.10.1.9); IAR C/C++ Compiler for MSP430 V4.10A/W32 [Evaluation] (4.10.1.1) Описание шрифта typedef const byte cByte; typedef struct fontDescriptor tFontDescriptor; struct fontDescriptor{ cByte width; // width in pixels cByte hight; // hight in pixels cByte symbolStep; // in pixel beetween chars cByte rowStep; // in pixel beetwen lines cByte len; // symbol counts -1 cByte offset; // e.g. if only digits offset=0x30 }; typedef cByte tSymbol; typedef struct font tFont; struct font{ tFontDescriptor descriptor; tSymbol symbol[]; }; Инициализация шрифта из десяти цифр //tFont font3x5_10={ cByte font3x5_10[]={ // descriptor 0x03,0x05,0x01,0x01,0x10,0x30, // symbols 0x1f,0x11,0x1f, 0x12,0x1f,0x10, 0x1d,0x15,0x17, 0x15,0x15,0x1f, 0x07,0x04,0x1f, 0x17,0x15,0x1d, 0x1f,0x15,0x1d, 0x01,0x01,0x1f, 0x1f,0x15,0x1f, 0x17,0x15,0x1f, }; Применение tFont *font; font=&font3x5_10; Вопрос. Если в процессе инициализации константу-шрифт описать как: cByte font3x5_10[]={..... то компилятор выдает предупреждение: "О не совместимости типов tFont и cByte". И все работатет. А если описать как: tFont font3x5_10={.... то компилятор принимает только первые шесть значений дескриптора, а на сами символы говорит:" Слишком много инициализирующих данных". Видимо нельзя в одной структуре смешивать типы разной определенности длины. Как тогда можно реализовать один тип данных на шрифты разной длины? Прошу помощи? :) Благодарю.
  6. Добрый день. Можете рассказать подробней об выгорании? Как раз занимаюсь разработкой нового на этом дисплее. Чем планируете заменить? Благодарю Вас. :)
  7. Можно разместить ее в отдельном сегменте, и затем вычислять его адрес, через встроенные указатели начала и конца сегмента (__segment_begin("mySeg");__segment_end("meSeg");SFE("mySg");SFB("mySeg")) Можно сделать запас. Конечно можно. Как вариант, обращаться к функции через указатель на нее, который находится по фиксированному адресу.
  8. Ага понял, буду пробовать. Если еще мысли возникнут, буду признателен :)
  9. Прошу, намекните куда копать?
  10. Хотелось, чтоб меньше потреблял. А вообще я хочу сдеалть контроллер LCD 472x280x3.
  11. Прошу помощи в поиске МК с объемом RAM от 400 кбайт. Благодарю :)
  12. Проблема с поиском. Есть такая тема Симуляция переферии C8051F93x в keil uVision? При задании строки поиска F93x или "*F93x*". Результат - нет совпадения. И даже если скопировать "F93x" - нет результата. Прошу разъяснить? :) Благодарю.
×
×
  • Создать...