Например TDA7294

Форум РадиоКот • Просмотр темы - Программирование ATtiny13
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пт май 07, 2021 07:36:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 175 ]    , , , , 5, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 10:40:53 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1177
Зарегистрирован: Пт мар 29, 2019 10:45:58
Сообщений: 2189
Откуда: Тюмень
Рейтинг сообщения: 0
Например я бы мог запсать в OCR0A 1172 и тогда у меня получился бы 1 гц

Если счётчик настроен на прерывание по переполнению, то записывать предварительное значение нужно в регистр TCNT0.

_________________
Профессия нужна человеку, чтобы заниматься любимым делом, применять свои таланты и знания, приносить пользу другим людям.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 11:12:15 
Мудрый кот

Карма: 18
Рейтинг сообщений: 506
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1860
Рейтинг сообщения: 0
olegue, либо снижать частоту самой avr, либо считать вручную дополнительно в прерывании. Еще есть AVRки с 16-битными таймерами.
Кстати OCR0A = 0xFF не имеет смысла. Можно запустить таймер не по совпадению с OCR, а просто по переполнению и разрешить прерывание по переполнению. Вектор TIM0_OVF_vect.


Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 11:22:44 
Друг Кота
Аватар пользователя

Карма: 88
Рейтинг сообщений: 1050
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11889
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 2
Ёжли уж оченно хочется ВСЮ начинку ПО МАКСИМУМУ выпотрошить (тем более для таких "микробов" типа тини13) - идем работать под ассемблером!
:beer:


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 11:23:48 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
NStorm,

типа такого наверно

Код:
 ISR(TIM0_COMPA_vect)
   {
     
       j=j+1;
      if (j==4)
    {
       PORTB ^= (1<<LED2);
       j=0;
       TCNT0=0x00;
    }
     
      }



просто целое число подобрать


Вернуться наверх
 
Обновленный ассортимент тактовых кнопок Omron!

Компэл предлагает обновленный ассортимент миниатюрных тактовых кнопок производства компании Omron, который включает в себя разнообразные решения как для стандартных условий, так и для применения в условиях повышенной влажности.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 11:27:12 
Мудрый кот

Карма: 18
Рейтинг сообщений: 506
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1860
Рейтинг сообщения: 0
Как считать "вручную" для 1 Гц:
Код:
volatile uint8_t t0_ovf_cnt, t0_1hz_flag;

ISR(TIM0_COMPA_vect) {
  t0_ovf_cnt++; // Увеличием свою переменную, отмечая кол-во входов в прерывание по совпадаению.
  if (t0_ovf_cnt == 4) // если это был 4ый вход, пора изменить OCR0A, чтобы дальше получился 1 Гц
    OCR0A = 148; // 1172 вы сами посчитали, 4 раза по 256 уже прошло, осталось 148 (256*4 + 148 = 1172)
  else if (t0_ovf_cnt >= 5) { // И вот следующий раз натикало 1172 тика вот тут уже
     OCR0A = 255; // вернем регистр сравнения назад к 0xFF
     t0_ovf_cnt = 0; // сбросим нашу переменную с кол-ом переполнений
     t0_1hz_flag = 1; // установим переменную с флагом переполнения. Мы можем в main() потом проверить его и если он 1 - значит пора что-то делать. Или вместо этой строки сразу можем написать скажем переключения пина со светодиодом и будет мерцание в 1 Гц.
  }
}



Добавлено after 2 minutes 27 seconds:
olegue, или так, как вы написали, но "просто целое число подобрать".
Не забывайте все переменные, которые будут меняться в прерывании объявлять как volatile. Это ключевое слово подсказывает компилятору "аккуратнее быть" с переменной, что она может меняться в прерывании и не надо её оптимизировать так, что это может помешать.


Вернуться наверх
 
Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 11:27:14 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
BOB51 писал(а):
ВСЮ начинку ПО МАКСИМУМУ выпотрошить

