Например TDA7294

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





Текущее время: Чт мар 28, 2024 12:25:02

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1459 ]     ... , , , 53, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 09:06:09 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 218
Рейтинг сообщения: 0
Код:
***
ftoa(adc, 2 ,buffer);  //ftoa(float n,unsigned char decimals,char *str);     
puts(buffer);                     //puts(char *str);
puts(", ");
itoa(PERIOD_ON,buffer);   //void itoa(int n,char *str);
puts(buffer);
puts("\n");

Спасибо большое :beer: Не из лени своей, писать на форуме начал, реально инфы ноль по этому делу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 10:52:37 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4871
Откуда: Минск
Рейтинг сообщения: 0
neid, очевидно же: putchar('\n'); putchar('\r');

P.S. Хотя и можно и puts обойтись, да


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 11:08:53 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Вообще кстати puts() ведь должна сама в конце символ новой строки печатать. У neid либо она не из stdlib.h берется (реализация функции), либо в терминале настроен newline на CR+LF возможно.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Система событий в новых мк от Microchip
СообщениеДобавлено: Чт янв 28, 2021 11:39:15 
Родился

Зарегистрирован: Чт янв 14, 2021 10:25:57
Сообщений: 19
Рейтинг сообщения: 0
Пытаюсь настроить систему событий Attiny1607, чтобы по срабатыванию таймера запускалось чтение АЦП.
Настраиваю вот так:
Код:
    EVSYS.SYNCCH0    = 0x02; //TCA0_OVF_LUNF
    EVSYS.SYNCUSER0 =    0x01;   //ADC0

 Инициализация ADC:
    // Частота ADC: 208,333 kHz =20 000KHz/6 /16
    //  Опорное напряжение ADC: AVCC pin
    ADC0.CTRLA = 0x00; //Full 10-bit resolution. The 10-bit ADC results are accumulated or stored ADC.RES
    ADC0.CTRLB = 0x00;
    ADC0.CTRLC = 0x13;//CLK_PER divided by 16, Опорное напряжение ADC: AVCC pin
    ADC0.MUXPOS = 0x08; //начальный режим чтения с ножки (PB5-AIN8)
    ADC0.INTCTRL = ADC_RESRDY_bm;//Result Ready Interrupt Enable
    ADC0.EVCTRL = 1;  //разрешить запуск по событию
    ADC0.CTRLA   = ADC_ENABLE_bm;//включить АЦП
    ADC0.COMMAND = 0x01;//Start Conversion
    while ( (ADC0.INTFLAGS & 1)==0 );// подождём конца первого преобразования (флага прерывания ацп)

    asm("sei"::);   // Разрешить глобальное прерывание
    ADC0.INTFLAGS |=1;

Таймер работает, а прерывание АЦП ISR (ADC0_RESRDY_vect) не срабатывает.
Помогите пожалуйста настроить регулярную работу АЦП.


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 12:22:55 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Lilia, а если не запускать преобразование при настройке АЦП? Т.е. вот это всё убрать:
Код:
    ADC0.COMMAND = 0x01;//Start Conversion
    while ( (ADC0.INTFLAGS & 1)==0 );// подождём конца первого преобразования (флага прерывания ацп)

    asm("sei"::);   // Разрешить глобальное прерывание
    ADC0.INTFLAGS |=1;

И оставить только sei(); (причем лучше так из #include <avr/cpufunc.h>, без asm()).

Если не поможет, попробуйте в студии из Atmel Start'а сгенерить код и посмотреть что там оно нагенерит. Вообще в мануале пишут что надо асинхронный канал настроить на использование синхронного. Честно с системой событий новых AVR я сам пока не разбирался. Но если бы случился затык, полез бы смотреть код из генератора.
Цитата:
• Configure TCA with the desired frequency and period
• Select TCA overflow event as an event source for synchronous event channel 0
• Configure asynchronous user channel 1 (ADC0) to use synchronous event channel 0 as event
input
• Configure the ADC0 for an ADC conversion triggered by an event

Отсюда: http://ww1.microchip.com/downloads/en/A ... 02400A.pdf

Добавлено after 36 seconds:
PS: START доступен прям тут нынче, можно и не из студии: https://start.atmel.com/#project

Добавлено after 25 minutes 59 seconds:
Lilia, ага, покопался в START'е - ADC0 использует ASYNCUSER0, а у вас SYNCUSER. Вот как старт нагенерил:
Код:
   EVSYS.ASYNCUSER1 = EVSYS_ASYNCUSER1_SYNCCH0_gc; /* Synchronous Event Channel 0 */
   EVSYS.SYNCCH0 = EVSYS_SYNCCH0_TCA0_OVF_LUNF_gc; /* Timer/Counter A0 overflow */

...
ISR(ADC0_RESRDY_vect)
{
   // Clear the interrupt flag
   ADC0.INTFLAGS |= ADC_RESRDY_bm;
}

Ну и плюс про очищения флага я напоминаю. А в остальном как у вас. Просто user channel не тот выбран по-идее.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 12:28:07 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 218
Рейтинг сообщения: 0
neid, очевидно же: putchar('\n'); putchar('\r');
P.S. Хотя и можно и puts обойтись, да

Честно я залез в help, и только перевел описание для библиотеки <stdlib.h> вчера, а до этой библиотеки <stdio.h> долез сегодня после вашего сообщения, и увидел что вы имеете ввиду - void putchar(char c);. Вообще я только постигаю все это дело и многие мои тупые первые ошибки гуглю или ищу на форумах более менее правильно объяснение... и может мне первым делом надо было понять для чего эти библиотеки, и как они работают. Но нам же уже надо в УАРТ данные слать))))

