Страница 54 из 132

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Сб май 22, 2010 17:30:20
DiGiCat
day0l писал(а):прошил attiny не выставив неодного фьюза
Под тактирование от кварца наверно от 8Мгц "настроил" attiny :) Кварц попробуй повесить

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Вс май 23, 2010 01:58:48
DX168B
Я программы пишу в AVRstudio, а прошиваю в UNIPROF (5 проводов с LPT порта, точнее кабель 6-жильный с оплёткой и длинной 2,5 метров- изврат, не правда ли? :))) :))) :))) ) и все шьётся без ошибок на высокой скорости. :) Хотел приложить кусок своего кода, может кто-нибудь помог бы разобраться с в чем ошибка, но не успел - сам разобрался. Проблема была такого рода, что при вызове п\программы задержки - программа там и оставалась, в той задержке на бесконечное время, виной тому оказалось прерывание EEP_READY, в обработчике которого сбрасывался регистр, который использовался в циклах задержки и как метка, указывающая, что память EEPROM свободна в программе записи в EEPROM, для того, чтобы можно было приступить к записи следующего значения.
Начало программы выглядело так:
reset:
ldi r16, RAMend
out SPL, r16
sbi EECR, EERIE ;Разрешение прерывания по готовности EEPROM
............ и т.д.

;обработчик прерывания EEP_READY
EEP_READY:
ldi r18, 0x00 ;Сбрасываем регистр
reti

;Процедура записи в EEPROM
EEP_WRITE:
cli
ldi dx1, 0x01
out EEAR, dx1
lds dx1, dig1
out EEDR, dx1
sbi EECR, EEMWE
sbi EECR, EEWE
ldi r18, 255
sei
eewr1:
cpi r18, 0x00
brne eewr1
;ждём сброса регистра по прерыванию, чтобы идти далее
;--- Следующее значение
cli
ldi dx1, 0x02
out EEAR, dx1
lds dx1, dig2
out EEDR, dx1
sbi EECR, EEMWE
sbi EECR, EEWE
ldi r18, 255
sei
eewr2:
cpi r18, 0x00
brne eewr2
;ждём сброса регистра по прерыванию, чтобы идти далее
;........... и т.д.
ret

Так вот, я разрешил прерывание по готовности EEPROM в НАЧАЛЕ ПРОГРАММЫ и оно постоянно срабатывало и обнуляло мне регистр r18, который я ещё использовал и в циклах задержки (вообще в других местах программы) А я билсягалавойапстену и не знал где ошибка.
К чему я фФсё это размазал? А для того, чтобы Вы, братья коты не сталкивались с подобными случаями в своих программах. Проблема решена была просто:
Команду sbi EECR, EERIE я перенёс в начало п\программы EEP_WRITE и в конце неё добавил команду сbi EECR, EERIE. Главное - в симуляторе проблем небыло и подобного не замечалось, а вот в реальном МК случилась такая хрень. :)) Такие вот недочёты могут убить напрочь EEPROM, если по данному прерыванию (в его обработчике) производить запись в неё (так удобнее для записи длинномерных массивов данных в EEPROM в фоновом режиме, не мешая основной программе) если вовремя не остановить, то так всё и будет туда записываться. Вот и всё.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Вс май 23, 2010 09:29:06
day0l
Под тактирование от кварца наверно от 8Мгц "настроил" attiny Кварц попробуй повесить
тоесть я понял так: если его шьёшь чтобы он работал от кварца, то и шить его надо ПОТОМ с кварцом и наоборот если без кварца... я правильно понял?

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Пн май 24, 2010 00:31:34
DX168B
Пррравильно. :)))
Даже при прошивке МК его надо чем-то тактировать. Если однажды настроил
его фьюзы на внешний кварц, то и шить его потом нужно с кварцем. Можешь сам проверить:
Нацепить на него кварц с кондёрами(на всякий пожарный) за тем запрограммировать его фьюзы на работу с кварцем. После этого отключить и снова включить питание МК. Проверить программатором, что он определяется, за тем снова отключить питание и снять кварц, снова подать питание и проверить программатором - программатор его не обнаружит до тех пор, пока не впаяешь кварц назад, к МК.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Пн май 24, 2010 09:40:57
teist
Подскажите пожалуйста как можно тактовую частоту в смысле, частоту кварца
подать на внешний вывод ATtiny2313. Я пробовал так:
m1: sbi portD,6
cbi portD,6
...............
sbi portD,6
cbi portD,6
rjmp m1
но частота меньше в разы!

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Пн май 24, 2010 12:56:12
DX168B
Нееет :) :) :) Для этого есть фьюзик "CKOUT" После его программирования, на выводе
"PortD2" (PD 2) появится тактовый сигнал микроконтроллера. :)
Такое годится когда в схеме имеется несколько микроконтроллеров, работу которых надо засинхронизировать - это раз, когда надо уменьшить количество кварцев в схеме - это два.
Ну и для каких-нибудь других нужд - это три. :)) :) :)

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Пн май 24, 2010 14:15:08
teist
Спасибо DX168B ! Все получилось. Чего не ждал так синусоиды,думал будет меандр. :))
хотя может это осцилл так кажет на краю полосы пропускания? :shock:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Пн май 24, 2010 17:13:28
DX168B
Это скорее всего осциллограф, из за большой входной ёмкости. Я подавал такой сигнал в свои устройства и ничего - работает. Если не заметил, то даже в даташитах в диаграммах рисуют
не чёткие меандры, а как будто обрезанный синус (накось выкусили) :))) :))) :))) :)))
И на самом деле - фронты меандров не ровные, а наклонные. Особенно заметно это
на высоких частотах. Можно ставить даже эксперимент - подать сигнал прямоугольной формы на осциллограф с частотой примерно 100КГц и раааааастянуть его, увеличив частоту развёртки
осцилла в 2-3 раза (на моём С1-65 есть для этого отдельный переключатель) и рассмотреть
на нем фронты импульсов. Убедишься сам. :)

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Сб май 29, 2010 22:59:31
DX168B
Простите, что не в тему... :)
У кого нибудь не валяется схемка голосового модуля? Лучше, чтобы это был несложный голосовой модуль с 6 сообщениями, вызываемых с каждого отдельного вывода. Длинна сообщений 7-8 секунд.
Интернет ничего толкового не дал.

