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

AlexKLm

Свой
  • Постов

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

  • Посещение

Весь контент AlexKLm


  1. Ищу ARM по-проще, но по-быстрее AVR. Меня не устраивает в AVR-ах низкая тактовая частота (AVR по своей сути ориентирован на наименьшее потребление). Важно чтобы корпус был не BGA, требования к объем памяти не велики, количество выводов желательно не более 120. Подскажите пожалуйста пару названий.
  2. Да, именно, - в сторону как минимум -O 1 для линкера. Сходная проблема была описана: http://electronix.ru/forum/lofiversion/index.php/t45366.html
  3. vet, спасибо за ответ, жалко что я не смог это сразу понять. Оптимизация была выключена. Только что попробовал включить, - сработало, выдало: 410: 81 b1 in r24, 0x21 ; 1 412: 88 61 ori r24, 0x18 ; 24 414: 81 b9 out 0x21, r24 ; 1 416: 0b 98 cbi 0x21, 3 ; 1 Но, у меня не шло все это в не оптипизированном виде, я не мог придушить watchdog, как ни бился, не работают ld st почему-то. Попробую теперь, с оптимизацией. Размер кода-то существенно уменьшается. Я включал опцию -O 3, он тогда только выбросил ld и st где смог. Кажется разобрался, а то неделю не мог Watchdog заглушить. И получается - только из-за того что оптимизацию не включил. Если я ошибаюсь, то еще напишу результат. Так все же правильно, русским же языком написано: "Within the next four clock cycles, write a logic 0 to WDE." А какие же там "four clock cycles" если между записями в WDTCR аж 6 инструкций.
  4. Пара вопросов (ATmega8.C, WinAVR)

    Есть в ATmega8.pdf табличка под названием Register Summary и в ней строчка: 0x3F (0x5F) SREG I T H S V N Z C 7 Что значит 0x3F (0x5F)? SREG имеет вроде как один адрес в I/O пространстве, или еше какой-нибудь? Другой вопрос. Убиение сторожевой собаки, сделанное inline макросом из заголовочного файла, в дизасебле выглядит так: 67a: 81 bd out 0x21, r24 ; 33 67c: 11 bc out 0x21, r1 ; 33 67e: 0f be out 0x3f, r0 ; 63 А то же самое, но сделаное следующим кодом (в main()) WDTCR |= (1<<WDCE) | (1<<WDE);//и тут же меняем WDE на 1 и в следующие 4 клока меняем WDE WDTCR &= ~(1<<WDE);// -т.е. WDE устанавливаем в 0 , запрещаем дог производит такой код: 716: a1 e4 ldi r26, 0x41 ; 65 718: b0 e0 ldi r27, 0x00 ; 0 71a: e1 e4 ldi r30, 0x41 ; 65 71c: f0 e0 ldi r31, 0x00 ; 0 71e: 80 81 ld r24, Z 720: 88 61 ori r24, 0x18 ; 24 722: 8c 93 st X, r24 724: a1 e4 ldi r26, 0x41 ; 65 726: b0 e0 ldi r27, 0x00 ; 0 728: e1 e4 ldi r30, 0x41 ; 65 72a: f0 e0 ldi r31, 0x00 ; 0 72c: 80 81 ld r24, Z 72e: 87 7f andi r24, 0xF7 ; 247 730: 8c 93 st X, r24 Как видно, длина кода слегка не одинаковая. Но непонятно другое, почему тут используется 0x41 вместо 0x21? Из таблицы известно что 0x21 (0x41) это WDTCR. Так всеже 0x21 или 0x41?
  5. Висит, платка с 245-ой, уже с годик. А что такое 'verilog'? Просьба - не выражаться.
  6. Вроде бы на HD44.... для GCC много информации в нете. Я использую для AVR GCC (=WinAvr) свою оболочку, которая подходит не только для AVR: http://www.alexklm.ru/zip/EasyDE.zip Использую инструменты, заголовочные файлы и библиотеки из WinAvr. Там есть для примера проект для AVR. Опыта использования пока нет (по части AVR), но на днях я опробую на деле, когда из проекта залью с помощью AvrDude ATmega8. Существует расхожее мнение что GCC компилирует много мусора, но когда я проверял, то ничего подобного обнаружить не удалось.
×
×
  • Создать...