ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
113557
Ксения (21.02.2008 00:09, просмотров: 40345)
90USB647 и его причуды 90USB647 и его причуды Прежде чем что-то спрашивать у других, расскажу о том, что удалось узнать мне самой при возне с этим МК. После Tiny2313 (с которым я раньше имела дело) он мне показался совершенно роскошным МК. Не надо стало ужиматься, и можно было перейти на small-модель памяти. А главное много портов и USB на борту! Немного удручало, что мало кто его юзал. Народ предпочитает не связываться с программированием USB-контроллеров, а ставить специализированные конверторы USB-порт. Электронщикам так видимо приятнее - не надо разбираться с программированием USB, а поставил лишний корпус и готово. А мне хотелось потрогать USB своими руками. А уж полный кайф, чтобы устройство регистрировалось на компьютере в списке девайсов под именем моего устройства, а не фирмы-изготовителя того конвертора. Первые неприятности возникли, когда 90USB647 напрочь отказался программироваться через AvReal. Уж и частоту я подбирала от 50 КГц до частоты кварца (а он у меня 16 МГц). Все напрасно. Говорит, что "Can't recync" и конец. Уж 100 раз проверила пины, куда программатор подключала. И сопротивление у меня в 1 ком стоит, чтобы ток с MOSI в схему не утекал, а все не работает. Пришлось следовать инструкции и программировать его через USB фирменной программой Flip-3. Там тоже не просто - драйвер надо устанавливать. Программу прошила простенькую - светодиодиком с периодом в 1 секунду мигать и в этот момент букву A в порт RS-232 кидать. Замигало, но медленнее, чем секунда. И вместо буквы A какая-то хрень. Кинулась прогу исправлять, а 90USB647 после прошивки не узнается драйвером. Однако выкрутилась. Оказалось, что если в этот момент запустить AvReal (хотя бы в режиме чтения), о компьютер сразу обнаруживает новое USB-устройство и драйвер его подцепляет. Скорее всего Reset, который делает AvReal, его взбадривает. Вот так и программировала его поначалу сразу через два конца. Подобрала делитель для RS-232 порта (хоть есть USB, но от старого доброго RS-232 я не отказалась, расчитывая на то, что пока не освою USB буду работать через него). По делителю вычислила, что рабочая частота равна 2 МГц. Это меня очень удивило тем, что внешний кварц у меня стоит 16 МГц, а, согласно даташиту, продажный МК должен быть установлен на внутренний RC-генератор с частотой 8 МГц и с предустановленным делителем на 8 (CKDIV=0). Т.е. по описанию он должен на 1 МГц работать, а никак не на двух. Оказалось, что вранье в даташите. Видимо с Mega64 его переписывали. Не может USB работать на 1 МГц-кварце, оттого они и прошили фузы на внешний кварц, а делитель на 8 оставили. Вот и получились наблюдаемые 2 МГц делением частоты кварца 16 на делитель 8. Это меня обнадежило, т.к. программированию через USB фузы недоступны, и будь установлен внутренний осциллятор, то мое дело было бы швах. А делитель можно было изменить программно задним числом, несмотря на то, что стартовал процессор с делителем. Для этого надо было записать в регистр CLKPR сначала 0x80, а потом 0. После чего МК заработал на полной частоте кварца, и мой светодиод стал мигать ровно через секунду. Так каково же было мое удивление, когда после этого AvReal стал без запинки прошивать МК практически при любом параметре частоты! Фирменный USB-загрузчик (в старших адресах памяти) я при этом нечаянно стерла, но он мне был больше не нужен. CKDIV я сразу же пробила в 1, чтобы не дай бог снова не влипнуть, и стала наслаждаться жизнью :). AvReal несомненно более удобен, чем фирмовая прога написанная на Java. Для любопытных привожу значения фабричных фузов, которые прочитала AvReal: Fuses OSCCAL=91 CKDIV=0 CKOUT=1 SUT=1 CKSEL=E BLB1=3 BLB0=3 OCDEN=1 JTAGEN=0 WDTON=1 EESAVE=1 BOOTSZ=1 BOOTRST=1 HWBE=0 BODLEVEL=3 Из моих пожеланий автору AvReal сделать параметр верхнего адреса памяти, выше которого прошивка игнорировалась. Дело в том, что IAR-компилятор генерит hex на весь объем памяти, хотя в неиспользуемой части стоят 0xFF. Раньше такое пожелание показалось бы странным, но когда в продаже появились МК с прошитыми загрузчиками, то сразу стало актуальным. Чтобы по нечаянности не стереть загрузчик (как я его стерла) было бы очень удобно, если бы пробивалка AvReal умела останавливаться сама. P.S. Расскажите кто-нибудь, где вы теперь берете свежие IAR-компиляторы. Зашла на ftp, а там пустота. Что тут произошло в мое отсутствие?