Attiny13 прошивается, но не работает

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 7
Зарегистрирован: Вс авг 11, 2024 13:07:59

Сообщение eduard_7 »

Пожалуйста посоветуйте что можно сделать.
Компиляция произведена в Atmel Studio. Симуляция проходит корректно в Proteus. Прошивка HEX файлов в МК также проходит успешно. Однако контроллер не работает.
Пробовал прошивать через:
USBASP китайскиы- успешно
Arduino UNO - успешно

Программами:
AVRDUDE Prog - успешно
SinaProg 2.1 - успешно

Но все тшетно. Не работает. Напряжение и разводку на макетке проверил неоднократно. Чип был заменен на другой. Без результата.

Заранее спасибо
Реклама
Модератор
Аватара пользователя
Сообщения: 19101
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

eduard_7 писал(а):посоветуйте что можно сделать.
показать свой исходный текст.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Родился
Сообщения: 7
Зарегистрирован: Вс авг 11, 2024 13:07:59

Сообщение eduard_7 »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4613727#p4613727"]
eduard_7 писал(а):посоветуйте что можно сделать.
показать свой исходный текст.[/uquote]

Какой файл прицепить? Программа написана на C в Atmel Studio.
Вымогатель припоя
Сообщения: 602
Зарегистрирован: Ср янв 06, 2010 10:01:46

Сообщение metan »

Насколько я понимаю, маловероятно, что исходник что-то даст. Пассажир же уверяет, что симуляция норм.
Нужна еще схема всего устройства и желательно его фото, и разумеется описание, что и как должно работать, и как именно не работает. Ждать ответа при исходных данных, которые дадены, нелепо. Причин может быть огромное количество.
Еще можно посоветовать проверить хотя бы сам чип, залив в него простейший блинк, чтобы удостовериться хотя бы в исправности используемых линий портов.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1884
Зарегистрирован: Вт мар 28, 2023 21:17:15
Откуда: Universe

Сообщение Mursik »

ИМХО, опять фузы не туда..
I have a dream...¯\_(ツ)_/¯
Реклама
Родился
Сообщения: 7
Зарегистрирован: Вс авг 11, 2024 13:07:59

Сообщение eduard_7 »

Прицепил файлы.
Мигалка (blink) на чипе работает. Как и симулятор в протеусе по прикрепленной схеме с HEX из папки Debug
Вложения
Attiny13_polyv_sxema_test.pdf
(13.89 КБ) 141 скачивание
Attiny13_POLIV.rar
(223.21 КБ) 122 скачивания
Реклама
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

eduard_7 писал(а):Симуляция проходит корректно в Proteus.
Я не вижу нормальной работы.

Опишите, что происходит после asm("sleep");// уход в сон

Добавлено after 1 hour 14 minutes 50 seconds:

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

// основной отсчет времени
ISR (WDT_vect) {
	if(period_time_out) period_time_out--;
	if(work_time_out) work_time_out--;
	WDTCR |= (1<<WDTIE); // разрешаем прерывания по ватчдогу. Иначе будет резет.
}
Если попали в прерывание, то оно уже разрешено (в прерывании, обычно, запрещены прерывания, ну оно(прерывание) будет разрешено после выхода из прерывания), так что WDTCR |= (1<<WDTIE); не имеет смысла.
Тут возможно надо сбросить флаг, типа мы обработали прерывание WDT и не надо проц. сбрасывать.
OKF
Это не хвост, это антенна
Сообщения: 1455
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="codenamehawk",url="/forum/viewtopic.php?p=4614647#p4614647"]Я не вижу нормальной работы.