Вот непонятка случилась =(

Добавлено: Ср июн 09, 2010 01:04:30
Shurf
Потратил две недели на сборку и освоение программатора. Собирал USBtinyISP (тинька для меня самый доступный МК).
Наконец добрался до самого волнующего момента: прошивка программы мигания светодиодом, включение - и вуаля! Оно мигает. недолго думая навесил на ПортБ 8 светодиодов через резисторы 330-370 ом (на самом деле восьмисегментный индикатор, тоже с резисторами), и в бесконечном цикле начал выполнять к PORTB+=1; И тут косяк: при последующей прошивке тинька не захотела программироваться, при этом во включенном состоянии продолжает исправно мигать светодиодами, свежая тинька на ее месте прошивается и работает, на упрямой тиньке были выставлены фьюзы на внутренний RC осциллятор 4Мгц, время на разгон то ли 4 то ли 65 мс.
Как продиагностировать и вылечить непрошивающийся МК? RSTDISBL точно не трогал.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Ср июн 09, 2010 12:16:03
DX168B
Восстановить можно через параллельный программатор, это если трогались фьюзы
SPIEN и RSTDISBL. Перед перепрошивкой следует очистить сначала МК.
RSTDISBL мог выставиться, если в файле прошивки были записаны конфигурационные байты фьюзов. Проверить МК можно так:
Запустить девайс, за тем подать высокий уровень на вывод RESET с +5V МК. Если продолжает
мигать, то подать низкий уровень с корпуса программатора (GND). Если так же нет реакции,
то значит что либо слетел вывод RESET, либо фьюз RSTDISBL выставился в результате какого-то сбоя при программировании. При изменении фьюзов, их надо сначала прочитать, а потом изменять и программировать. У меня валяется дохлая тинька, предварительно не прочитал фьюзы и
взялся их изменять и программировать. В итоге - дохлый МК. Для восстановления мне нужен будет
внешний генератор. Но пока не спешу, у меня их много халявных

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Ср июн 09, 2010 17:43:58
Shurf
На reset (соответствующую ногу МК замыкаю на землю) исправно реагирует. При прошивке программатор тоже ресетит МК, пытаясь войти в programming mode. А вот дальше - никакой реакции. Как на МК в "обвязке", так и на "голом". Пытался программировать и через AVR Studio и через CVAVR.
Сдается мне, что придется строить параллельный программатор, но вот причины такого поведения не ясны.

Теперь боюсь трогать вторую тиньку - причина не ясна и ситуация может повториться.

Уже голова кружится - контакты в порядке, программа выполняется, все порты работают... что такое?

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Ср июн 09, 2010 17:48:02
DX168B
Фьюз SPIEN. Скорее всего он запрограммировался. Этот фьюз отвечает за возможность последовательного программирования через интерфейс SPI. Восстанавливается параллельным программатором. Может слететь один из выводов - MOSI, MISO или SCK. Так-же может быть и МК
дефектным. Может быть и плохой контакт в панельке МК с программатором. Может одна нога мимо попадает в панельке. Всякое может быть.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Ср июн 09, 2010 19:21:48
Shurf
Слабо представляю как выглядит процесс прошивки МК. Может ли быть такое, что SPIEN разпрограммировался из-за сбоя при прошивке? В AVR Studio специально его установить невозможно. И я опасные фьюзы не трогал. Контакты все обнюхал - все на месте. МК в другую панельку переставил - все так же.
Уж если о параллельном программировании речь пошла - посоветуйте простенький USB-программатор или просто стиратель фьюзов какой.

Код такой у меня был:

Код: Выделить всё

for(;;)
{
        PORTB += 1;
        _delay_ms(1000);
}
Я решил, что когда PB = 0xFF, то на следующей итерации он обнулиться, поэтому нет нужды выставлять проверки. Нормально все так зациклилось. Но не могло ли из-за этого все и произойти? Глупый вопрос, но чем черт не шутит...

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Чт июн 10, 2010 20:59:40
Shurf
Сегодня выполнил квест по поиску компьютера с COM-портом. В общем uniprof отлично видит эти МК, замечательно их читает и шьет. Использовал программатор Громова. Еще я понял, что этому программатору наплевать на значения фьюзов CSKEL - шьет вообще любые.
Но домашний программатор опять не справился. Не в программаторе ли проблема?

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Чт июн 10, 2010 21:45:45
DX168B
Возможно. Я шью программатором UniProf и 5ю проводами с LPT порта. Проблем никогда не имел.
Для шитья лучше найти комп постарее с этими портами. Попробуй в своём программаторе сбросить скорость записи\чтения в\с МК, если есть такая возможность.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Пт июн 11, 2010 20:47:17
Shurf
На следующей неделе соберу AVR 910 от Protooss, посмотрю, что он сможет. Потом на очереди USBbit =). Как только, так сразу отпишусь). Для порядка.

