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

niccom

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

Контакты

  • ICQ
    Array
  1. [ псы 2 прикрутка мт-линка к кейлу где нибудь описана , по шагам? Смотри http://electronix.ru/forum/index.php?showtopic=19687 если что непонятно спроси. У меня с кейлом работает как пулемет. [ псы 2 прикрутка мт-линка к кейлу где нибудь описана , по шагам? Смотри http://electronix.ru/forum/index.php?showtopic=19687 если что непонятно спроси. У меня с кейлом работает как пулемет.
  2. порт uCOS для LPC2138

    1.20 в приложении. Огромное спасибо. Посмотрел архив, но файлы OS_VIEWc.* есть у меня в самом порте. При сборке порт требует файлы OS_VIEW.* и чтобы они находились в папке: С:\Micrium\Software\uCOSView\Sources\ Это принципиально или нужно брать бубен и разбираться как правильно прописать пути для OS_VIEWc.*?
  3. порт uCOS для LPC2138

    Пожалуй os_view.* ??? А какая версия есть у Вас? 1.20? Или? Да совершенно верно os_view.*. Нет к сожалению нашел только 1.10, поэтому и проблемы.
  4. порт uCOS для LPC2138

    При запуске порта AN-1138_LPC2138_Port понадобились исходники OSView.c и OSView.h они должны лежать в: С:\Micrium\Software\uCOSView\Sources\ Пользую uCOS 2.80 На Сахаре нашел какие то древние OSView.c и OSView.h 2002 года , но они по нескольким функциям не совпадают с версией 2.80. Может у кого найдуться проверенные в деле файлы OSView.c и OSView.h под uCOS 2.80.
  5. FAST IRQ (LPC213X)

    Вот упражнение для Keil, в нем все прекрасно рассмотрено про FIQ. Запусти в отладчике и все станет ясно. EX11_InterruptFIQ.rar
  6. MT-link и RDI драйвер

    Огромное спасибо.
  7. MT-link и RDI драйвер

    Официально - покупкой лицензии :-) Или генератором лицензий. Про неофицальный путь с подробностями, если можно плиз. мейл какой? [email protected] Заранее сэнкс.
  8. MT-link и RDI драйвер

    Официально - покупкой лицензии :-) Или генератором лицензий. Про неофицальный путь с подробностями, если можно плиз.
  9. MT-link и RDI драйвер

    При попытке прикрутить mt-link к Keil появилась следующая проблема: Для начала порядок моих действий: 1. Установлен J-Link RDI DLL V3.36a 2.Установлен uVision 3 v3.3 и вылечен. 3. Во вкладке Debug проекта указываю путь к C:\Keil\ARM\Segger\JLinkRDI.dll 4. И появляется окно с просьбой ввести лицензию Sorry, no valid license for RDI found. J-Link S/N is 11111117. Please contact SEGGER Microcontroller (www.segger.com, [email protected]) to obtain a license. Time limited trial versions are available. где S/N is 11111117это серийник mt-link Как сие лечиться подскажите плиз.
  10. конечно можно вот так тоже будет работать DDRD &= ~_BV(PD2); PORTD |= _BV(PD2); а в чем проблема то? с логическими операциями?
  11. Сегодня уже не было и таймаут по словам их инженера месяц Где в Москве еще можно купить?
  12. После компиляции в окне Programmer Notepad text data bss dec hex filename 9412 0 405 9817 2659 dvdavtomat.elf По моему все ясно Для задержек изучите нижеуказанный хидер /include/util/delay.h заодно посмотрите как ассемблер юзать в WinAVR А библиотек столько написано что вы приятно удивитесь скачав и распаковав http://hubbard.engr.scu.edu/embedded/avr/avrlib #ifndef _UTIL_DELAY_H_ #define _UTIL_DELAY_H_ 1 #include <inttypes.h> /** \defgroup util_delay <util/delay.h>: Busy-wait delay loops \code #define F_CPU 1000000UL // 1 MHz //#define F_CPU 14.7456E6 #include <util/delay.h> \endcode \note As an alternative method, it is possible to pass the F_CPU macro down to the compiler from the Makefile. Obviously, in that case, no \c \#define statement should be used. The functions in this header file implement simple delay loops that perform a busy-waiting. They are typically used to facilitate short delays in the program execution. They are implemented as count-down loops with a well-known CPU cycle count per loop iteration. As such, no other processing can occur simultaneously. It should be kept in mind that the functions described here do not disable interrupts. In general, for long delays, the use of hardware timers is much preferrable, as they free the CPU, and allow for concurrent processing of other events while the timer is running. However, in particular for very short delays, the overhead of setting up a hardware timer is too much compared to the overall delay time. Two inline functions are provided for the actual delay algorithms. Two wrapper functions allow the specification of microsecond, and millisecond delays directly, using the application-supplied macro F_CPU as the CPU clock frequency (in Hertz). These functions operate on double typed arguments, however when optimization is turned on, the entire floating-point calculation will be done at compile-time. \note When using _delay_us() and _delay_ms(), the expressions passed as arguments to these functions shall be compile-time constants, otherwise the floating-point calculations to setup the loops will be done at run-time, thereby drastically increasing both the resulting code size, as well as the time required to setup the loops. */ #if !defined(__DOXYGEN__) static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline)); static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline)); static inline void _delay_us(double __us) __attribute__((always_inline)); static inline void _delay_ms(double __ms) __attribute__((always_inline)); #endif /** \ingroup util_delay Delay loop using an 8-bit counter \c __count, so up to 256 iterations are possible. (The value 256 would have to be passed as 0.) The loop executes three CPU cycles per iteration, not including the overhead the compiler needs to setup the counter register. Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds can be achieved. */ void _delay_loop_1(uint8_t __count) { __asm__ volatile ( "1: dec %0" "\n\t" "brne 1b" : "=r" (__count) : "0" (__count) ); } /** \ingroup util_delay Delay loop using a 16-bit counter \c __count, so up to 65536 iterations are possible. (The value 65536 would have to be passed as 0.) The loop executes four CPU cycles per iteration, not including the overhead the compiler requires to setup the counter register pair. Thus, at a CPU speed of 1 MHz, delays of up to about 262.1 milliseconds can be achieved. */ void _delay_loop_2(uint16_t __count) { __asm__ volatile ( "1: sbiw %0,1" "\n\t" "brne 1b" : "=w" (__count) : "0" (__count) ); } #ifndef F_CPU /* prevent compiler error by supplying a default */ # warning "F_CPU not defined for <util/delay.h>" # define F_CPU 1000000UL #endif /** \ingroup util_delay Perform a delay of \c __us microseconds, using _delay_loop_1(). The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz). The maximal possible delay is 768 us / F_CPU in MHz. */ void _delay_us(double __us) { uint8_t __ticks; double __tmp = ((F_CPU) / 3e6) * __us; if (__tmp < 1.0) __ticks = 1; else if (__tmp > 255) __ticks = 0; /* i.e. 256 */ else __ticks = (uint8_t)__tmp; _delay_loop_1(__ticks); } /** \ingroup util_delay Perform a delay of \c __ms milliseconds, using _delay_loop_2(). The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz). The maximal possible delay is 262.14 ms / F_CPU in MHz. */ void _delay_ms(double __ms) { uint16_t __ticks; double __tmp = ((F_CPU) / 4e3) * __ms; if (__tmp < 1.0) __ticks = 1; else if (__tmp > 65535) __ticks = 0; /* i.e. 65536 */ else __ticks = (uint16_t)__tmp; _delay_loop_2(__ticks); } #endif /* _UTIL_DELAY_H_ */
  13. MT-LINK

    /* Цитата от продавцов Из средств программной разработки, поддерживающих MT-Link, можно выделить IAR Embedded Workbench (http://www.iar.com) и CrossWorks (http://www.rowley.co.uk), имеющих встроенную поддержку J-Link. Кроме того, существует программный мост между J-Link и разработанным компанией ARM отладочным интерфейсом RDI. Это даёт уникальную возможность использовать такие известные средства разработки, как ADS (c отладчиком AXD), RealView (активно рекомендуется самой ARM), Multi от Green Hills (http://www.ghs.com). */ У кого нибудь есть опыт работы с MT-LINK? Интересует отзывы о нем. И еще вопрос, в цитате говориться о програмном мосте с RealView это соответствует действительности?
  14. /*Цитата из Кернигана Ритчи*/ // Рекомендую целиком книгу прочитать 6.7 Средство typedef Язык Си предоставляет средство, называемое typedef, которое позволяет давать типам данных новые имена. Например, объявление typedef int Length; делает имя Length синонимом int. С этого момента тип Length можно применять в объявлениях, в операторе приведения и т. д. точно так же, как тип int: Length len, maxlen; Length *lengths[]; Аналогично объявление typedef char *String; делает String синонимом char *, т. e. указателем на char, и правомерным будет, например, следующее его использование: String р, lineptr[MAXLINES], alloc(int); int strcmp(String, String); p = (String) malloc(100); Заметим, что объявляемый в typedef тип стоит на месте имени переменной в обычном объявлении, а не сразу за словом typedef. С точки зрения синтаксиса слово typedef напоминает класс памяти - extern, static и т. д. Имена типов записаны с заглавных букв для того, чтобы они выделялись. Для демонстрации более сложных примеров применения typedef воспользуемся этим средством при задании узлов деревьев, с которыми мы уже встречались в данной главе. typedef struct tnode *Treeptr; typedef struct tnode { /* узел дерева: */ char *word; /* указатель на текст */ int count; /* число вхождений */ Treeptr left; /* левый сын */ Treeptr right; /* правый сын */ } Treenode; В результате создаются два новых названия типов: Treenode (структура) и Treeptr (указатель на структуру). Теперь программу talloc можно записать в следующем виде: Treeptr talloc(void) { return (Treeptr) malloc(sizeof(Treenode)); } Следует подчеркнуть, что объявление typedef не создает объявления нового типа, оно лишь сообщает новое имя уже существующему типу. Никакого нового смысла эти новые имена не несут, они объявляют переменные в точности с теми же свойствами, как если бы те были объявлены напрямую без переименования типа. Фактически typedef аналогичен #define с тем лишь отличием, что при интерпретации компилятором он может справиться с такой текстовой подстановкой, которая не может быть обработана препроцессором. Например typedef int (*PFI)(char *, char *); создает тип PFI - "указатель на функцию (двух аргументов типа char *), возвращающую int", который, например, в программе сортировки, описанной в главе 5, можно использовать в таком контексте: PFI strcmp, numcmp; Помимо просто эстетических соображений, для применения typedef существуют две важные причины. Первая - параметризация программы, связанная с проблемой переносимости. Если с помощью typedef объявить типы данных, которые, возможно, являются машинно-зависимыми, то при переносе программы на другую машину потребуется внести изменения только в определения typedef. Одна из распространенных ситуаций - использование typedef-имен для варьирования целыми величинами. Для каждой конкретной машины это предполагает соответствующие установки short, int или long, которые делаются аналогично установкам стандартных типов, например size_t и ptrdiff_t. Вторая причина, побуждающая к применению typedef,- желание сделать более ясным текст программы. Тип, названный Тreeptr (от английских слов tree - дерево и pointer - указатель), более понятен, чем тот же тип, записанный как указатель на некоторую сложную структуру.
×
×
  • Создать...