NStorm писал(а):
Вообще кстати puts() ведь должна сама в конце символ новой строки печатать. У neid либо она не из stdlib.h берется (реализация функции), либо в терминале настроен newline на CR+LF возможно.

Из нее самой stdlib.h , подключена еще alcd.h. Я пока не в железе, а в Протусе, не увидел там таких настроек терминала.

Мужики в любом случаем спасибо, ошибки свои понял что я не так делал!)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 12:31:18 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
Пытаюсь настроить систему событий Attiny1607, чтобы по срабатыванию таймера запускалось чтение АЦП.

ТаймерА вообще тикает? Если тикает, то доходит ли счёт до момента OVF?

У меня от внешней ноги всё срабатывает:

Код:
#define EVSYS_SYNCCH_ZERO   EVSYS_SYNCCH0_PORTC_PIN1_gc


inline void EventSystem_Init(void)
{
    EVSYS.SYNCCH0 = EVSYS_SYNCCH_ZERO;
   
    //////

    EVSYS.ASYNCUSER1 = EVSYS_SYNCUSER0_SYNCCH0_gc;      // Call event for ADC0   
}


Я код пишу используя макроопределения из заголовочников Atmel/Microchip, чтобы лишний раз в даташит не заглядывать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 13:11:39 
Родился

Зарегистрирован: Чт янв 14, 2021 10:25:57
Сообщений: 19
Рейтинг сообщения: 0
NStorm, parovoZZ,
Заработало! спасибо!

Асинхронный канал для АЦП я пробовала.
А вот заработало, когда EVSYS.ASYNCUSER0 на EVSYS.ASYNCUSER1 поменяла. Может поделитесь почему 1 должен быть? :dont_know:


Цитата:
Я код пишу используя макроопределения из заголовочников Atmel/Microchip, чтобы лишний раз в даташит не заглядывать.

Это дело хорошее. Но у меня глупый вопрос, как эти макроопределения быстро находить?(у меня Atmel studio)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 13:46:52 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
Но у меня глупый вопрос, как эти макроопределения быстро находить?(у меня Atmel studio)

Так студия же и подсказывает.
Из записи
Код:
EVSYS.SYNCUSER0 =    0x01;

сразу не ясно, на какой канал подписывается получатель SYNCUSER0. А вот так сразу понятно:
Цитата:
EVSYS.ASYNCUSER1 = EVSYS_SYNCUSER0_SYNCCH0_gc;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 13:49:05 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
А вот заработало, когда EVSYS.ASYNCUSER0 на EVSYS.ASYNCUSER1 поменяла. Может поделитесь почему 1 должен быть? :dont_know:

USER канал в EVSYS - это "получатель" сообщения. Конкретно именно ADC0 находится в ASYNCUSER1. Это написано в таблице 14.5.5:
Изображение
Т.е. при n=1, выбираем "целью" события ADC0. Значит писать надо в EVSYS.ASYNCUSER1. Чуть ниже небольшая таблица, которая показывает 4 варианта что можно туда записать - это тот канал, с которого будем принимать сообщения.
"Отправитель", это там где просто канал, без USER. Т.к. у нас отправитель TCA0_OVF_LUNF - он находится в SYNCCH0 (табл. 14.5.4), поэтому и пишем сюда 0x1. Тем самым говоря, что отправитель был задан в канале SYNCCH0.

Вы же получателем выбрали сам таймер обратно, записав в EVSYS.SYNCUSER0 = 1 (табл. 14.5.6). А если писали в EVSYS.ASYNCUSER0 - то отправляли событие в таймер Б (TCB), соотв. по таблице 14.5.5.


Вложения:
evsys.png [45.21 KiB]
Скачиваний: 787


Последний раз редактировалось NStorm Чт янв 28, 2021 14:42:35, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 14:36:31 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
Чуть ниже небольшая таблица, которая показывает 4 вариант что можно туда записать - это то, кто будет "отправитель" сообщения.