Опишите, что происходит после asm("sleep");// уход в сон[/uquote]
Не буду говорить о сне, но с WDT у меня были проблемы в Протеусе. Приходилось проверять в железе.(
Родился
Сообщения: 7
Зарегистрирован: Вс авг 11, 2024 13:07:59

Сообщение eduard_7 »

[uquote="codenamehawk",url="/forum/viewtopic.php?p=4614647#p4614647"]
eduard_7 писал(а):Симуляция проходит корректно в Proteus.
Я не вижу нормальной работы.

Опишите, что происходит после asm("sleep");// уход в сон

Добавлено after 1 hour 14 minutes 50 seconds:

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

// основной отсчет времени
ISR (WDT_vect) {
	if(period_time_out) period_time_out--;
	if(work_time_out) work_time_out--;
	WDTCR |= (1<<WDTIE); // разрешаем прерывания по ватчдогу. Иначе будет резет.
}
Если попали в прерывание, то оно уже разрешено (в прерывании, обычно, запрещены прерывания, ну оно(прерывание) будет разрешено после выхода из прерывания), так что WDTCR |= (1<<WDTIE); не имеет смысла.
Тут возможно надо сбросить флаг, типа мы обработали прерывание WDT и не надо проц. сбрасывать.[/uquote]

Касательно вопроса WDTCR |= (1<<WDTIE) думаю ответ в DS (прикрепил)
Опять же, я до глубоко разбора алгоритма не дошел. Решил пока запустить чип и начать разбираться и подстраивать под свои цели. Убедившись, что протеус прекрасно отсимулировал, со спокойной совестью перешел к прошивке. При подаче питания, на пару секунд загораеся led POMPA и все. Никакой реакции на кнопку.

Мне интересно, если кто-то уже успел собрать, тоже такая реакция после прошивки?
Вложения
Watchdog timer.jpg
(214.41 КБ) 105 скачиваний
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

eduard_7 писал(а):Убедившись, что протеус прекрасно отсимулировал
Вы не ответили на вопрос
codenamehawk писал(а):Опишите, что происходит после asm("sleep");
Если более понятно, куда попадает программа, после выхода из сна.
В отладчике это легко отслеживается.
В отладчике она ведет себя так, как вы задумали? Если так, то опишите что вы от нее ожидаете, т.е. что она должна делать.
Martian писал(а):я тоже не увидел декабриста
"Видишь суслика? - Нет - И я не вижу. А он есть."
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Martian писал(а):Похоже, я догадался: здесь ватчдог будит
Похоже, что увидели суслика.
Вот только проблема, после срабатывания прерывания собаки, проц уходит в ресет и обнуляет и по новой инициализирует переменную задержки. Я вообще не увидел настройку собаки до команды sei.
eduard_7 писал(а):Касательно вопроса WDTCR |= (1<<WDTIE) думаю ответ в DS (прикрепил)
Если то, что подчеркнуто красным, то не попали.

Что поменять в железе потом, когда нормально заработает в протеусе.
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Martian писал(а): но, оказывается, можно и без сброса
Так у ТС не можно, а нужно без сброса.
А настроек нет и самое интересное
eduard_7 писал(а):Убедившись, что протеус прекрасно отсимулировал, со спокойной совестью перешел к прошивке.
что ТС отсимулировал?
Родился
Сообщения: 7
Зарегистрирован: Вс авг 11, 2024 13:07:59

Сообщение eduard_7 »

Я только в процессе изучения МК. Учусь на роликах в YouTube на канале уважаемого мной Андрея Фролова (Andrey Frolov). Ролик называется Автомат полива комнатных растений на Attiny13
Перед тем, как обратится на форум, естественно написал Андрею, но к сожалению ответа пока неполучил.
Надеюсь, что просмотрев ролик у форума прояснятся многие вопросы и можно будет продвинутся к пониманию проблемы.

Спасибо
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Martian писал(а):Значит, надо поправить запуск инициализации ватчдога.
А если посмотреть листиг программы, то можно увидеть много интересного.

Просто ТС не достаточно внимательно скопипастил и не желает отвечать на заданные вопросы.

Добавлено after 35 minutes 24 seconds:
codenamehawk писал(а): Просто ТС не достаточно внимательно скопипастил
А может и правильно скопировал.

Только я ожидаю увидеть настройку собаки до вызова разрешения прерываний.
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Есть два режима работы собаки Interrupt Mode или Interrupt and System Reset
Mode
В коде используется второй режим.
Untitled.png
(34.13 КБ) 97 скачиваний
"Это полезно для обеспечения безопасности сторожевого таймера при использовании прерывания. Чтобы остаться в Интер-
rupt и System Reset Mode, WDTIE необходимо устанавливать после каждого прерывания. Однако это не должно
выполняться внутри самой процедуры обслуживания прерываний, так как это может поставить под угрозу функцию безопасности
режим сброса системы Watchdog
. Если прерывание не будет выполнено до истечения следующего тайм-аута,
Будет применен сброс системы."

Как заставить работать в режиме Interrupt Mode я знаю, а вот как в Interrupt and System Reset пока не нашел.

Возможно протеус не совсем корректно симулирует, так в коде есть

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

// //для тестов в протеусе
// void wdt_on(void){
// 	WDTCR |= (1<<WDCE) | (1<<WDE);
// 	WDTCR = (1<<WDTIE) | (1<<WDP2) | (1<<WDP1); // заводим вачдог на 1 секунд
// }

Я бы добавил конденсатор на 0.1 мкф параллельно кнопке, вполне возможно, что прав
Mursik писал(а):ИМХО, опять фузы не туда..
ТС считайте Fuses с проца и покажите. Возможно не правильно выставлен WDTON.
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Martian писал(а):Тогда получится только прерывание будильника, без системного сброса.
Не там это делается.
Надо так
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = (1<<WDTIE) | (1<<WDP2) | (1<<WDP1); // заводим вачдог на 1 секунд
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Martian писал(а):но тогда же и прерывание и системный сброс получится, не?
Не.
Martian писал(а):я предлагаю оставить только прерывание на момент отладки.
А я показал как это сделать.
В AVR сначала произносите заклинание(WDTCR |= (1<<WDCE) | (1<<WDE);), а потом включаете только прерывание с заданным временем. WDTCR = (1<<WDTIE) | (1<<WDP2) | (1<<WDP1); // заводим вачдог на 1 секунд
Martian писал(а):Кстати, об отладке
Это как раз работает.

Можете попробовать пошаго в этом
attiny13.rar
(52.33 КБ) 104 скачивания
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Martian писал(а):А в заклинании разве не достаточно WDTCR |= (1<<WDCE) для разрешения внесения изменений?
Если не была настроена собака, то скорее всего нет, но можете попробовать в протеусе.
Родился
Сообщения: 7
Зарегистрирован: Вс авг 11, 2024 13:07:59

Сообщение eduard_7 »

[uquote="codenamehawk",url="/forum/viewtopic.php?p=4614994#p4614994"]Есть два режима работы собаки Interrupt Mode или Interrupt and System Reset
Mode
В коде используется второй режим.
Вложение Untitled.png больше недоступно
"Это полезно для обеспечения безопасности сторожевого таймера при использовании прерывания. Чтобы остаться в Интер-
rupt и System Reset Mode, WDTIE необходимо устанавливать после каждого прерывания. Однако это не должно
выполняться внутри самой процедуры обслуживания прерываний, так как это может поставить под угрозу функцию безопасности
режим сброса системы Watchdog
. Если прерывание не будет выполнено до истечения следующего тайм-аута,
Будет применен сброс системы."

Как заставить работать в режиме Interrupt Mode я знаю, а вот как в Interrupt and System Reset пока не нашел.

Возможно протеус не совсем корректно симулирует, так в коде есть

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

// //для тестов в протеусе
// void wdt_on(void){
// 	WDTCR |= (1<<WDCE) | (1<<WDE);
// 	WDTCR = (1<<WDTIE) | (1<<WDP2) | (1<<WDP1); // заводим вачдог на 1 секунд
// }

Я бы добавил конденсатор на 0.1 мкф параллельно кнопке, вполне возможно, что прав
Mursik писал(а):ИМХО, опять фузы не туда..
ТС считайте Fuses с проца и покажите. Возможно не правильно выставлен WDTON.[/uquote]

Фюзы заводские, как и отметил автор программы.
Дебагинг еще делать не умею. Но есть ли в нем необходимость, если протеус алгоритм отрабатывает?
Да, кстати забыл спросить про загрузку в EEPROM. AVRDUDE сообщает о 0 байтах, хотя в файл не пустой.
Вложения
Считанные фюзы.jpg
(95.05 КБ) 88 скачиваний
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Нажмите кнопку и подайте питание.

(Если не додумаетесь как правильно дать ответ, тогда скажу сразу - удачи.)

п.с. Попробовал в студии, работают оба режима собаки.
Работает и если правильно разместить сброс собаки, т.е. после слееп.
Ответить

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