AVR микроконтроллеры

Обсуждаем контроллеры компании Atmel.
Ответить
Опытный кот
Сообщения: 806
Зарегистрирован: Ср май 06, 2015 06:41:27
Откуда: Благовещенск

Сообщение Андрей СШ »

За один такт выполняется от 1/3 до 1-й инструкции.

Точное значение зависит от того какая инструкция и какие обстоятельства сложились при её выполнении.

Раздел Instruction Set Summary даташита на любую AVR.
Реклама
CB1
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт янв 01, 2015 13:44:12

Сообщение CB1 »

Подскажите в каких пределах колеблется напряжение низкого уровня(логический 0) в микроконтроллерах Atmega8 и в среднем какие значения по микроконтроллерам AVR?
Все гениальное - просто
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3490
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

CB1 писал(а):в каких пределах колеблется напряжение низкого уровня(логический 0) в микроконтро ллерах Atmega8
Параметр VOL:

ATmega8 - стр.242: http://www.atmel.com/Images/Atmel-2486- ... asheet.pdf
ATmega48A/88A/168A/328P - стр.313: http://www.atmel.com/images/Atmel-8271- ... mplete.pdf

И т.д. - найти самому в datasheet существенно быстрее, чем ждать ответа на форуме.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
CB1
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт янв 01, 2015 13:44:12

Сообщение CB1 »

Спасибо! Даташит найти не сложно, сложнее в трех сотнях листов на английском языке найти нужную строчку :)) Жаль что нет даташитов на русском языке
Все гениальное - просто
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн ноя 24, 2014 12:02:44

Сообщение PlagueDoctor »

СВ1. На http://gaw.ru/ почитайте, там есть на русском даташиты.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Когда ищешь в орфографическом словаре как пишется определенное слово, нет необходимости читать словарь полностью. Тоже самое и с даташитом. И еще есть такая вещь как содержание, а в электронных документах еще и интерактивный поиск.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Коты, добрый день!

Есть у меня вопросик, который всю голову мне сломал... Прошиваю Фьюзы АТТИНИ13А. Шить решил через ЮСБасп с помощью КОЗЫ (Хазама). Прекрасно все делает. И прошивку заливает и фьюзы исправляет. 8)
Однако, выставляю внутреннюю частоту в 4,8 МГц. И убираю Делитель на 8. Заливаю прошивку тупое ногодрыганье включить и выключить в главном цикле. В итоге наблюдаю на осциллографе, что частота всего около 600 кГц... :facepalm:
Выставляю делитель на 8, в итоге частота падает еще ниже. И так на любом приделе!

Ничего понять не могу, может я чего не так делаю, может где чего не дочитал?

З.Ы. Тупо решил смотреть частоту, потому что программа отказалась делать то, что я хотел, пришлось проверять.
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Вы фьюзы то покажите. В протеусе не пробовали частоту поглядеть, может дело не с фьюзами, а с кодом? И немного оффтопа, как там Ваши двести полочек?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Z_h_e писал(а):как там Ваши двести полочек?
Тупо стоят у стены... :facepalm: Делать 200 плат ЛУТом - то еще удовольствие. В итоге сначала заказал знакомому, но он проволынил почти два месяца и нихрена не сделал. Я сделал сам 6 платок под светодиоды... Теперь думаю или заказать платы (примерно 5500 тысяч), либо купить кластеры светодиодные или что-то подобное, что не надо на платы паять... А так есть у меня 1000 РГБ светодиодов 5050, но пока лень паять. Однако, доделывать его буду все равно, когда руки на него поднимутся. :)))
Z_h_e писал(а):Вы фьюзы то покажите.
Изображение
Вот такие показывает Хазама...

А программа вся вообще ни о чем:
Спойлер

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

; ******************************************************
; * Автор: СКАЗОЧНИК 								   *                           
; * Дата: 31.05.2013                                   *                                              
; * Версия: 130531                                     *                                            
; * Имя файла: Управление датчиком температуры DS18B20 *                                      
; * Для AVR: ATTiny13                                  *                                                    
; * Тактовая частота: 4,8 MHz	(внутренняя RC)		   *
; * Среда разработки: AVR Studio 4.19				   *
; *													   *
; * Выполняемые функции: Программа тест для управления *
; * датчиком температуры по 1-Ваер интерфейсу и        *
; * семисегментными индикаторами (4 штуки)             *
; ******************************************************

; ================
; ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ (.include)
; ================

	.include "tn13Adef.inc"	
;	.include "1W.inc"

; ============
; ТИП МИКРОКОНТРОЛЛЕРА (.device)
; ============

	.device ATtiny13A
 
