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

Ljubitel

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник
  • День рождения 07.11.1973

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 158 просмотров профиля
  1. jtagice clone

    Спасибо,sseett. Поправил на страничке. Переделывать печатку лень уже :-) Кстати у меня и без подтятжки к земле работает прекрасно...
  2. Ну скажем так: 1. каждый имеет право на свое собственное мнение. Я ж не заставляю Вас делать программатор. 2. Писать программатор самому, как я думаю, можно по двум причинам: а) Дешевле покупного. В принципе да. Вот, к примеру, STK-500 стоит 89$. Я написал себе свой. Собрал. Уложился в 15$. б) Универсальнее. Правильно тут говорили - сидеть и ждать пока автор какого-либо самодельного программатора добавит поддержку нового кристалла иногда обломно. А тут можно самому в свой добавить. 3. Я изначально пошел по неправильному пути. Свой протокол. Своя железяка. Вобщем тупиковый вариант :) Тот же Hammer HVProg - обновляется из студии. Следовательно поддержка новых кристаллов происходит автоматически. Это более разумно. 4. С выходом Дракона, самодельные железяки уже не актуальны. Если не ошибаюсь, тут кому-то удалось завалить его на бок и снять с него ограничения по заливке и отладке :) Иными словами Вы просите исходник ? Да ладно уж. Я же говорил в даташитах все описано. Чуть ли не по шагам - дернуть ножкой, записать значение, дернуть другой... Или Вы не сможете переделать словесное описание в комманды Си/Асм ??? А "опыт в создании" приходит когда сам создаешь :)
  3. Видимо я неясно выразился. В даташите на любой AVR есть раздел "Memory Programming" в нем - подраздел "Parallel Programming". Там все подробно описано. Или Вам не найти даташит на AVR ? :)
  4. Пробовал. Делал. Легко. Все по даташиту, слово в слово. Потом надоело... велосипед :-) По ссылке, указанной выше, наверное лучший из самодельных.
  5. Как в CV не получится. Точка все таки оператор. А вот типа как в IAR можно. #include <avr/io.h> /* ===================================================================== Задаем структуру (битовое поле) чтобы иметь возможность обращаться к битам переменных. ===================================================================== */ typedef struct _bit_struct { unsigned char Bit0:1, Bit1:1, Bit2:1, Bit3:1, Bit4:1, Bit5:1, Bit6:1, Bit7:1; }bit_field; /* ===================================================================== Определяем PORTD. ===================================================================== */ #ifdef PORTD #define PORTD_Bit0 (*((volatile bit_field*) (0x32))).Bit0 #define PORTD_Bit1 (*((volatile bit_field*) (0x32))).Bit1 #define PORTD_Bit2 (*((volatile bit_field*) (0x32))).Bit2 #define PORTD_Bit3 (*((volatile bit_field*) (0x32))).Bit3 #define PORTD_Bit4 (*((volatile bit_field*) (0x32))).Bit4 #define PORTD_Bit5 (*((volatile bit_field*) (0x32))).Bit5 #define PORTD_Bit6 (*((volatile bit_field*) (0x32))).Bit6 #define PORTD_Bit7 (*((volatile bit_field*) (0x32))).Bit7 #define DDRD_Bit0 (*((volatile bit_field*) (0x31))).Bit0 #define DDRD_Bit1 (*((volatile bit_field*) (0x31))).Bit1 #define DDRD_Bit2 (*((volatile bit_field*) (0x31))).Bit2 #define DDRD_Bit3 (*((volatile bit_field*) (0x31))).Bit3 #define DDRD_Bit4 (*((volatile bit_field*) (0x31))).Bit4 #define DDRD_Bit5 (*((volatile bit_field*) (0x31))).Bit5 #define DDRD_Bit6 (*((volatile bit_field*) (0x31))).Bit6 #define DDRD_Bit7 (*((volatile bit_field*) (0x31))).Bit7 #define PIND_Bit0 (*((volatile bit_field*) (0x30))).Bit0 #define PIND_Bit1 (*((volatile bit_field*) (0x30))).Bit1 #define PIND_Bit2 (*((volatile bit_field*) (0x30))).Bit2 #define PIND_Bit3 (*((volatile bit_field*) (0x30))).Bit3 #define PIND_Bit4 (*((volatile bit_field*) (0x30))).Bit4 #define PIND_Bit5 (*((volatile bit_field*) (0x30))).Bit5 #define PIND_Bit6 (*((volatile bit_field*) (0x30))).Bit6 #define PIND_Bit7 (*((volatile bit_field*) (0x30))).Bit7 #endif int main () { while (1) { PORTD_Bit0 = 1; PORTD_Bit0 = 0; }; }
  6. Пока предлагаю поменять мегу8 на любую другую и попробовать попрограммировать ее. Сам помнится мучался именно с восьмеркой. Какая то она "недоделанная".
  7. /* ===================================================================== itoa. ===================================================================== */ char* itoa (int value, char *string, int radix) { //~~~~~~~~~~~~~~~~~~~~~~~~~ char *dst; char digits[32]; unsigned int x; int i, n; //~~~~~~~~~~~~~~~~~~~~~~~~~ dst = string; if (radix < 2 || radix > 36) { *dst = 0; return string; } if (radix == 10 && value < 0) { *dst++ = '-'; x = -value; } else x = value; i = 0; do { n = x % radix; digits[i++] = (n < 10 ? (char)n+'0' : (char)n-10+'a'); x /= radix; } while (x != 0); while (i > 0) *dst++ = digits[--i]; *dst = 0; return string; } Попроще /* ===================================================================== "Переворачивает" строку символов. ===================================================================== */ void strreverse(char* begin, char* end) { char aux; while(end > begin) aux=*end, *end--=*begin, *begin++=aux; } /* ===================================================================== Перевод числа в строку символов. ===================================================================== */ char* itoa(int value, char* result, unsigned char base) { //~~~~~~~~~~~~~~~~~~~ char* out = result; int quotient; //~~~~~~~~~~~~~~~~~~~ // check that the base if valid if (base < 2 || base > 16) { *result = 0; return result; }; if (value >= 0) quotient = value; else quotient = -value; do { *out = "0123456789ABCDEF"[quotient % base]; ++out; quotient /= base; } while (quotient); // Only apply negative sign for base 10 if (value < 0 && base == 10) *out++ = '-'; strreverse(result, out-1); *out = 0; return result; } Еще проще /* ===================================================================== Перевод числа в строку ASCII символов. Принимает максимальное значение для перевода 65535. Результат -> в массиве char`ов. ===================================================================== */ void IntToStr (unsigned int val, char str[]) { //~~~~~~~~~~~~~~~~~~~~~~~ signed char i = 0, j = 0; unsigned char digits[5]; //~~~~~~~~~~~~~~~~~~~~~~ while (val) { digits[i] = val % 10; i++; val = val / 10; }; i--; while ( i >= 0 ) { str[j] = (digits[i]+ 0x30); j++; i--; }; str[j] = 0x00; } И здесь посмотрите http://www.jb.man.ac.uk/~slowe/cpp/itoa.html
  8. И правда. Смещение напряжения на неинвертирующем входе ниже напряжения питания полностью изменило картину. Все работает :-) Спасибо за живое участие.
  9. Уважаемые, подскажите пожалуйста, что надо сделать, чтоб эта схема заработала на практике. А то в книжках работает. В симуляторах типа MultiSim тоже. А на макетке - нет. Может я где то что то не так понял ? :-))
  10. Вобщем то сам разобрался. И с KEIL и с IAR. А что KEILом никто не пользуется ? А что вообще тогда предпочитает пипл ? После IARа KEIL как то солиднее смотрится. Или это первое впечатление ? :-))
  11. 1) Написал проектик в KEIL - мигание парочкой светодиодиков для SAM7S64. В симуляторе - все работает. Залил полученный bin SAMBой - тоже все прекрасно. А вот в RAM отладку никак не могу запустить. Смотрел примеры идущие с KEILом. Там отладка в RAM работает. Настроил свой проект абсолютно также, как и в примерах. Ini для RAM из примеров подпихнул. Пробовал сделать так http://www.keil.com/support/docs/2963.htm Нифига не понимаю - не работает и все. Уже голову сломал. Может я что то важное пропустил ? 2) Насчет IAR - все работает - отладка и в RAM и FLASH. Как получить bin для SAMBA ? Raw-binary - заливаю - после подачи питания не стартует. Может в IAR надо включать ассемблерный стартап как и в KEIL ? Где его взять ?
  12. Да ну прям таки ;-) Насколько я разбираюсь в английском - это означает "параллельное программирование работает некорректно". Но ведь работает же. Когда писал себе параллельный программатор - включал и выключал эти фузы во всевозможных комбинациях. Да некорректно работает при такой комбинации фузов - не дает записать/считать флэш, например. Но в режим программирования входит и сменить значения фузов позволяет. После установки фузов "как положено" - програмируется и параллельным и последовательным.
  13. JTAG miniICE

    А Вы не лодырь заливайте, я ж выкладывал там последнюю прошивку (не надо через AVR Prog ничего потом заливать) http://pol-sem.narod.ru/AVRminiICE/jtag.files/miniICE.hex и фузы для AVReal BODLEVEL = 1 BODEN = 1 SUT = 0 CKSEL = F BLB1 = 3 BLB0 = 3 OCDEN = 0 JTAGEN = 0 CKOPT = 1 EESAVE = 1 BOOTSZ = 0 BOOTRST = 1
  14. Basic Interpreter for AVR

    http://instruct1.cit.cornell.edu/courses/e...dbh8/index.html
  15. А где глобальное разрешение прерываний ? в CV это #asm ("sei")
×
×
  • Создать...