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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
DiGiCat
Друг Кота
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

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

Сообщение DiGiCat »

day0l писал(а):прошил attiny не выставив неодного фьюза
Под тактирование от кварца наверно от 8Мгц "настроил" attiny :) Кварц попробуй повесить
scio me nihil scire...
_______________________

Изображение <= Жалобная кнопка в правом нижнем углу... )
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение 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 в фоновом режиме, не мешая основной программе) если вовремя не остановить, то так всё и будет туда записываться. Вот и всё.
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
day0l
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт май 14, 2010 15:48:35

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

Сообщение day0l »

Под тактирование от кварца наверно от 8Мгц "настроил" attiny Кварц попробуй повесить

тоесть я понял так: если его шьёшь чтобы он работал от кварца, то и шить его надо ПОТОМ с кварцом и наоборот если без кварца... я правильно понял?
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Пррравильно. :)))
Даже при прошивке МК его надо чем-то тактировать. Если однажды настроил
его фьюзы на внешний кварц, то и шить его потом нужно с кварцем. Можешь сам проверить:
Нацепить на него кварц с кондёрами(на всякий пожарный) за тем запрограммировать его фьюзы на работу с кварцем. После этого отключить и снова включить питание МК. Проверить программатором, что он определяется, за тем снова отключить питание и снять кварц, снова подать питание и проверить программатором - программатор его не обнаружит до тех пор, пока не впаяешь кварц назад, к МК.
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
teist
Открыл глаза
Сообщения: 61
Зарегистрирован: Пт янв 01, 2010 20:43:32
Откуда: cccp

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

Сообщение teist »

Подскажите пожалуйста как можно тактовую частоту в смысле, частоту кварца
подать на внешний вывод ATtiny2313. Я пробовал так:
m1: sbi portD,6
cbi portD,6
...............
sbi portD,6
cbi portD,6
rjmp m1
но частота меньше в разы!
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Нееет :) :) :) Для этого есть фьюзик "CKOUT" После его программирования, на выводе
"PortD2" (PD 2) появится тактовый сигнал микроконтроллера. :)
Такое годится когда в схеме имеется несколько микроконтроллеров, работу которых надо засинхронизировать - это раз, когда надо уменьшить количество кварцев в схеме - это два.
Ну и для каких-нибудь других нужд - это три. :)) :) :)
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
teist
Открыл глаза
Сообщения: 61
Зарегистрирован: Пт янв 01, 2010 20:43:32
Откуда: cccp

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

Сообщение teist »

Спасибо DX168B ! Все получилось. Чего не ждал так синусоиды,думал будет меандр. :))
хотя может это осцилл так кажет на краю полосы пропускания? :shock:
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Это скорее всего осциллограф, из за большой входной ёмкости. Я подавал такой сигнал в свои устройства и ничего - работает. Если не заметил, то даже в даташитах в диаграммах рисуют
не чёткие меандры, а как будто обрезанный синус (накось выкусили) :))) :))) :))) :)))
И на самом деле - фронты меандров не ровные, а наклонные. Особенно заметно это
на высоких частотах. Можно ставить даже эксперимент - подать сигнал прямоугольной формы на осциллограф с частотой примерно 100КГц и раааааастянуть его, увеличив частоту развёртки
осцилла в 2-3 раза (на моём С1-65 есть для этого отдельный переключатель) и рассмотреть
на нем фронты импульсов. Убедишься сам. :)
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Простите, что не в тему... :)
У кого нибудь не валяется схемка голосового модуля? Лучше, чтобы это был несложный голосовой модуль с 6 сообщениями, вызываемых с каждого отдельного вывода. Длинна сообщений 7-8 секунд.
Интернет ничего толкового не дал.
I am DX168B and this is my favourite forum on internet!
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

