Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATtiny12
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
frz
Я совсем ещё начинающий в программировании МК. Написал простенькую программку - бегущие огни, в AVRStudio. В симуляторе работала, прошил ATtiny 12L, прошивал на STK500. Воткнул на плату - в результате при подаче питания программка не стартует. Вывод Reset подтянут к питанию+5В через 1К. Питание организовано на 7805, по вх-вых кондеры 33мкФ. Работаю на внутреннем генераторе. Чтобы заставить выполняться программу приходится либо коротковременно подкорачивать вывод reset на общий, либо кратковременно снять и снова подать питание.. Покапался в поиске - инфы по контроллерам гора, но нужной не нашёл.. Может кто сталкивался с таким?
V_G
Почитайте фирменную документацию на ваш контроллер.
Возможные причины:
1. Запрограммировано внешнее тактирование (резонатором, RC-цепью или импульсами), а таковое отсутствует. Перепрограммируйте через STK на внутреннее
2. Запрограммировано использование сторожевого таймера, а в программе оный не сбрасывается периодически
3. Другие причины типа незапрограммированных портов
frz
1 - Тактирование внутреннее, темболее после принудительного сброса всё начинает работать- еслибы было запрограммировано внешнее- схема бы вообще не включалась.
2 - сторожевой таймер пробовал и включать и выключать и сбрасывал - никакой реакции
3 - все выводы порта работают как выходы, кроме вывода reset, на всех висят по резистору и леду, подключенных к положительной шине питания, те диод загорается если на выводе низкий уровень.
Снял осциллограммы питания при включении - никаких провалов. И ещё - на выходах МК , если программа не запустилась, высокий уровень
vovanse
Попробуйте резистор поставить на 4.7к, и конденсатор на землю на 10nF. По-моему, нет сброса при включении питания.
frz
Цитата(vovanse @ Oct 30 2009, 12:27) *
Попробуйте резистор поставить на 4.7к, и конденсатор на землю на 10nF. По-моему, нет сброса при включении питания.

На reset? Вешал 1К на "+" и 0.1мкФ(и 10мкф пробовал) на землю- не помогает, попробую увеличить резистор, хотя большого смысла вродебы и нет..
Увеличил до 56КОм. Кондёр 10мкФ.. Не помогло.. Прикладываю осциллограмку запуска МК.
1 Канал- Напряжение питания
2 канал- Состояние пина 3 МК (PB0). Подтянул его к земле через 1К, чтобы было видно Z состояние..
Нажмите для просмотра прикрепленного файла
На осциллограмме сначала программа не запустилась,а после коротковременного отключения питания запустилась.
Ronin
А что у Вас со фьюзами SUT, BODEN, BODLEVEL ?..
Качнул доку, в 12ом нету SUT smile.gif оно выбирается CKSELом
Качнул еррату, и там забавное нашлось (.ля что за нах с запретом копирования текста из ерраты у атмела...)
в общем имхо надо попробовать CKSEL=0010, BODEN=0, BODLEVEL=0

Нажмите для просмотра прикрепленного файла
frz
BODEN включен
BODLEVEL 2.7В
Но пробовал и выключать, CKSEL если не ошибаюсь 0010 (вроде как по умолчанию)
Может ещё какие-нибудь идеи есть? а то 1МК уже пальнул по глупости,но остался ещё один с точно такойже проблемойsad.gif
Ronin
Цитата(frz @ Oct 30 2009, 11:50) *
CKSEL если не ошибаюсь 0010 (вроде как по умолчанию)


а другие значения CKSEL (0011, 0100) не помогают ?
что на осцилограмме reset пина (с резистором и конденсатором) ?
GDI
Блокировочные конденсаторы на пинах питания МК стоят?
frz
Цитата(GDI @ Oct 30 2009, 15:53) *
Блокировочные конденсаторы на пинах питания МК стоят?

33мкФ эл-лит, в первом посте писал.
Цитата
а другие значения CKSEL (0011, 0100) не помогают ?
что на осцилограмме reset пина (с резистором и конденсатором) ?

1- не пробовал
2 - нарастание напряжения на конденсаторе, достигает 3 В через 0.5с, в этот момент вывода МК принимают верхний уровень(на предыдущих осциллограммах)

У меня такой вопрос - директиву
.ORG 0x0000 - обязательно указывать в программе? Видел примеры и с ней и без неё..
МП41
Цитата(frz @ Oct 30 2009, 13:11) *
...
.ORG 0x0000 - обязательно указывать в программе? Видел примеры и с ней и без неё..

Это значение вроде как по умолчанию используется без явного указания. А почему по питанию керамики нету?
frz
2.2мкФ X7R непосредственно на лапы МК- ноль реакции, как я собственно и думалsad.gif
Ronin
Может на код пора посмотреть smile.gif и все фьюзы как есть.
А то идей никаких как-то %)
frz
Фьюзы выложить не смогу - программатор, собственно как и AVRSTUDIO сейчас далеко.
Код,не судите строго - это моя первая прогаммка для МКsmile.gif :
Цитата
.include "tn12def.inc"
rjmp init;
reti; INT0
reti; PIN_CHANGE
rjmp tim_ovf; TIM0_OVF
reti; EEPROM_READY
reti//rjmp int_acomp; ANALOG_COMP

