Например TDA7294

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



Текущее время: Ср сен 30, 2020 13:22:37

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


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



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

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

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

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


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

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


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

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

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

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

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


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

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

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

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

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

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



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


Вернуться наверх
 
Драйверы MOSFET/IGBT Infineon – силой нужно управлять!

Специалисты Infineon усовершенствовали традиционные кремниевые MOSFET и IGBT и выпустили компоненты на базе принципиально иных материалов – нитрида галлия и карбида кремния. Мы создали подборку полезных материалов, чтобы вы разобрались во всех тонкостях и стали экспертом по управлению силовыми приборами нового поколения CoolMOS, CoolGaN, CoolSiC!

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

Карма: 3
Рейтинг сообщений: 261
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1031
Рейтинг сообщения: 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. Это ключевое слово подсказывает компилятору "аккуратнее быть" с переменной, что она может меняться в прерывании и не надо её оптимизировать так, что это может помешать.


Вернуться наверх
 
Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Хорошие новости для покупателей источников питания! Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

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

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

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


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


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

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


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


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

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

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

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

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

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

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


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: Программирование ATtiny13
СообщениеДобавлено: Вт дек 17, 2019 12:39:37 
Друг Кота

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

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

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

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

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

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


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

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

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


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

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

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


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

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

Вложение:

Вложение:

Вложение:

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


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

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


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

Карма: 3
Рейтинг сообщений: 261
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1031
Рейтинг сообщения: 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
Рейтинг сообщений: 57
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2105
Откуда: Беларусь
Рейтинг сообщения: 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 
Электрический кот

Карма: 3
Рейтинг сообщений: 261
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1031
Рейтинг сообщения: 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
Рейтинг сообщений: 57
Зарегистрирован: Сб май 21, 2016 11:04:52
Сообщений: 2105
Откуда: Беларусь
Рейтинг сообщения: 0
NStorm писал(а):
вообще плохая практика писать "магические числа" - код потом нечитаем без постоянного заглядывания в ДШ совсем. П


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


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

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


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

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

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

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

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

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

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

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

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

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


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

Карма: 87
Рейтинг сообщений: 949
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 10933
Откуда: ДОНЕЦК (ЮГО-ВОСТОК 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 
Поставщик валерьянки для Кота
Аватар пользователя

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

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

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

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


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

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


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

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


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

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


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