да мне хоть бы базу какую-то освоить, как и что пишется и работает.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 11:28:46 
Мудрый кот

Карма: 18
Рейтинг сообщений: 506
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1860
Рейтинг сообщения: 0
Ассемеблер не нужен. Прекрасно вся периферия изучается и с помощью C. Регистры одинаковые что там, что сям.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 12:31:00 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
Как и в каких пределах устанавливается внутренняя частота процессора (встроенного генератора)?
здесь прочитал, что define f_cpu лишь указывает компилятору , с какой часторой работает процссор
https://qna.habr.com/q/449147

Добавлено after 3 minutes 56 seconds:
и еще 2й вопрос.
Как можно выводить отладочную информацию , допустим смотреть какую-то переменню в динамике

Ну например как в отладчике. допустим я посчитал частоту импульсов с генератора. Как в протеусе вывести на экран результат подсчета?
Конечно, можно было приделать 1602, но допустим в тиньке на так много выходов для этого. Ну как-то так.

Добавлено after 17 minutes 9 seconds:
И еще 3-и грабли

В отладчике вижу что все мои переменный указаны в шестнадцатиричном виде.
И когда я делю количество импульсов на секунды, неудивительно что у меня в результирующей переменной '\0'

А как нужно поделить?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 12:39:37 
Друг Кота

Карма: -10
Рейтинг сообщений: -165
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 4469
Откуда: .ru
Рейтинг сообщения: 0
olegue писал(а):
в каких пределах устанавливается внутренняя частота процессора (встроенного генератора)?

Что вы там постоянно гуглите... )) Даташит же есть !
https://docviewer.yandex.ua/view/0/?pag ... J9&lang=en

От таких источников синхронизации работает тини... внутренний RC генератор , внешний генератор.... полный список))
Вложение:
источник синхронизации.jpg [64.63 KiB]
Скачиваний: 291

К примеру частоты внутреннего RC генератора. Частота устанавливается фьюзами.
Вложение:
внутренний RC генератор.jpg [170.74 KiB]
Скачиваний: 287

Есть делитель частоты....
Вложение:
делитель частоты.jpg [147.07 KiB]
Скачиваний: 302

Ещё можно подключить внешний генератор... и даже нарисовали как))
Вложение:


Добавлено after 7 minutes 33 seconds:
В нормальный аврках (типа мега48 и выше) есть ещё и кварцевый генератор...
Вложение:
кв.jpg [209.04 KiB]
Скачиваний: 304

И даже есть внешний RC генератор.
Можно припаять обычный подстроечный резистор и менять частоту МК плавно !
Я так и делал))
Вложение:
внешний RC генератор.jpg [140.64 KiB]
Скачиваний: 308

...
и т.д. и т.п.))
Короче , МК можно подключать к любому тактовому генератору... к внутреннему... к внешнему... и плавно менять частоту... и вообще как угодно)) Для этого не нужно ничего гуглить , достаточно просто открыть даташит и прочитать))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 12:42:53 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
Даташит пока не научился читать.

Поэтому гуглю где простыми словами написано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 13:22:54 
Друг Кота

Карма: -10
Рейтинг сообщений: -165
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 4469
Откуда: .ru
Рейтинг сообщения: 0
Вложение:

Вложение:

Вложение:

Вложение:

Осталось только написать свой код для таймера 0, как нас просит компилятор (отмечено синим), остальное за нас уже сделал компилятор)).
Всё))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 13:57:28 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
roman.com, дайте даташит на русском. Мне на английском его читать пока проблематично.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 15:02:44 
Мудрый кот

Карма: 18
Рейтинг сообщений: 506
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1860
Рейтинг сообщения: 0
Цитата:
Как и в каких пределах устанавливается внутренняя частота процессора (встроенного генератора)?