Это не отправитель, а выбор канала, по которому будут приходить события. А вот к уже выбранному каналу необходимо привязать отправителя. Каких отправителей на какой канал можно повесить - надо смотреть даташит.
Асинхронный канал предназначен для асинхронных событий (фронты этих событий не синхронизируются с тактовой частотой МК) от внешних ног, от асинхронных таймеров.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 14:43:46 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Да, немного напутал. Перефразировал, чтобы правильнее звучало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 15:04:26 
Родился

Зарегистрирован: Чт янв 14, 2021 10:25:57
Сообщений: 19
Рейтинг сообщения: 0
NStorm, вот теперь действительно все понято. Спасибо огромное!
Как же с ними все по-хитрому...

Добавлено after 12 minutes 11 seconds:
parovoZZ, тоже спасибо за помощь.

Еще про Atmel studio.
(Тут можно глупые вопросы задавать?)

У меня сама студия только названия регистров подсказывает. Может это где-то настраивается?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт янв 28, 2021 15:09:51 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Lilia, вообще по-умолчанию должно быть. Попробуйте обновить студию и Pack поддержки семейства МК (не помню где, но где-то отдельно там в опциях они есть). Студия сейчас кстати Microchip Studio стала называться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт мар 18, 2021 17:52:21 
Родился

Зарегистрирован: Чт янв 14, 2021 10:25:57
Сообщений: 19
Рейтинг сообщения: 0
Товарищи,

У меня новый вопрос. Пытаюсь настроить внешнее прерывание в том же attiny1607. В регистре INTFLAGS по внешнему событию в порта А меняется бит, но прертывание не происходит. Прерывание таймера и АЦП удалось настроить. Не понимаю в чем может быть дело.

Код:
   PORTA_PIN2CTRL=0x01; //Sense  both edges
   SREG = 0xD0; //Global Interrupt Enable   

ISR (PORTA_PORT_vect)
{
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт мар 18, 2021 21:12:07 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 3
Странная запись... У меня это выглядит вот так:

Код:
PORTB.PIN2CTRL = PORT_ISC_RISING_gc


У меня сейчас студии нет под рукой, поэтому более сказать не могу.
Глобальные прерывания включаются так (это нагляднее)
Код:
sei();


Добавлено after 2 hours 41 minute 36 seconds:
У меня сама студия только названия регистров подсказывает. Может это где-то настраивается?


Должно быть так:

Изображение


Вложения:
help.png [15.29 KiB]
Скачиваний: 590
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт мар 18, 2021 23:11:30 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Должно быть так:

Изображение

Не так, а PORT_ISC_BOTHEDGES_gc, если хотят по обоим фронтам. Что в общем-то и было написано, хоть и виде "бяки" - магического числа 0x01.

Добавлено after 12 minutes 2 seconds:
Хотя да, я бы SREG = 0xD0; //Global Interrupt Enable на
Код:
#include <avr/interrupt.h>
...
sei();

заменил был


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт мар 19, 2021 09:20:38 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
Не так,

Я отвечал на этот вопрос и показал как у меня
Цитата:
У меня сама студия только названия регистров подсказывает. Может это где-то настраивается?



А до этого
Цитата:
PORT_ISC_BOTHEDGES_gc

автор вопроса сама способна дойти. Девушка весьма смышлёная.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт мар 19, 2021 10:16:49 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1382
Рейтинг сообщения: 0
Приветствую. Я с новыми мк AVR не работал. Посмотрел бегло даташит на упомянутый камушек. Что могу сказать. Интересненько. От классических авр есть во многом серьёзные отличия. Хотел бы поинтересоваться насчёт впечатлений об этих камушках. Что скажете? Плюсы, минусы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт мар 19, 2021 11:19:14 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Demiurg, там много из xmega перекочевало. Камни классные, себе взял attiny1614 на поиграться, но пока только соб-но и "игрался" с ними только. Преимуществ масса. Просто на порядок более развитая периферия, которая местами даже лучше stm32 (ничего против stm32 не имею, местами там лучше, просто факты что местами у 0-series/1-series AVRок есть круче вещи). Недостатки - сходства с классическими AVR очень мало, осваивать почти заново всё надо. Программатор нужен UPDI, это легко решаемо в принципе, полно вариантов уже из чего их собрать. Что USBAsp есть мод., из CH340 переходника можно сделать и т.д. Я покупал оригинальный Snap! за $15 - работает в родных IDE + есть отладка железная (не проверял правда пока). Как-то так.
ЗЫ. Помимо тинек у них подобные штуки еще в линейке мег появились: https://www.microchip.com/wwwproducts/en/AVR128DA64


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 27


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

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


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