Странное поведение ATtiny 2313

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Занялся я тут одним маленьким проектом.

И получилось так, что устройство ни как не хочет работать.
Поиски ошибок не увенчались успехом.

Решил резать код на блоки и проверять работоспособность каждого из них.

Вот такой код ( блок ) у меня получился:
Хотя, минутку, сначала схема:
Изображение
А вот теперь код:

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





;******************************************************************************
; тип используемого МК
;******************************************************************************

.include 	"tn2313adef.inc"	; используем tiny2313a


;******************************************************************************
; переименуем РОН
;******************************************************************************

.def	Temp=R16
.def	Temp1=R17
.def	Temp2=R18
.def	Temp3=R19
.def	Temp4=R20			; 
.def	Temp5=R21
.def	FlagFazy=R22			; 
.def	FlagSinhr=R23			; 
.def	Temp8=R24
.def	Temp9=R25






;******************************************************************************
; инит прерываний
;******************************************************************************


.cseg			





.org 0

rjmp RESET				; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset ( включение МК )





.org INT_VECTORS_SIZE			; конец векторов прерываний




;******************************************************************************
; старт
;******************************************************************************

reset:					; включение микроконтроллера


;******************************************************************************
; глобальный запрет прерываний
;******************************************************************************

	cli				; глобальный запрет на прерывания


;******************************************************************************
; инит стека
;******************************************************************************

	ldi Temp,low(RamEnd)		; инициализации стека	
	out SPL,Temp			;


;******************************************************************************
; инит портов
;******************************************************************************
	
	ldi Temp,0b11111111		; настроили порт "В" (0-ввод, 1-вывод)
	out DDRB,Temp			; 
					
				
												 
	ldi Temp,0b01111011		; настраиваем порт "D" (0-ввод, 1-вывод)
	out DDRD,Temp 			; 00000х00 - ввод информации с приемника PD2
					; 


	ldi Temp,0b00000000		; выводим лог_0 в порт "B"
	out PortB,Temp			; 




	ldi Temp,0b00000000		; выводим лог_0 в порт "D" // Подтяжка на PD2 и PD7  отключена.  !!!!!!!!!!!!!!!!!!!!!!!!!!
	out PortD,Temp			;









;******************************************************************************
; глобальное разрешение прерываний
;******************************************************************************

;	sei				; глобальное разрешение прерываний !!!!!!!!!!!!!!!!!!!!!!!!!! запрещены любые прерывания!!! 
	





;*******************************************************************************
;*******************************************************************************
; главный цикл
;*******************************************************************************
;*******************************************************************************


	ldi Temp,0b00000011		; включаем светодиоды ( светодиоды подключены к PB0 и PB1 )
	out PortB,Temp			; 



Main_cicle:


	
	rjmp Main_cicle			; циклимся


;*******************************************************************************
;*******************************************************************************

И вот я в ступоре - по идее команда

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


	ldi Temp,0b00000011		; включаем светодиоды ( светодиоды подключены к PB0 и PB1 )
	out PortB,Temp			; 
должна включить эти светодиоды, но они не включаются....

Тогда я закоментировал строчку

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


	ldi Temp,0b00000000		; выводим лог_0 в порт "D" // Подтяжка на PD2 и PD7  отключена.  !!!!!!!!!!!!!!!!!!!!!!!!!!
	out PortD,Temp			;

и светодиоды зажглись....

Что к чему? Как так ?
Что в этой команде такого? Она всего лишь выводит лог_0 на те ножки, которые настроены на вывод и отключает подтягивающие резисторы у тех ножек которые настроены на ввод!
Я конечно мог заподозрить PD7, так как его в ATtiny2313 нет, НО я уже делал подобный проект и там инит портов был точно такой-же как в этом проекте! И все работало!

П.С.
Я пробовал на другом чипе ATtiny2313, но результат такой-же
Фузы я проверял...
не зная броду не лезь к вольтмоду
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Что то глухо тут.
На олимпиаду что ли все уехали?

Попробую фузы выставить по другому. Ели не поможет буду резать частоту....
не зная броду не лезь к вольтмоду
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Не глухо, а полная непонятка как такое может быть.
Docendo discimus
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Такого быть не должно! Есть предположения ?
не зная броду не лезь к вольтмоду
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

