Под тактирование от кварца наверно от 8Мгц "настроил" attinyday0l писал(а):прошил attiny не выставив неодного фьюза
ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
scio me nihil scire...
_______________________
<= Жалобная кнопка в правом нижнем углу... )
_______________________
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Я программы пишу в 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 в фоновом режиме, не мешая основной программе) если вовремя не остановить, то так всё и будет туда записываться. Вот и всё.
Начало программы выглядело так:
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. Главное - в симуляторе проблем небыло и подобного не замечалось, а вот в реальном МК случилась такая хрень.
I am DX168B and this is my favourite forum on internet!
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Под тактирование от кварца наверно от 8Мгц "настроил" attiny Кварц попробуй повесить
тоесть я понял так: если его шьёшь чтобы он работал от кварца, то и шить его надо ПОТОМ с кварцом и наоборот если без кварца... я правильно понял?
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Пррравильно.
Даже при прошивке МК его надо чем-то тактировать. Если однажды настроил
его фьюзы на внешний кварц, то и шить его потом нужно с кварцем. Можешь сам проверить:
Нацепить на него кварц с кондёрами(на всякий пожарный) за тем запрограммировать его фьюзы на работу с кварцем. После этого отключить и снова включить питание МК. Проверить программатором, что он определяется, за тем снова отключить питание и снять кварц, снова подать питание и проверить программатором - программатор его не обнаружит до тех пор, пока не впаяешь кварц назад, к МК.
Даже при прошивке МК его надо чем-то тактировать. Если однажды настроил
его фьюзы на внешний кварц, то и шить его потом нужно с кварцем. Можешь сам проверить:
Нацепить на него кварц с кондёрами(на всякий пожарный) за тем запрограммировать его фьюзы на работу с кварцем. После этого отключить и снова включить питание МК. Проверить программатором, что он определяется, за тем снова отключить питание и снять кварц, снова подать питание и проверить программатором - программатор его не обнаружит до тех пор, пока не впаяешь кварц назад, к МК.
I am DX168B and this is my favourite forum on internet!
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Подскажите пожалуйста как можно тактовую частоту в смысле, частоту кварца
подать на внешний вывод ATtiny2313. Я пробовал так:
m1: sbi portD,6
cbi portD,6
...............
sbi portD,6
cbi portD,6
rjmp m1
но частота меньше в разы!
подать на внешний вывод 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
Нееет
Для этого есть фьюзик "CKOUT" После его программирования, на выводе
"PortD2" (PD 2) появится тактовый сигнал микроконтроллера.
Такое годится когда в схеме имеется несколько микроконтроллеров, работу которых надо засинхронизировать - это раз, когда надо уменьшить количество кварцев в схеме - это два.
Ну и для каких-нибудь других нужд - это три.

"PortD2" (PD 2) появится тактовый сигнал микроконтроллера.
Такое годится когда в схеме имеется несколько микроконтроллеров, работу которых надо засинхронизировать - это раз, когда надо уменьшить количество кварцев в схеме - это два.
Ну и для каких-нибудь других нужд - это три.
I am DX168B and this is my favourite forum on internet!
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Спасибо DX168B ! Все получилось. Чего не ждал так синусоиды,думал будет меандр. 
хотя может это осцилл так кажет на краю полосы пропускания?
хотя может это осцилл так кажет на краю полосы пропускания?
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Это скорее всего осциллограф, из за большой входной ёмкости. Я подавал такой сигнал в свои устройства и ничего - работает. Если не заметил, то даже в даташитах в диаграммах рисуют
не чёткие меандры, а как будто обрезанный синус (накось выкусили)

