Генератор из arduino

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: Генератор из arduino

Сообщение shonty »

Что-то мне взгрустнулось :) решил проверить, как там в atmege8 с ACSR по дефолту:

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

	in R21, ACSR
	sts var, R21
....
; тут всякие инициализации..
....
....
	lds R21, var
	rcall PRINT_REGISTR
	rcall OUT_HEX_0
Вот что получилось:

Изображение

5-й бит N/A

Чуда не произошло :dont_know: :)

Добавлено after 31 minute 47 seconds:
ps: Почему-то иногда 4-й бит самопроизвольно устанавливается, рандомно..
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: Генератор из arduino

Сообщение Just_Fluffy »

shonty, все по честному
Bit 4 – ACI: Analog Comparator Interrupt Flag
если выводы МК болтаются в воздухе - то компаратор ловит наводки и кидается туда-сюда рандомно

Добавлено after 1 minute 12 seconds:
Даже если их заземлить, то есть шанс, что одинаковые потенциалы тоже могут вводить компаратор в смущение. Хотя там должен же быть хоть минимальный гистерезис...
Белая и Пушистая
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Генератор из arduino

Сообщение akl »

Just_Fluffy писал(а):...Хотя там должен же быть хоть минимальный гистерезис...
Гистерезис не заявлен. Есть только Analog Comparator Input Offset Voltage <40mV у mega8A и <20mV у mega8.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Генератор из arduino

Сообщение Starichok51 »

Just_Fluffy, если выводы МК болтаются в воздухе - то компаратор не используется и его выход ни на что не влияет.
а если компаратор используется, то на его выводы что-то подключено и навести на низкое сопротивление схемы такую помеху практически невозможно.
а также нет такой хаотической помехи, чтобы на рядом стоящие выводы наводить хаотическую противофазную помеху.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: Генератор из arduino

Сообщение shonty »

Starichok51 писал(а):если выводы МК болтаются в воздухе - то компаратор не используется и его выход ни на что не влияет
В случае эксперимента он как раз по умолчанию включен (бит7=0). И ACSR я считывал в ОЗУ сразу после инициализации стёка. Возможно по этому бит флага прерывания и проскакивает, не часто, но бывает.
Может не на выводы наводки, а ещё какие процессы :dont_know:
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: Генератор из arduino

Сообщение Just_Fluffy »

Starichok51 писал(а):если выводы МК болтаются в воздухе - то компаратор не используется и его выход ни на что не влияет.
То, что он не используется - эт понятно. Но как раз его сработка от наводок света Венеры в атмосфере Марса и может давать хаотическое дерганье выхода компаратора. Речь же и шла у shonty про эксперимент.
Белая и Пушистая
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Генератор из arduino

Сообщение Starichok51 »

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

Добавлено after 3 minutes 10 seconds:
я вот в своих проектах не выключаю компаратор. более того, у меня в некоторых проектах на входах компаратора висят кнопки, которые будут переключать компаратор.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Генератор из arduino

Сообщение BOB51 »

Зависит и от программы и от конкретной схемы (и последующей реализации той схемы в железе).
8)
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Генератор из arduino

Сообщение Starichok51 »

я же сказал, что если программа не использует компаратор, то его включенное состояние ни на что не влияет, от слова "совсем".
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Генератор из arduino

Сообщение akl »

Кроме тока потребления.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Генератор из arduino

Сообщение Starichok51 »

ток потребления компаратором влияет при питании от аккумулятора в состоянии полного сна.
у меня сделаны термометры, которые питаются от аккума и там я отключаю компаратор.
после ресета температура показывается 5 секунд и МК отправляется спать.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
shev1975
Грызет канифоль
Сообщения: 287
Зарегистрирован: Чт апр 02, 2009 17:46:04
Откуда: Крым

Re: Генератор из arduino

Сообщение shev1975 »

Привет, нужен генератор на частоту 25.3 кГц, сваял на аттини25, при помощи визарда CVAVR настроил СТС на частоту вдвое больше, выбрал переключение по совпадению. Но не понял как получить противофазный сигнал на двух выходах OC0A и OC0B. Думал что можно настроить при инициализации один вывод в 1, а второй в 0, но фокус не удался.
Подскажите какой режим лучше использовать для моей цели? Или как получить противофазный сигнал? Сильно глубоко разбираться не охота, друг попросил ультразвуковую пищалку сделать, да и забуду я все это, но отмазаться не получается.
Спойлер#include <tiny25.h>

