реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ATtiny12, Запускается через раз..
frz
сообщение Oct 30 2009, 05:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



Я совсем ещё начинающий в программировании МК. Написал простенькую программку - бегущие огни, в AVRStudio. В симуляторе работала, прошил ATtiny 12L, прошивал на STK500. Воткнул на плату - в результате при подаче питания программка не стартует. Вывод Reset подтянут к питанию+5В через 1К. Питание организовано на 7805, по вх-вых кондеры 33мкФ. Работаю на внутреннем генераторе. Чтобы заставить выполняться программу приходится либо коротковременно подкорачивать вывод reset на общий, либо кратковременно снять и снова подать питание.. Покапался в поиске - инфы по контроллерам гора, но нужной не нашёл.. Может кто сталкивался с таким?
Go to the top of the page
 
+Quote Post
V_G
сообщение Oct 30 2009, 06:02
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Почитайте фирменную документацию на ваш контроллер.
Возможные причины:
1. Запрограммировано внешнее тактирование (резонатором, RC-цепью или импульсами), а таковое отсутствует. Перепрограммируйте через STK на внутреннее
2. Запрограммировано использование сторожевого таймера, а в программе оный не сбрасывается периодически
3. Другие причины типа незапрограммированных портов
Go to the top of the page
 
+Quote Post
frz
сообщение Oct 30 2009, 06:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



1 - Тактирование внутреннее, темболее после принудительного сброса всё начинает работать- еслибы было запрограммировано внешнее- схема бы вообще не включалась.
2 - сторожевой таймер пробовал и включать и выключать и сбрасывал - никакой реакции
3 - все выводы порта работают как выходы, кроме вывода reset, на всех висят по резистору и леду, подключенных к положительной шине питания, те диод загорается если на выводе низкий уровень.
Снял осциллограммы питания при включении - никаких провалов. И ещё - на выходах МК , если программа не запустилась, высокий уровень
Go to the top of the page
 
+Quote Post
vovanse
сообщение Oct 30 2009, 06:27
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 14-02-06
Из: Кемерово
Пользователь №: 14 293



Попробуйте резистор поставить на 4.7к, и конденсатор на землю на 10nF. По-моему, нет сброса при включении питания.
Go to the top of the page
 
+Quote Post
frz
сообщение Oct 30 2009, 06:40
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



Цитата(vovanse @ Oct 30 2009, 12:27) *
Попробуйте резистор поставить на 4.7к, и конденсатор на землю на 10nF. По-моему, нет сброса при включении питания.

На reset? Вешал 1К на "+" и 0.1мкФ(и 10мкф пробовал) на землю- не помогает, попробую увеличить резистор, хотя большого смысла вродебы и нет..
Увеличил до 56КОм. Кондёр 10мкФ.. Не помогло.. Прикладываю осциллограмку запуска МК.
1 Канал- Напряжение питания
2 канал- Состояние пина 3 МК (PB0). Подтянул его к земле через 1К, чтобы было видно Z состояние..
Прикрепленное изображение

На осциллограмме сначала программа не запустилась,а после коротковременного отключения питания запустилась.
Go to the top of the page
 
+Quote Post
Ronin
сообщение Oct 30 2009, 08:33
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 10-02-05
Из: Краснодар
Пользователь №: 2 558



А что у Вас со фьюзами SUT, BODEN, BODLEVEL ?..
Качнул доку, в 12ом нету SUT smile.gif оно выбирается CKSELом
Качнул еррату, и там забавное нашлось (.ля что за нах с запретом копирования текста из ерраты у атмела...)
в общем имхо надо попробовать CKSEL=0010, BODEN=0, BODLEVEL=0

Прикрепленное изображение


Сообщение отредактировал Ronin - Oct 30 2009, 08:41
Go to the top of the page
 
+Quote Post
frz
сообщение Oct 30 2009, 08:50
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



BODEN включен
BODLEVEL 2.7В
Но пробовал и выключать, CKSEL если не ошибаюсь 0010 (вроде как по умолчанию)
Может ещё какие-нибудь идеи есть? а то 1МК уже пальнул по глупости,но остался ещё один с точно такойже проблемойsad.gif
Go to the top of the page
 
+Quote Post
Ronin
сообщение Oct 30 2009, 09:47
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 10-02-05
Из: Краснодар
Пользователь №: 2 558



Цитата(frz @ Oct 30 2009, 11:50) *
CKSEL если не ошибаюсь 0010 (вроде как по умолчанию)


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

Сообщение отредактировал Ronin - Oct 30 2009, 09:48
Go to the top of the page
 
+Quote Post
GDI
сообщение Oct 30 2009, 09:53
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Блокировочные конденсаторы на пинах питания МК стоят?


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
frz
сообщение Oct 30 2009, 10:11
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



Цитата(GDI @ Oct 30 2009, 15:53) *
Блокировочные конденсаторы на пинах питания МК стоят?

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

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

У меня такой вопрос - директиву
.ORG 0x0000 - обязательно указывать в программе? Видел примеры и с ней и без неё..
Go to the top of the page
 
+Quote Post
МП41
сообщение Oct 30 2009, 10:21
Сообщение #11


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



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

Это значение вроде как по умолчанию используется без явного указания. А почему по питанию керамики нету?


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
frz
сообщение Oct 30 2009, 10:46
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



2.2мкФ X7R непосредственно на лапы МК- ноль реакции, как я собственно и думалsad.gif
Go to the top of the page
 
+Quote Post
Ronin
сообщение Oct 30 2009, 10:51
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 10-02-05
Из: Краснодар
Пользователь №: 2 558



Может на код пора посмотреть smile.gif и все фьюзы как есть.
А то идей никаких как-то %)

Сообщение отредактировал Ronin - Oct 30 2009, 10:53
Go to the top of the page
 
+Quote Post
frz
сообщение Oct 30 2009, 11:04
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



Фьюзы выложить не смогу - программатор, собственно как и 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 вольта и снова поднять - программа начинает выполняться
Go to the top of the page
 
+Quote Post
МП41
сообщение Oct 30 2009, 11:23
Сообщение #15


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Я обычно ставлю адреса векторов прерываний, без них как-то стремно смотрится.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016