; =================
; ОБЪЯВЛЕНИЯ И КОНСТАНТЫ (.def, .equ)
; =================
 
	.def	temp 	= R16	
	.def	error  	= R17			; Переменная ошибки
	.def	DATA 	= R18			; Данные между датчиком температуры и МК
	.def	temp1   = R19		
	.def 	REGISTR = R20			; Данные для отправки в регистр на вывод индикторов
	.def	RAZR	= R21			; Разряд индикатора (номер прерывания счетчик)
	.def	RAZ2	= R22
	.def	RAZ3    = R23
	.def	RAZ4    = R24
;	.def	RAZ4    = R25

	.equ	DQPORT 	= PORTB			; Указать порт, к которому подключен вывод DQ
	.equ	DQDDR	= DDRB			; Указать регистр напраавления порта, к которому подключен вывод DQ
	.equ	DQPIN	= PINB			; Указать регистр чтения порта, к которому подключен вывод DQ
	.equ	DQ		= 1				; Указать номер бита порта, к которому подключен DQ

	.equ	DSPORT 	= PORTB			; Указать порт, к которому подключен вывод DQ
	.equ	DSDDR	= DDRB			; Указать регистр напраавления порта, к которому подключен вывод DQ
	.equ	DSPIN	= PINB			; Указать регистр чтения порта, к которому подключен вывод DQ
	.equ	DS		= 0				; Указать номер бита порта, к которому подключен DQ

;	.equ	xtal    = 4800000
;	.equ	DVAL	= xtal/100000
	
; ====
; МАССИВЫ И Т.Д. (.eseg) EEPROM (.db, .dw)
; ====
	
	.eseg

; ******************************
; НАЧАЛО ПРОГРАММЫ (.cseg) FLASH
; ******************************
	
	.cseg

; ------------------
; ВЕКТОРЫ ПРЕРЫВАНИЙ
; ------------------
	
	rjmp RESET 			; Reset Handler
 	rjmp INT0add 		; External Interrupt0 Handler
 	rjmp PCI0add 		
 	rjmp OVF0add 	
 	rjmp ERDYadd 	
	rjmp ACIadd		
	rjmp OC0Aadd 	
	rjmp OC0Badd 	
	rjmp WDTadd	
	rjmp ADCCadd 	
	
		;RESET: 		; Reset Handler
		INT0add: 		; External Interrupt0 Handler
		PCI0add: 		
		OVF0add: 	
		ERDYadd: 	
		ACIadd: 		
		OC0Aadd: 	
		OC0Badd: 	
		WDTadd: 	
		ADCCadd: 	
	
	reti				; Выход из прерываний, которые не используются

; ----------------------
; ОБРАБОТЧИКИ ПРЕРЫВАНИЙ
; ----------------------

; **************************************************************************************************
; ИНИЦИАЛИЗАЦИЯ МК (логическое начало основной программы) ******************************************
; **************************************************************************************************

;           --------- конфигурация портов -----------------------------------------------           

	Reset:	ldi temp, 0b00011101	; Конфигурируем порт B 
			out DDRB, temp	

			ldi temp, 0b00011101	; Выводим в порт В
			out PORTB, temp   
			
	;		ldi RAZR, 0b00001000

	;		ldi RAZ2, 1
	;		ldi RAZ3, 2
	;		ldi RAZ4, 3
			
;			---------- начальные значения переменных, массивы ---------------------------
			  
			  		;	0	  1     2     3     4     5     6     7     8     9     t     E     r     o     C	  -	    
;			Cifri: .db 0xBF, 0xA1, 0xDB, 0xF3, 0xE5, 0x77, 0x7F, 0xA3, 0xFF, 0xF7;, 0x19, 0x18, 0x3B, 0x68, 0x1C, 0x7B, 0x7F
					;	0	  1		2	  3		4	  5		6	  7		8	  9	    10	  11	12	  13	14    15    16

;           ----- конфигурация прерываний, стека, аналогового компаратора, таймеров -----

			ldi temp, 0xFF			; Сбросить флаги внешних прерываний 
			out GIFR, temp			
			
			ldi temp, RAMEND		; Загрузка указателя стека
			out SPL, temp

 ;			ldi temp, 1<<TOIE0  	; Разрешить прерывание при переполнении таймера 
  ;        	out TIMSK0, temp
;
;			ldi temp, 120           ; Закидываем в счетчик изначальное значение (приблизительно, чтобы получить 4 милисекунды)
 ;        	out TCNT0, temp

;			ldi temp, (1<<CS02)|(0<<CS01)|(0<<CS00)   	; Тактовый сигнал = CK/256 (Запустили таймер)
;	       	out TCCR0B, temp
            			       	
;           ---------- разрешение прерываний --------------------------------------------			

;	sei								; Разрешаем прерывания	

; *******************************************************************************************************************
; ОСНОВНАЯ ПРОГРАММА (основной цикл) ********************************************************************************
; *******************************************************************************************************************

	Start:	


