спящий режим attiny2313a

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Сообщение Kezoox »

сразу прошу прощения за возможный повтор вопроса -может его уже разжевали тут но поиск толком ничего не дал

вопрос в следующем :cry:
спящий режим не работает так как описано ткните gj;пожалуста пальцем что делается не так :dont_know:
авр студио 4.18
протеус кнопки на инт0-1 порт Б мигает светодиодами для наглядности
тинька не просыпается из PWR_DOWN mcucr 0x35
из режима Холостой-Idle просыпается от int0-1 mcucr 0x25

.include "tn2313def.inc"
.LIST
.def temp=r16;

.cseg;
.org 0x0000
rjmp reset
.org 0x0001
rjmp llll
.org 0x0002
rjmp llll

reset:
ldi temp, RAMEND;
out SPL,temp;
ldi temp,0xff;
out DDRB,temp
out PORTB,temp;
out PORTD,temp;

ldi temp,0x35
out mcucr,temp
ldi temp,0xc8
out gimsk,temp
sei
;======
main:
inc temp
out portb,temp
sleep
;======
rjmp main
llll:
reti

:solder:
Реклама
Открыл глаза
Сообщения: 47
Зарегистрирован: Вс июн 10, 2012 22:43:19
Откуда: РФ, г. Курск

Сообщение brutal »

В протеусе очень криво сделана эмуляция спящих режимов для tiny2313.
Используйте аппаратную отладку
Tais sa gueule et écoute un silence
Реклама
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Сообщение Kezoox »

одним словом в теории должно работать ?но в студио тоже не работает повер доун если биты порта вручную менять :solder:
Друг Кота
Аватара пользователя
Сообщения: 15745
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Режимы энергосбережения требуют оченть внимательного и дотошного изучения документации МК не только по самому режиму...., но и по всей, установленной в МК начинке (относительно начальной инициализации). Подобные "сложные" режимы могут частично или полностью не поддерживаться симулятором (см. help конкретной IDE !!!).
Кстати, советую заменить 4.18 на 4.19
http://www.atmel.com/System/BaseForm.as ... m:26-17924
:beer:
Реклама
Эиком - электронные компоненты и радиодетали
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

одним словом в теории должно работать ?
На практике должно работать. :) В симуляторах подобные "неосновные" режимы бывают реализованы криво.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Сообщение Kezoox »

загрузил все в плату к сожалению не работает :cry: повер доун
убираю бит на холостой режим -все работает просыпается от инт0 ,ставлю бит см0 -засыпает и не просыпается
короче непонятки :dont_know:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3793
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Вот выреджка из секции External Interrupt в ДШ:
Note that recognition of falling or rising edge interrupts on INT0 and INT1 requires the presence of an I/O clock, described in “Clock Systems and their Distribution” on page 22. Low level interrupt on INT0 and INT1 is detected asynchronously. This implies that this interrupt can be used for waking the part from sleep modes other than Idle mode. The I/O clock is halted in all sleep modes except Idle mode.
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Ser60 писал(а):Вот выреджка из секции External Interrupt в ДШ:
Первый раз встречаю такую опкису :)
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Kezoox Попробуйте так, в предположении, что на PD2(INT0) и PD3(INT1) установлены кнопки на общий провод и светики переключаются при отпускании кнопки.
Спойлер

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

.include "tn2313def.inc"
.LIST
.def temp=r16;

.cseg;
.org 0x0000
rjmp reset
.org 0x0001
rjmp _0000
.org 0x0002
rjmp _1111

reset:
ldi temp, RAMEND;
out SPL,temp;
ldi temp,0xff;
out DDRB,temp
out PORTB,temp;
out PORTD,temp;
;*************************************************
	OUT	DDRD,R16
	LDI	R16,$0C
	OUT	PORTD,R16
	CLR	R16
	OUT	DDRD,R16

	LDI	R20,$C0
	CLR	R21
		
;*************************************************


	ldi temp,0x30
;ldi temp,0x35
out mcucr,temp
	OUT	GIMSK,R20
;ldi temp,0xc8
;out gimsk,temp
sei
;======
main:
inc temp
out portb,temp
sleep
;======
rjmp main

_0000:
	OUT		GIMSK,R21	; запретить прерывания INT0, INT1
	SBIS	PIND,2
	RJMP	_0000
	OUT		GIMSK,R20
	OUT		EIFR,R20	; сбросить флаги
	reti

_1111:
	OUT		GIMSK,R21	; запретить прерывания INT0, INT1
	SBIS	PIND,3
	RJMP	_1111
	OUT		GIMSK,R20
	OUT		EIFR,R20	; сбросить флаги
	reti
18:26
Переписал чтобы состояние индикации менялось при нажатии кнопки. По мне, так естественнее.
Спойлер

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

.include "tn2313def.inc"
.LIST
.def temp=r16;

.cseg;
.org 0x0000
rjmp reset
.org 0x0001
	NOP
.org 0x0002
	RCALL	DELAY
	RET