У PIC контроллеров встречал такой момент: после выполнения некоторых команд приходилось писать nop-ы, в противном случае, сразу за данной командой запись константы в регистр не производилась. Команду точно не помню. Попробуйте ввести пустышку и посморите в симуляторе - происходит ли запись числа 3 в Temp?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков

Сообщение Dr. Alex »

)))) Мистика какая-то))))) А если попробовать всё на один порт нагрузить?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2368
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

dr.doc писал(а):после выполнения некоторых команд приходилось писать nop-ы, в противном случае, сразу за данной командой запись константы в регистр не производилась
Такого быть не могло, ибо быть не может, и не надо начинающих с толку сбивать.
Единственное, что могло быть: то, что Вы не разобрались с режимом чтение-модификация-запись, но это уже другая тема.
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

uwrtey, сделай подпрогармму задержки и выведи мигалку. Там всего пять строк. А то может МК тупо виснет, или ещё что.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Задержка не помогает.

Чтение>модификация>запись - все это знаю, тут сокращено до минимума.

Такое ощущение, что порт занят периферией.
После перепрошивки ( если я не настраиваю перефирию ) порты устанавливаются дефолтно?
Эти мк использовались в других проектах..
Да ну - фигню спросил.....

Сегодня ночером попробую частоту убавить и фузы по другому пропишу...
не зная броду не лезь к вольтмоду
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

uwrtey писал(а):Задержка не помогает.
Я имел ввиду сделать мигалку: в Main_cicle засунуть задержку и инверсию битов.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

При процедуре "чтение-модификация-запись" можно прочесть то, что не ожидаешь, но не выставить! А у меня был именно случай, когда контроллер не выставлял уровень. Потом уже на microchip.su нашел, что подобное "действо" было свойственно конкретному контроллеру ранних модификаций.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Только-что попробовал сделать следующее:

1) отключил систему контроля питания ( через фуз_биты )
2) установил внутренний делитель частоты ( делитель на 8 ) через фуз биты ( у меня стоит кварц на 20 МГц )
3) написал подпрограмму задержки перед главным циклом и сделал мигалку

И все заработало! ( хотя Х.З. но об этом ниже )

Устройство, которое я проектирую - это передатчик и приемник на две команды.
На данный момент передача идет не по радиотракту, а по проводам.

Передатчик работает нормально! Без нареканий.
А вот с приемником я мучаюсь уже неделю...
Схему я уже приводил.

Ну раз мигалка заработала - я решил сразу проверить заработает ли приемник.
Поправил фуз_биты для передатчика - что-бы он работал на той-же частоте что и приемник.

Включил оба устройства и разочаровался от того что не заработало!
Но не тут то было! Оказывается на этот раз я воткнул ТИНЬКУ в передатчик вверх ногами! ( прошиваю в отдельной панельке )
Я быстро исправил ситуацию и обрадовался, что устройство работает! Приемник принимает команды с передатчика и включает соответствующие светодиоды!

Ну тут я решил повысить частоту обратно ( убрать предделитель на 8 через фуз-биты )
Проделал этот фокус с приемником и передатчиком и опять разочаровался от того, что не работает на такой частоте!

Решил вернуть предделитель на место где ему похоже и суждено быть, но устройство не заработало на деленной частоте!!!!!!
Как так? Только что все работало! Проблема точно не в логике программы.

Может прошивка слетела? - Прошиваю еще раз и приемник и передатчик - один фиг не робит!
Шью заново фуз-биты - не робит.
Я уже и не знаю на что подумать.. Похоже что МК глючный ?
не зная броду не лезь к вольтмоду
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Что я могу сейчас сделать?

1) попробовать снова запустить мигалку, если не заработает - то точно МК, а если будет работать, то снова попробовать запустить приемник декодер
2) поменять МК в приемнике и передатчике местами
не зная броду не лезь к вольтмоду
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Да что угодно может быть: монтаж, питание и т.д.
Я потому и советовал проверять на мигалке, так как если мигает - значит контроллер жив, тактовая идёт. А в статичном режиме он может затарахтеть, выставить биты на портах, и через несколько тактов заглохнуть. А экспериментатор будет в наивной уверенности, что контроллер работает (светики зажглись), а программа нет. Или наоборот.