Если не трогать регистр OSCCAL, то по-умолчанию он откалиброван на 4.8/9.6 МГц. Фьюзами CKSEL + CKDIV8 по-умолчанию выставлено 9.6 МГц / 8, т.е. 1.2 МГц. Фьюзы меняются только во время прошивки.
Записывая в регистр CLKPR можно на ходу менять делитель и изменять Fclk от 1 до 256 (как степень 2):
Изображение
По-умолчанию зашитый фьюз CKDIV8 выставляет при старте МК именно этот регистр в 0b0011, включая делитель на 8.
Чтобы поменять делитель, прежде, чем писать в CLKPS, надо записать 1 в CLKPCE и сразу потом писать нужный делитель. Пример, включить делитель на 32 (300 кГц частота Fclk):
Код:
CLKPR = 1 << CLKPCE;
CLKPR = (1 << CLKPS2) | (1 << CLKPS0);


Добавлено after 1 minute 17 seconds:
Цитата:
Мне на английском его читать пока проблематично.

Без этого будет тяжко. Надо учиться читать ДШ на английском, хотя бы с переводчиком для начала. Благо они по главам написаны, целиком читать не обязательно, но ответы на одиночны вопросы можно находить.

Добавлено after 2 minutes 41 second:
Цитата:
Ну например как в отладчике. допустим я посчитал частоту импульсов с генератора. Как в протеусе вывести на экран результат подсчета?

В протеусе - тормознули программу, Debug->AVR->Variables там будут переменные текущие и их значения.
Изображение

Добавлено after 2 minutes 36 seconds:
Цитата:
В отладчике вижу что все мои переменный указаны в шестнадцатиричном виде.
И когда я делю количество импульсов на секунды, неудивительно что у меня в результирующей переменной '\0'

Нужен код. Что на что делится непонятно. Почему 0 и при чем здесь 16ричный вид?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 16:54:23 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
NStorm писал(а):
Без этого будет тяжко. Надо учиться читать ДШ на английском,


нет , я и без словаря все понимаю, но тяжко, иногда нужно 2-3 раза прочитать. На русском самой собой сподручнее.

NStorm писал(а):
Нужен код. Что на что делится непонятно. Почему 0 и при чем здесь 16ричный вид?

разобрался.

Добавлено after 1 hour 29 minutes 47 seconds:
Код:
 TCCR0B=0x05; //ДЕЛЕНИЕ НА 1024
   //TCCR0B|=(1<<CS02);  // УСТАНОВИМ ДЕЛИТЕЛЬ 1024
   //TCCR0B|=(1<<CS00);  // Эти 2 бита в 1
   TCCR0A=0x00;
   OCR0A=0x00;  // 30; 1200000/1024=1172 ГЦ и делим на число 0x1E (30)= 39 гц
   TIMSK0=0x04;   // разрешаем таймер по совпадению с числом в OCR0A


у меня вот эти настройки таймера работают по переполнению,а не по сравнению с OCR0A.

кАКОЙ БЫ число в OCR0A не писал, все равно делит на 255 и дает 4.5 срабатываний в секунду.
а если ставлю TIMSK0=0X02, то вообще в функцию не заходит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 17:23:54 
Мудрый кот

Карма: 18
Рейтинг сообщений: 506
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1860
Рейтинг сообщения: 0
Цитата:
у меня вот эти настройки таймера работают по переполнению,а не по сравнению с OCR0A.

Потому, чтобы он работал в таком режиме, надо ему такой режим установить в TCCR0A:
Код:
TCCR0A = (1 << WGM01);

Режим называется Clear Timer on Compare Match (CTC). Чтобы он считал до OCR0A, а НЕ до 0xFF.

Цитата:
а если ставлю TIMSK0=0X02, то вообще в функцию не заходит.

Потому что небось остается ISR(TIM0_COMPA_vect), а надо ISR(TIM0_OVF_vect) - я ведь писал выше.
И вообще плохая практика писать "магические числа" - код потом нечитаем без постоянного заглядывания в ДШ совсем. Пишите TIMSK = (1 << OCIE0A);, а не 0x04.