reset:
ldi temp, RAMEND;
out SPL,temp;
ldi temp,0xff;
out DDRB,temp
out PORTB,temp;
out PORTD,temp;
;*************************************************
	OUT	DDRD,R16
	LDI	R18,$0C
	OUT	PORTD,R18
	CLR	R16
	OUT	DDRD,R16

	LDI	R20,$C0
	CLR	R0
		
;*************************************************
T0:

;ldi temp,0x30
;ldi temp,0x35
	LDI	R16,$30
	OUT MCUCR,R16
;ldi temp,0xc8
;out gimsk,temp
	OUT		GIMSK,R20
	OUT		EIFR,R20	; ñáðîñèòü ôëàãè

	SEI
;======
MAIN:
	SLEEP

	INC	R0
	OUT	PORTB,R0
T1:
	IN		R19,PIND
	ANDI	R19,0b00001100
	CPSE	R19,R18
	RJMP	T1
	RJMP	T0


;main:
;inc temp
;out portb,temp
;sleep
;======
;rjmp main

DELAY:
	CLR	YH
	CLR	YL
W_DEL:
	SBIW	YL,1
	BRNE	W_DEL
	RET
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Сообщение Kezoox »

дело не в программе ,прога лиш для того чтоб было как то видно просыпание которого не происходит
не работает он у меня :facepalm:
я уже так сказать забил на повер доун в рабочей плате -поставил холостой режим с которым все просыпается
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

Kezoox, ключ находится в этих строках, чтобы работал повер-даун:
LDI R16,$30
OUT MCUCR,R16
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Сообщение Kezoox »

а на условия сробатывания забить чтоль? :facepalm:
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

А у Вас нет другого выхода. Посмотрите DS на ATtiny2313 и увидите, что выход из Power-down по фронту/спаду на INT0 (INT1) не предусмотрен.
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

akl писал(а):А у Вас нет другого выхода. Посмотрите DS на ATtiny2313 и увидите, что выход из Power-down по фронту/спаду на INT0 (INT1) не предусмотрен.
Предусмотрен и работает. Но только по 1 выводу - INT0.
стр.31:
Power-down Mode
When the SM1..0 bits are written to 01 or 11, the SLEEP instruction makes the MCU enter
Power-down mode. In this mode, the external Oscillator is stopped, while the external interrupts,
the USI start condition detection, and the Watchdog continue operating (if enabled). Only an
External Reset, a Watchdog Reset, a Brown-out Reset, USI start condition interrupt, an external
level interrupt on INT0, or a pin change interrupt can wake up the MCU. This sleep mode basi-
cally halts all generated clocks, allowing operation of asynchronous modules only.
Пример применения: Кухонный таймер "Чтота"
http://radiokot.ru/circuit/digital/home/59/
Человек - это звучит гордо, а обезьяна - объективно...
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Не убедили! Посмотрите приведенный Вами пример
Спойлер

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

	    	ldi reg,0b01110010  	;(0 колесо_вх)          
			 out ddrD,reg			;(1 свет_в_Фотопару) (2 ONN-OFF(INT_подтянут)) 
									;(3 колесо(INT) 
									;((4 6 Цифры Ш и Л.) (5 пищелка)

	

				ldi reg,0b01010110   ;-----Кажись 4 и 6 нафик нинада (но пусть, раз работает)
				out portD,reg			;подтянул он/офф(при киданьи на минус сработает)
										;... (включил напругу ИК-светику)(и цифры, чтоб кра)
;-------- ПЕРЕМЕННЫЕ
		 ldi Nolik,0
		 cbr flajki,0b11111011  ;7- (СОН) ;6- (визг серены) ;5- (Щелчёк) ;4- (Секундомер) ;3- (мелодия)
								;2- (0 или 99) ;1-(звон гимна) 
		 		 

;--------  СОН в режиме @повер довн@.
		ldi reg,0b00110000
		out MCUCR,reg
Кстати, в последней редакции DS на ATtiny2313A/4313 уже можно и из INT1 выходить.
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

akl писал(а):Не убедили! Посмотрите приведенный Вами пример
Ну и что там не так? PowerDown - есть. Кнопкой разбудится. Я мысль насчет крутилки - регулятора времени подцепил и сделал похожее, но у меня "Кукарачу" играет.
Человек - это звучит гордо, а обезьяна - объективно...
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

В "Чтота" командой

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

;--------  СОН в режиме @повер довн@.
      ldi reg,0b00110000
      out MCUCR,reg 
подготавливается разрешение работы в режиме Power-down и выход из него по низкому уровню на INT0. Kezoox же пытается выйти по фронту/спаду сигнала, а это неправильно.
Друг Кота
Аватара пользователя
Сообщения: 3793
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

akl прав, и приведенная мною выше цитата из ДШ подтверждает его слова. Но почему-то ее все проигнорировали.
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

Ser60 писал(а):akl прав, и приведенная мною выше цитата из ДШ подтверждает его слова. Но почему-то ее все проигнорировали.
ОК. Ткнули пальцем - теперь ясно. Молодцы оба. :beer:
Человек - это звучит гордо, а обезьяна - объективно...
Открыл глаза
Сообщения: 46
Зарегистрирован: Вт янв 01, 2013 12:36:33

Сообщение Kezoox »

спасибо :) :beer:
Ответить

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