Попробуйте увеличить частоту и на ней мигалку запустить. А в это время шевелить и трогать всячески МК руками. Будет сбиваться генерация - косяк в монтаже. По мигалке сразу видно.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Менять МК местами не пришлось.
Похоже, что глючный МК
Прошил МК приемника декодера программой "мигалкой" - и она работает
Прошил снова программой премником декодером - и все работает, хотя только что не работало !!!
А в статичном режиме он может затарахтеть, выставить биты на портах, и через несколько тактов заглохнуть.
А что такое бывает?
Сейчас попробую мигалку на высокой тактовой частоте запустить... :beer:
Спасибо, ploop
не зная броду не лезь к вольтмоду
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

uwrtey писал(а):А что такое бывает?
Ещё как бывает. Генератор заводится во время старта и через долю секунды затухает. А за это время успевает инициализироваться программа, выставиться сигналы всякие и прочее.
Когда не было осцилла, так и проверял - мигалкой. Сейчас проще на ногу меандр вывести, или вообще на CKOUT тактовую вывести, если свободна.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Запустил мигалку на тактовой частоте 20 МГц - работает без сбоев.
А декодер (приемник) на такой частоте не работает.

Пытаюсь запустить декодер (приемник) на частоте деленной на восемь ( с помощью внутреннего делителя ) не работает!
А вот если сначала прошить МК "мигалкой" на частоте деленной на восемь.
Включить эту мигалку на пару секунд. А затем прошить МК "декодером" и при этом не трогать фуз биты - то декодер начинает работать как и положено.

Полтергейст! :)))

Это точно не глюк! Это точно не плохой монтаж и это точно не плохая схемотехника.
Так как "глючит" не в случайной последовательности, а очень даже закономерно!


Такое ощущение, что МК что то запоминает....

Как мне выяснить что это?
У меня что то на ум ни чего не идет. ( Сейчас для меня главное - это не сделать устройство, а найти причину "глюка" )

Во вложении лежат исходники кодера, декодера а так-же мигалки.

Прошиваю я с помощью ПониПрог в отдельной панельке
Из фуз-битов я устанавливаю или очищаю только бит SKDIV8
Фуз SPIEN - не активен и его я не трогаю
Остальные фузы то-же не трогал.
Кварц установлен на 20 МГц
Вложения
архив.zip
(45.51 КБ) 181 скачивание
не зная броду не лезь к вольтмоду
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

А ОЗУ контроллера в программе часом не используете? (пример выложен полный?)
А прерывания включаете зачем? Может в прерывании остается что-то в Temp, а само оно происходит перед выводом в порт?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

dr.doc писал(а):А ОЗУ контроллера в программе часом не используете? (пример выложен полный?)
Все примеры выложены в оригинале. Оперативку я не использую, хотя инициализацию ее делаю и даже одну двухбайтовую переменную задаю.
dr.doc писал(а):А прерывания включаете зачем? Может в прерывании остается что-то в Temp, а само оно происходит перед выводом в порт?
Какие прерывания я включаю? И Где? ( Про что идет речь? Про декодер или про мигалку? )
Если речь про мигалку, то обратите внимание, что строчка с глобальным разрешением прерываний закоментирована.
не зная броду не лезь к вольтмоду
Прорезались зубы
Аватара пользователя
Сообщения: 231
Зарегистрирован: Вс мар 31, 2013 17:22:21
Откуда: Бурятия

Сообщение Масяня »

Хочу присоединиться к глюкам мк ATTiny2313. Проблема вот в чем, купил мк на tixer, когда прошил его все работало, как часы. Прошивал раз 7 все гуд, без сбоев, но 8 прошивку он не выдержал. Во первых устройство не заработало, вообще не как, только на одном выводе напряжение немного есть, на каком именно не помню. Во вторых не прошивается и не определяется, не прошивается даже когда игнорирую, то что PonyProg говорит, что мк не подключен, хотя он с рождения не определялся, программатор исправен это факт. Из за этого флешку на 2 гига спалил, когда включил устройство она нагрелась, до сумасшедшей температуры, когда я ее вставил в телефон она работала, но потом оказалась что она не форматируется и с нее нельзя удалить данные, и записать только чтение. Ну как то так.
Последний раз редактировалось Масяня Вс фев 09, 2014 05:50:07, всего редактировалось 1 раз.
Когда кажется что ты все понял, оказывается что ты и половины не знаешь!
Ответить

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