Потратил две недели на сборку и освоение программатора. Собирал USBtinyISP (тинька для меня самый доступный МК).
Наконец добрался до самого волнующего момента: прошивка программы мигания светодиодом, включение - и вуаля! Оно мигает. недолго думая навесил на ПортБ 8 светодиодов через резисторы 330-370 ом (на самом деле восьмисегментный индикатор, тоже с резисторами), и в бесконечном цикле начал выполнять к PORTB+=1; И тут косяк: при последующей прошивке тинька не захотела программироваться, при этом во включенном состоянии продолжает исправно мигать светодиодами, свежая тинька на ее месте прошивается и работает, на упрямой тиньке были выставлены фьюзы на внутренний RC осциллятор 4Мгц, время на разгон то ли 4 то ли 65 мс.
Как продиагностировать и вылечить непрошивающийся МК? RSTDISBL точно не трогал.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Восстановить можно через параллельный программатор, это если трогались фьюзы
SPIEN и RSTDISBL. Перед перепрошивкой следует очистить сначала МК.
RSTDISBL мог выставиться, если в файле прошивки были записаны конфигурационные байты фьюзов. Проверить МК можно так:
Запустить девайс, за тем подать высокий уровень на вывод RESET с +5V МК. Если продолжает
мигать, то подать низкий уровень с корпуса программатора (GND). Если так же нет реакции,
то значит что либо слетел вывод RESET, либо фьюз RSTDISBL выставился в результате какого-то сбоя при программировании. При изменении фьюзов, их надо сначала прочитать, а потом изменять и программировать. У меня валяется дохлая тинька, предварительно не прочитал фьюзы и
взялся их изменять и программировать. В итоге - дохлый МК. Для восстановления мне нужен будет
внешний генератор. Но пока не спешу, у меня их много халявных
I am DX168B and this is my favourite forum on internet!
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

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

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

Уже голова кружится - контакты в порядке, программа выполняется, все порты работают... что такое?
Последний раз редактировалось Shurf Ср июн 09, 2010 19:15:34, всего редактировалось 1 раз.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Фьюз SPIEN. Скорее всего он запрограммировался. Этот фьюз отвечает за возможность последовательного программирования через интерфейс SPI. Восстанавливается параллельным программатором. Может слететь один из выводов - MOSI, MISO или SCK. Так-же может быть и МК
дефектным. Может быть и плохой контакт в панельке МК с программатором. Может одна нога мимо попадает в панельке. Всякое может быть.
I am DX168B and this is my favourite forum on internet!
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

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

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

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

for(;;)
{
        PORTB += 1;
        _delay_ms(1000);
}


Я решил, что когда PB = 0xFF, то на следующей итерации он обнулиться, поэтому нет нужды выставлять проверки. Нормально все так зациклилось. Но не могло ли из-за этого все и произойти? Глупый вопрос, но чем черт не шутит...
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

Сегодня выполнил квест по поиску компьютера с COM-портом. В общем uniprof отлично видит эти МК, замечательно их читает и шьет. Использовал программатор Громова. Еще я понял, что этому программатору наплевать на значения фьюзов CSKEL - шьет вообще любые.
Но домашний программатор опять не справился. Не в программаторе ли проблема?
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Возможно. Я шью программатором UniProf и 5ю проводами с LPT порта. Проблем никогда не имел.
Для шитья лучше найти комп постарее с этими портами. Попробуй в своём программаторе сбросить скорость записи\чтения в\с МК, если есть такая возможность.
I am DX168B and this is my favourite forum on internet!
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

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

К сведению: до того как МК перестали шиться - процесс прошивки тоже проходил не гладко - зачастую только со 2-3го раза. Первый раз я, рассматривая схему, обнаружил, что МК шились без подключения их к GND. Исправил. Но процесс прошивки не только не стал более стабильным, но и ухудшился.
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

Собрал Протосса - не определяется компом( Мега8 в нем шьется норм. По какой-то причине тиньки, которые не шились у меня USBtinyISPом стали шиться, но когда МК питает восьмисегментный индикатор то шиться категорически отказывается - видимо управляя лишь Resetом программатору не удается ввести его в режим ISP. Вот таки дела (. Кто знает, как грамотно организовывать схемы, чтобы ISP запускался - напишите плз).
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Возможно у тебя слабый блок питания, то есть при работе с индикатором происходит падение напряжения питания. Вообще, индикаторы надо подключать к МК через резисторы омов так на 68..150. Программатор лучше питать от отдельного источника питания, так как у USB порта низкий штатный ток (mA). Если есть подтягивающие резисторы на портах, то для подтяжки на корпус лучше поставить резюки на 5,6К, а для подтяжки на + источника лучше поставить резюки на 3,9К. В своих девайсах я так и делаю и проблем никогда не видел.
Я заметил у себя некую особенность:
Когда контроллер сидит в режиме программирования, то он потребляет небольшой ток.
Тоже самое, когда контроллер пустой. Но когда в него вшита программа и он начинает её выполнять, то он начинает жрать больше тока. Именно по этому придумали Sleep Mode в МК.
Возможно по этому к тебя контроллер не смог войти в режим программирования.
I am DX168B and this is my favourite forum on internet!
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

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

Сообщение Shurf »

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

Совсем детский вопрос - что такое подтяжка я понял, а вот зачем она нужна? Чтобы порт МК не пыхтел от выдаваемого тока?
Последний раз редактировалось Shurf Чт июн 17, 2010 23:26:24, всего редактировалось 2 раза.
Ответить

Вернуться в «AVR»