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

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

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

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

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

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

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

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

Сообщение CB1 »

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

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

Сообщение smacorp »

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

ATmega8 - стр.242: http://www.atmel.com/Images/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf
ATmega48A/88A/168A/328P - стр.313: http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

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

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

Сообщение CB1 »

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

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

Сообщение PlagueDoctor »

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

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

Сообщение Z_h_e »

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

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

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

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

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

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

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

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

Сообщение Z_h_e »

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

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

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

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 кГц.
Станислав
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение 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
Откуда: Иркутск

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

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

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

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

Сообщение Z_h_e »

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

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

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

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

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

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

Сообщение Z_h_e »

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

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

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

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

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

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

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

Сообщение Z_h_e »

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

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

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

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

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

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

Сообщение 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
Откуда: Иркутск

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

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

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

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

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

Сообщение Z_h_e »

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

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

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

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

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