К сведению: до того как МК перестали шиться - процесс прошивки тоже проходил не гладко - зачастую только со 2-3го раза. Первый раз я, рассматривая схему, обнаружил, что МК шились без подключения их к GND. Исправил. Но процесс прошивки не только не стал более стабильным, но и ухудшился.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Чт июн 17, 2010 17:39:33
Shurf
Собрал Протосса - не определяется компом( Мега8 в нем шьется норм. По какой-то причине тиньки, которые не шились у меня USBtinyISPом стали шиться, но когда МК питает восьмисегментный индикатор то шиться категорически отказывается - видимо управляя лишь Resetом программатору не удается ввести его в режим ISP. Вот таки дела (. Кто знает, как грамотно организовывать схемы, чтобы ISP запускался - напишите плз).

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Чт июн 17, 2010 20:55:45
DX168B
Возможно у тебя слабый блок питания, то есть при работе с индикатором происходит падение напряжения питания. Вообще, индикаторы надо подключать к МК через резисторы омов так на 68..150. Программатор лучше питать от отдельного источника питания, так как у USB порта низкий штатный ток (mA). Если есть подтягивающие резисторы на портах, то для подтяжки на корпус лучше поставить резюки на 5,6К, а для подтяжки на + источника лучше поставить резюки на 3,9К. В своих девайсах я так и делаю и проблем никогда не видел.
Я заметил у себя некую особенность:
Когда контроллер сидит в режиме программирования, то он потребляет небольшой ток.
Тоже самое, когда контроллер пустой. Но когда в него вшита программа и он начинает её выполнять, то он начинает жрать больше тока. Именно по этому придумали Sleep Mode в МК.
Возможно по этому к тебя контроллер не смог войти в режим программирования.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Добавлено: Чт июн 17, 2010 23:00:12
Shurf
На свой второй двухразрядный восьмисегментник я поставил резисторы по 330-370 ом на каждый анод (у меня общий катод) - первый я просто сжег, запитывая напрямую от LM7805 :? . Единственный отдельный светодиод стоит без резисторов - везде кричат что это фича AVR - можно штуки 4 светодиодов цеплять напрямую.

Совсем детский вопрос - что такое подтяжка я понял, а вот зачем она нужна? Чтобы порт МК не пыхтел от выдаваемого тока?