И на самом деле - фронты меандров не ровные, а наклонные. Особенно заметно это
на высоких частотах. Можно ставить даже эксперимент - подать сигнал прямоугольной формы на осциллограф с частотой примерно 100КГц и раааааастянуть его, увеличив частоту развёртки
осцилла в 2-3 раза (на моём С1-65 есть для этого отдельный переключатель) и рассмотреть
на нем фронты импульсов. Убедишься сам.
не чёткие меандры, а как будто обрезанный синус (накось выкусили)
И на самом деле - фронты меандров не ровные, а наклонные. Особенно заметно это
на высоких частотах. Можно ставить даже эксперимент - подать сигнал прямоугольной формы на осциллограф с частотой примерно 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
Простите, что не в тему...
У кого нибудь не валяется схемка голосового модуля? Лучше, чтобы это был несложный голосовой модуль с 6 сообщениями, вызываемых с каждого отдельного вывода. Длинна сообщений 7-8 секунд.
Интернет ничего толкового не дал.
У кого нибудь не валяется схемка голосового модуля? Лучше, чтобы это был несложный голосовой модуль с 6 сообщениями, вызываемых с каждого отдельного вывода. Длинна сообщений 7-8 секунд.
Интернет ничего толкового не дал.
I am DX168B and this is my favourite forum on internet!
-
Shurf
- Встал на лапы
- Сообщения: 83
- Зарегистрирован: Ср май 12, 2010 10:24:41
- Откуда: Чувашия, Новочебоксарск
- Контактная информация:
Вот непонятка случилась =(
Потратил две недели на сборку и освоение программатора. Собирал USBtinyISP (тинька для меня самый доступный МК).
Наконец добрался до самого волнующего момента: прошивка программы мигания светодиодом, включение - и вуаля! Оно мигает. недолго думая навесил на ПортБ 8 светодиодов через резисторы 330-370 ом (на самом деле восьмисегментный индикатор, тоже с резисторами), и в бесконечном цикле начал выполнять к PORTB+=1; И тут косяк: при последующей прошивке тинька не захотела программироваться, при этом во включенном состоянии продолжает исправно мигать светодиодами, свежая тинька на ее месте прошивается и работает, на упрямой тиньке были выставлены фьюзы на внутренний RC осциллятор 4Мгц, время на разгон то ли 4 то ли 65 мс.
Как продиагностировать и вылечить непрошивающийся МК? RSTDISBL точно не трогал.
Наконец добрался до самого волнующего момента: прошивка программы мигания светодиодом, включение - и вуаля! Оно мигает. недолго думая навесил на ПортБ 8 светодиодов через резисторы 330-370 ом (на самом деле восьмисегментный индикатор, тоже с резисторами), и в бесконечном цикле начал выполнять к PORTB+=1; И тут косяк: при последующей прошивке тинька не захотела программироваться, при этом во включенном состоянии продолжает исправно мигать светодиодами, свежая тинька на ее месте прошивается и работает, на упрямой тиньке были выставлены фьюзы на внутренний RC осциллятор 4Мгц, время на разгон то ли 4 то ли 65 мс.
Как продиагностировать и вылечить непрошивающийся МК? RSTDISBL точно не трогал.
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Восстановить можно через параллельный программатор, это если трогались фьюзы
SPIEN и RSTDISBL. Перед перепрошивкой следует очистить сначала МК.
RSTDISBL мог выставиться, если в файле прошивки были записаны конфигурационные байты фьюзов. Проверить МК можно так:
Запустить девайс, за тем подать высокий уровень на вывод RESET с +5V МК. Если продолжает
мигать, то подать низкий уровень с корпуса программатора (GND). Если так же нет реакции,
то значит что либо слетел вывод RESET, либо фьюз RSTDISBL выставился в результате какого-то сбоя при программировании. При изменении фьюзов, их надо сначала прочитать, а потом изменять и программировать. У меня валяется дохлая тинька, предварительно не прочитал фьюзы и
взялся их изменять и программировать. В итоге - дохлый МК. Для восстановления мне нужен будет
внешний генератор. Но пока не спешу, у меня их много халявных
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
На reset (соответствующую ногу МК замыкаю на землю) исправно реагирует. При прошивке программатор тоже ресетит МК, пытаясь войти в programming mode. А вот дальше - никакой реакции. Как на МК в "обвязке", так и на "голом". Пытался программировать и через AVR Studio и через CVAVR.
Сдается мне, что придется строить параллельный программатор, но вот причины такого поведения не ясны.
Теперь боюсь трогать вторую тиньку - причина не ясна и ситуация может повториться.
Уже голова кружится - контакты в порядке, программа выполняется, все порты работают... что такое?
Сдается мне, что придется строить параллельный программатор, но вот причины такого поведения не ясны.
Теперь боюсь трогать вторую тиньку - причина не ясна и ситуация может повториться.
Уже голова кружится - контакты в порядке, программа выполняется, все порты работают... что такое?
Последний раз редактировалось Shurf Ср июн 09, 2010 19:15:34, всего редактировалось 1 раз.
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Фьюз 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
Слабо представляю как выглядит процесс прошивки МК. Может ли быть такое, что SPIEN разпрограммировался из-за сбоя при прошивке? В AVR Studio специально его установить невозможно. И я опасные фьюзы не трогал. Контакты все обнюхал - все на месте. МК в другую панельку переставил - все так же.
Уж если о параллельном программировании речь пошла - посоветуйте простенький USB-программатор или просто стиратель фьюзов какой.
Код такой у меня был:
Я решил, что когда PB = 0xFF, то на следующей итерации он обнулиться, поэтому нет нужды выставлять проверки. Нормально все так зациклилось. Но не могло ли из-за этого все и произойти? Глупый вопрос, но чем черт не шутит...
Уж если о параллельном программировании речь пошла - посоветуйте простенький USB-программатор или просто стиратель фьюзов какой.
Код такой у меня был:
Код: Выделить всё
for(;;)
{
PORTB += 1;
_delay_ms(1000);
}Я решил, что когда PB = 0xFF, то на следующей итерации он обнулиться, поэтому нет нужды выставлять проверки. Нормально все так зациклилось. Но не могло ли из-за этого все и произойти? Глупый вопрос, но чем черт не шутит...
-
Shurf
- Встал на лапы
- Сообщения: 83
- Зарегистрирован: Ср май 12, 2010 10:24:41
- Откуда: Чувашия, Новочебоксарск
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Сегодня выполнил квест по поиску компьютера с COM-портом. В общем uniprof отлично видит эти МК, замечательно их читает и шьет. Использовал программатор Громова. Еще я понял, что этому программатору наплевать на значения фьюзов CSKEL - шьет вообще любые.
Но домашний программатор опять не справился. Не в программаторе ли проблема?
Но домашний программатор опять не справился. Не в программаторе ли проблема?
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Возможно. Я шью программатором UniProf и 5ю проводами с LPT порта. Проблем никогда не имел.
Для шитья лучше найти комп постарее с этими портами. Попробуй в своём программаторе сбросить скорость записи\чтения в\с МК, если есть такая возможность.
Для шитья лучше найти комп постарее с этими портами. Попробуй в своём программаторе сбросить скорость записи\чтения в\с МК, если есть такая возможность.
I am DX168B and this is my favourite forum on internet!
-
Shurf
- Встал на лапы
- Сообщения: 83
- Зарегистрирован: Ср май 12, 2010 10:24:41
- Откуда: Чувашия, Новочебоксарск
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
На следующей неделе соберу AVR 910 от Protooss, посмотрю, что он сможет. Потом на очереди USBbit =). Как только, так сразу отпишусь). Для порядка.
К сведению: до того как МК перестали шиться - процесс прошивки тоже проходил не гладко - зачастую только со 2-3го раза. Первый раз я, рассматривая схему, обнаружил, что МК шились без подключения их к GND. Исправил. Но процесс прошивки не только не стал более стабильным, но и ухудшился.
К сведению: до того как МК перестали шиться - процесс прошивки тоже проходил не гладко - зачастую только со 2-3го раза. Первый раз я, рассматривая схему, обнаружил, что МК шились без подключения их к GND. Исправил. Но процесс прошивки не только не стал более стабильным, но и ухудшился.
-
Shurf
- Встал на лапы
- Сообщения: 83
- Зарегистрирован: Ср май 12, 2010 10:24:41
- Откуда: Чувашия, Новочебоксарск
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Собрал Протосса - не определяется компом( Мега8 в нем шьется норм. По какой-то причине тиньки, которые не шились у меня USBtinyISPом стали шиться, но когда МК питает восьмисегментный индикатор то шиться категорически отказывается - видимо управляя лишь Resetом программатору не удается ввести его в режим ISP. Вот таки дела (. Кто знает, как грамотно организовывать схемы, чтобы ISP запускался - напишите плз).
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Возможно у тебя слабый блок питания, то есть при работе с индикатором происходит падение напряжения питания. Вообще, индикаторы надо подключать к МК через резисторы омов так на 68..150. Программатор лучше питать от отдельного источника питания, так как у USB порта низкий штатный ток (mA). Если есть подтягивающие резисторы на портах, то для подтяжки на корпус лучше поставить резюки на 5,6К, а для подтяжки на + источника лучше поставить резюки на 3,9К. В своих девайсах я так и делаю и проблем никогда не видел.
Я заметил у себя некую особенность:
Когда контроллер сидит в режиме программирования, то он потребляет небольшой ток.
Тоже самое, когда контроллер пустой. Но когда в него вшита программа и он начинает её выполнять, то он начинает жрать больше тока. Именно по этому придумали Sleep Mode в МК.
Возможно по этому к тебя контроллер не смог войти в режим программирования.
Я заметил у себя некую особенность:
Когда контроллер сидит в режиме программирования, то он потребляет небольшой ток.
Тоже самое, когда контроллер пустой. Но когда в него вшита программа и он начинает её выполнять, то он начинает жрать больше тока. Именно по этому придумали Sleep Mode в МК.
Возможно по этому к тебя контроллер не смог войти в режим программирования.
I am DX168B and this is my favourite forum on internet!
-
Shurf
- Встал на лапы
- Сообщения: 83
- Зарегистрирован: Ср май 12, 2010 10:24:41
- Откуда: Чувашия, Новочебоксарск
- Контактная информация:
Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
На свой второй двухразрядный восьмисегментник я поставил резисторы по 330-370 ом на каждый анод (у меня общий катод) - первый я просто сжег, запитывая напрямую от LM7805
. Единственный отдельный светодиод стоит без резисторов - везде кричат что это фича AVR - можно штуки 4 светодиодов цеплять напрямую.
Совсем детский вопрос - что такое подтяжка я понял, а вот зачем она нужна? Чтобы порт МК не пыхтел от выдаваемого тока?
Совсем детский вопрос - что такое подтяжка я понял, а вот зачем она нужна? Чтобы порт МК не пыхтел от выдаваемого тока?
Последний раз редактировалось Shurf Чт июн 17, 2010 23:26:24, всего редактировалось 2 раза.