tim_ovf:
inc r17;
cpi r17,4 //1 раз за 4 прерывания таймера
brne ex_ovf;
ldi r17,0;
lsl r2;
bst r2,6
bld r2,0
out portb,r2

ex_ovf:
reti

main:
//repeat:
//inc r1;
//brne repeat;
rjmp main;

//int_acomp:
//ldi r16,0
//reti;

init:
cli;
sbr r16,0b11111110
//ldi r16,1;
mov r2,r16;
out portb,r2
ldi r17,0;
ldi r16,0b00000000;
out GIMSK,r16; запрет int0, и прерываний по изм сост. пинов
ldi r16,0b00111111;
out DDRB,r16;
ldi r16,0b11001010
out ACSR,r16
ldi r16,0b00000001
out TCCR0,r16
clr r16;
sbr r16,0b10
out TIMSK,r16
sei;
rjmp main;

Не обращайте внимания на куски неиспользуемых обработчиков прерываний- хотел с ними потом поиграться.
Заметил ещё одну закономерность, если после включения(когда программа не запустилась) снизить напряжение питания~до 1 вольта и снова поднять - программа начинает выполняться
МП41
Я обычно ставлю адреса векторов прерываний, без них как-то стремно смотрится.
V_G
У вас содержимое r2 неопределенное, т.к. в init первой инструкцией идет sbr (фактически логическое или содержимого r16 c константой). Но содержимое r16 не задается!!! Поставьте вместо sbr ldi r16,0xFE
Ronin
а стек где ?
и sbr r16,0b11111110 как выше скзано
frz
Блин, что сказать - я нуб.. lol.gif
Прога то оказывается всегда работалаsmile.gif Ладно, вечером перепрошью.. Огромное всем спасибоsmile.gif Я восновном преобразовательной техникой балуюсь - там контроллеры совсем другие вот и привычка первым делом грешить на питаниеsmile.gif
А стек аппаратный.. Как я понял его трогать не надо
МП41
Цитата(Ronin @ Oct 30 2009, 14:44) *
а стек где ?
...

Ну, без вызова подпрограмм стек не нужен.
Ronin
зачем в ACSR пишется Reserved значение ? 0 туда

Цитата(МП41 @ Oct 30 2009, 14:54) *
Ну, без вызова подпрограмм стек не нужен.


а прерываниям ?

Цитата(frz @ Oct 30 2009, 14:46) *
Прога то оказывается всегда работалаsmile.gif...
А стек аппаратный..


так в чём там дело ?

вот блин, намутят же в этих новых чипах всяких извращений по мотивам пикоф wink.gif
то ли дело обычный тини13 smile.gif
Xenia
Умные советы вроде иссякли, поэтому дам совет дурацкий, а точнее иррациональный: запитать XTAL1 на +5V через резистор 5 ком. Типа для проверки. Ведь то, что генератор все-таки запускается при кратковременном снятии питания, наводит на мысль, что при включенном питании на какой-то пин натекает плюс, что способствует запуску. А при холодном старте такого натекания нет. Скорее всего, этот пин XTAL1, другому вроде бы некому.
V_G
Так все выяснили, разве не ясно?
Содержимое регистров при включении не определено (в данном случае - r16), если 0, программа работала, 1 - не работала. Просто внимательно надо относиться к инициализации, никакие конденсаторы-кварцы-ресеты ни при чем
domowoj
Цитата(V_G @ Oct 30 2009, 22:37) *
Содержимое регистров при включении не определено (в данном случае - r16), если 0, программа работала, 1 - не работала.

Регистры же по ресету обнуляются!
Палыч
Цитата(domowoj @ Oct 30 2009, 18:40) *
Регистры же по ресету обнуляются!
Это - Вы где такое прочитали?
domowoj
Цитата(Палыч @ Oct 30 2009, 22:58) *
Это - Вы где такое прочитали?

Не знаю где , но всегда так считал,
но всегда было не лом(как сейчас говорят) явно установить информ. в тот или иной регистр.
(век живи - век учись)
V_G
Заранее известное состояние по включению - только у регистров, ответственных за настройку проца и периферии. Просто регистры памяти в неопределенном состоянии. Симулятор же чаще всего их действительно обнуляет, тут-то и проявляется разница в работе симулятора и реальной программы. Сказанное справедливо для всех процев, с которыми я когда-либо работал (intel, philips, pic, avr, adsp...), за всех остальных не скажу. Более того, аналогичная проблема возникает, когда пишешь под винду на visual C: переходишь с debug версии софта на release, и поперли проблемы, связанные с непроинициализированностью переменных.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.