Последний раз редактировалось NStorm Вт дек 17, 2019 19:13:35, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 17:43:21 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2263
Откуда: Беларусь
Рейтинг сообщения: 0
NStorm писал(а):
вообще плохая практика писать "магические числа" - код потом нечитаем без постоянного заглядывания в ДШ совсем. П


не готов пока по даташиту работать,
нет общего понимания системы,
поэтому выдерну код Гденить в интернетах, запущу, пытаюсь выйти на даташитские настройки, ну и так вот получается


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 19:13:17 
Мудрый кот

Карма: 18
Рейтинг сообщений: 506
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1860
Рейтинг сообщения: 0
Ну с таким подходом понимания может и не возникнуть. Откуда ж оно будет, если смысл цифр неизвестен?
Так-то в сети полно нормальных примеров. Почитайте те же курсы от DiHalt - нормальным языком написано по-русски, без заумностей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 19:14:07 
Друг Кота

Карма: -10
Рейтинг сообщений: -165
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 4469
Откуда: .ru
Рейтинг сообщения: 0
olegue писал(а):
не готов пока по даташиту работать,
нет общего понимания системы,

так ничего не получится... надо всё разбирать подробно. Иначе пустая трата времени.
Даташита на русском нет... надо искать. я тини вообще не использую... (для моих проектов мало выводов и памяти и т.д.).
Чтоб понять сам принцип работы можно читать даташит из другой авр)) Принцип работы всех таймеров авр одинаковый.

Для начала общая схема таймера.
Вложение:
схема.jpg [106.27 KiB]
Скачиваний: 285

1. есть два "главных" регистра TCR0A и TCR0B. Они задают режим работы таймера:
-управление выводами (COM0A1:0) - включить/выключить/переключить. Ничего не выбираем.
Можно пока выводы тини 13 не трогать.))
-режим работы таймера (WGM01:0). Всего 7 режимов. Смотрим таблицу и выбираем нужный нам режим работы.
Например выбрали нормальный режим. Пишем (WGM01:0) все нули... таймер будет 'тикать' от 0 до 255.
Вложение:
режим таймера.jpg [85.12 KiB]
Скачиваний: 323

-настраиваем делитель частоты для таймера. Тоже по таблице.
Например выбрали делитель 1. На входе получим: тактовая частота / 1 делитель / 256 таймер =... (посчитай сам).
Вложение:
делитель частоты.jpg [49.56 KiB]
Скачиваний: 206

Всё)) Всего три параметра. Режим таймера задан.

2. дальше прерывание. Настраиваем маску прерывания в регистре TIMSK: по переполнению/по совпадению.
Выбираем по переполнению (TOV0).
Всё)) Всего два параметра. Прерывание таймера задали.

Включаем тини 13... смотрим как таймер вызывает прерывание каждые: тактовая частота / 1 делитель / 256 таймер =... (посчитай сам).

Сидим и радуемся.))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 19:35:45 
Друг Кота
Аватар пользователя

Карма: 88
Рейтинг сообщений: 1050
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11889
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
Даташиты читать влом...(или проблемы языковые)...
http://publ.lib.ru/ARCHIVES/B/BELOV_Ale ... _A.V..html
http://sunduk.radiokot.ru/view/?id=1287391092
ГРЫЗЕМССссс!
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 20:08:16 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1177
Зарегистрирован: Пт мар 29, 2019 10:45:58
Сообщений: 2189
Откуда: Тюмень
Рейтинг сообщения: 0
На русском самой собой сподручнее.

Согласен, сам из таких… :)
Вот тебе описание на русском:
ATtiny2313
ATmega8
Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel
ATmega128
И в сети по меге128

Думаю на первое время хватит. :)

_________________
Профессия нужна человеку, чтобы заниматься любимым делом, применять свои таланты и знания, приносить пользу другим людям.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 175 ]    , , , , 5, , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Dimon456 и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y