void main(void)
{

#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out
DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=0 Bit0=1
PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Toggle on compare match
// OC0B output: Toggle on compare match
// Timer Period: 9,875 us
// Output Pulse(s):
// OC0A Period: 0,01975 ms Width: 9,875 us
// OC0B Period: 0,01975 ms Width: 9,875 us
TCCR0A=(0<<COM0A1) | (1<<COM0A0) | (0<<COM0B1) | (1<<COM0B0) | (1<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00);
TCNT0=0x00;
OCR0A=0x4E;
OCR0B=0x4E;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Timer1 Overflow Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
PLLCSR=(0<<PCKE) | (0<<PLLE) | (0<<PLOCK);

TCCR1=(0<<CTC1) | (0<<PWM1A) | (0<<COM1A1) | (0<<COM1A0) | (0<<CS13) | (0<<CS12) | (0<<CS11) | (0<<CS10);
GTCCR=(0<<TSM) | (0<<PWM1B) | (0<<COM1B1) | (0<<COM1B0) | (0<<PSR1) | (0<<PSR0);
TCNT1=0x00;
OCR1A=0x00;
OCR1B=0x00;
OCR1C=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE1A) | (0<<OCIE1B) | (0<<OCIE0A) | (0<<OCIE0B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=(0<<INT0) | (0<<PCIE);
MCUCR=(0<<ISC01) | (0<<ISC00);

// USI initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC);

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIS1) | (0<<ACIS0);
ADCSRB=(0<<ACME);
// Digital input buffer on AIN0: On
// Digital input buffer on AIN1: On
DIDR0=(0<<AIN0D) | (0<<AIN1D);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

while (1)
{
}
}
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Генератор из arduino

Сообщение Starichok51 »

строку
TCCR0A=(0<<COM0A1) | (1<<COM0A0) | (0<<COM0B1) | (1<<COM0B0) | (1<<WGM01) | (0<<WGM00);
заменить на
TCCR0A=(0<<COM0A1) | (1<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (0<<WGM00);
и выходы будут противофазные.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Denis82
Встал на лапы
Сообщения: 136
Зарегистрирован: Вс авг 23, 2015 08:14:05

Re: Генератор из arduino

Сообщение Denis82 »

взять что-то типа STM32G051C6T6 за 80р на али
там тебе и пару полноценных DAC и куча другой переферии
по DAC-ку stm-ок куча инфы, даже на русском

или не заставляй меня паять и думать ?
Аватара пользователя
shev1975
Грызет канифоль
Сообщения: 287
Зарегистрирован: Чт апр 02, 2009 17:46:04
Откуда: Крым

Re: Генератор из arduino

Сообщение shev1975 »

Starichok51, это "Clear OC0B on compare match", т.е. сброс в 0 при совпадении. Выход должен как то устанавливаться, иначе он всегда будет в 0. С ШИМом я еще не разбирался, там есть как я понял возможность сделать выводы противофазными, но не понял (из своих экспериментов) достижима ли нужная мне частота, получалось все время на порядок ниже. В крайнем случае можно инвертором инвертировать :))
Denis82, Али труднодоступно, в Крым они на прямую не доставляют. СТМ не знакомая зараза в отличии от АВР, еще плюсом АВРки под ногами валяются, несколько сотен 25 тинек есть. Думать и паять всегда приветствуется, но сейчас такой период, что не удобно все это (жилище разрушено строителями), а друг наседает и отказать нельзя, да и задача весьма простая, частота + возможно пульсации.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Генератор из arduino

Сообщение roman.com »

shev1975 писал(а):это "Clear OC0B on compare match", т.е. сброс в 0 при совпадении. Выход должен как то устанавливаться, иначе он всегда будет в 0.
если цитируете... то цитируйте до конца))

-"сброс при совпадении и установка при обновлении".
можно в противофазе.
-"установка при совпадении и сброс при обновлении".
Screenshot_1.jpg
(25.79 КБ) 55 скачиваний
:tea:

p.s.
странные у нас крымчане... никогда не читают до конца))

" Крым наш временно навсегда ! "

(нужное подчеркнуть)
:)))
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Генератор из arduino

Сообщение Jack_A »

По простоте своей - не догоняю: а для пищалки МК обязателен? На однои инверторе ЛА3 совсем не кошерно? Там противофаза сама по себе уже есть.
СпойлерВот для выключателя с задержкой в туалет в коридор думаю: мож всамделе МК вкорячить? Раз такая мода пошла... :shock:
Изображение
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Генератор из arduino

Сообщение roman.com »

для пищалки хватит двух транзисторов.
или даже одного))
Но !
:roll:
Jack_A писал(а):а для пищалки МК обязателен?
МК обязателен.
надо управление с телефона / по интернету.
иначе совсем не кошерно.
:tea:
Аватара пользователя
shev1975
Грызет канифоль
Сообщения: 287
Зарегистрирован: Чт апр 02, 2009 17:46:04
Откуда: Крым

Re: Генератор из arduino

Сообщение shev1975 »

roman.com, Вы ошибаетесь, в режиме СТС нет такого текста. В Режиме FPWM то ли я не разобрался как выставить нужную мне частоту, то ли не получается.
Jack_A, Возможно захочется реализовать еще какие то режимы, а как проще это сделать если не на МК, тем более у меня их несколько сотен валяется.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Генератор из arduino

Сообщение roman.com »

чтобы просто пищало... таймеры не нужны.
достаточно просто включать и выключать любой порт.

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

_1:
PORTC.0=1;            // вкл.
delay_ms(1);
PORTC.0=0;            // выкл.
delay_ms(1);
goto _1;         // > _1
:tea:

зачем режим СТС... это переключение пина при переполнение таймера.
он скучный... там только частоту менять можно.
:sleep:

лучше режим FPWM...
там можно:
-менять частоту (ICR).
-менять скважность (OCR).
и всё независимо.
:)
будут дополнительные вау-эффекты))
:music:
Ответить

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