sbi	DSPORT, DS 
nop
nop
cbi	DSPORT, DS 

	rjmp Start	; Конец программы, переход на начало
Больше ничего нету, честно. ) Я все поубирал, чтобы именно проверить.

В Протеусе не проверял, ибо не дружу с ним, проверял раньше, но он начал почему-то очень медленно симуляцию делать. :facepalm:

А вот это показывает мой осциллограф (сохранял на флешку):
Изображение

Изображение

З.Ы. При этом, если поделить 4800 кГц на 8, то и получается 600 кГц, однако если поменять галочку на делителе на 8, то еще ниже частота падает...

4,8 МГц/8=600 кГц. :dont_know: Серьезно. Несколько раз проверял, что если поменять галочку, то остается реально где-то 75 кГц.
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Вот текст из даташит.
Спойлер17.3 Calibration Bytes
The signature area ofthe ATtiny13 contains two bytes of calibration data for the internal oscillator. The calibration data in the high byte of address 0x00 is for use with the oscillator set to 9.6
MHz operation. During reset, this byte is automatically written into the OSCCAL register to
ensure correct frequency of the oscillator.
There is a separate calibration byte for the internal oscillator in 4.8 MHz mode of operation but
this data is not loaded automatically. The hardware always loads the 9.6 MHz calibraiton data
during reset. To use separate calibration data for the oscillator in 4.8 MHz mode the OSCCAL
register must be updated by firmware. The calibration data for 4.8 MHz operation is located in
the high byte at address 0x01 of the signature area.
Если я его правильно понял, то генератор 4,8 не калибруется на заводе, а Вам надо сделать это самому. Подберите значение OSCCAL чтобы на выходе была частота 800кГц. Если не ошибаюсь, значение OSCCAL можно менять после какого то действия в течение 4 тактов, защита от дурака глюков программы видать.

------------------------------
Не правильно я понял. Контроллер сам всегда загружает калибровку для 9,6, но значение заводской калибровки для 4,8 в сигнатуре есть. Видимо надо это значение прочитать программатором и включить в прошивку.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Упорно на любом значении тактового генератора RC (внутренний) более 1,024 МГц не поднимается частота... Чую, что где-то есть маленькая хитрость, но понять не могу.
Внешний кварц все же надежнее, но здесь мне его некуда поставить (планов на него не было).
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

А Вы нашли заводскую калибровка OSCCAL для 4.8МГц ?

Кстати. При частоте 1,024 МГц, частота пина (согласно коду) должна 171кГц, а у Вас уже более 500.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

еЭкстирм Бернер показывает заводскую калибровку 0х73737371 вот такое число интересное показыват. Только я с ним ничего сделать не могу. Оне же прошить его не может. ДШ тоже смотрел, как в черную дыру. :))) :facepalm: От 9,6 МГц такта показывает всего 1,024 -1,028 МГц, плывет чуток...
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Вы его можете "прошить" в коде программы изменяя регистр OSCCAL.

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

out OSCCAL, "нужное значение"
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Да, я вот все думаю... Может ли регистр калибровки в 8 раз частоту изменять??? :dont_know:
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Да где она изменена то в 8 раз? У вас на выходе 530кГц, что означает тактовую частоту 3,180 МГц
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

не понятно... Я же пишу, что Делитель на 8 во фъюзах отключен, следовательно должно выдавать чистую частоту тактовую, а он выдает заниженную в 8 раз...

Еще туплю по поводу задержек с нопами и переходами.
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Ваш цикл выполняется за 8 тактов, при этом частота на выходе 530кГц. Соответственно частота генератора 530*8=4240кГц. Очень даже близко к 4.8 учитавая что калибровочное значение загружено для 9,6.

З.Ы.
Z_h_e писал(а):У вас на выходе 530кГц, что означает тактовую частоту 3,180 МГц
Тут я ошибся в расчетах и еще кое где . Я почему то посчитал что у Вас цикл за 6 тактов выполняется (пора в первый класс обратно) :))
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Ну а я как считаю? ТАкже. ))))
Старт и перевая команда - один такт.
Потом два нопа. - два такта.
Потом еще команда - еще такт.
Потом команда перехода на старт - два такта. ...
Также -6 тактов... Что не так?

З.Ы. при этом первый такт и команда перехода - 3 такта.
и вторая команда с двумя нопами - еще 3 такта. Т.е. все ровно. Но выполняется за три такта каждая. Т.е. на сколько снижает частоту?
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Ну поглядите ж даташит уже.
команды sbi cbi rjmp каждая 2 такта =6 плюс два nop итого 8 тактов.

8 тактов это как раз ваш период выходной частоты. 4800000/8=600000Гц.

Итак 600кГц это расчтетная выходная частота. Настройте генератор (еще раз говорю про регистр OSCCAL) и вы выйдете на расчетную.

--------------------
Нет такой команды старт. Этого всего лишь метка.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

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