Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

ATMEGA и Линейный индуктосин (линейка)

Непрочитано 30.09.2022, 19:26  
Валерий_64
Прохожий
 
Регистрация: 30.09.2022
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Валерий_64 на пути к лучшему
По умолчанию ATMEGA и Линейный индуктосин (линейка)

Добрый день.

Имеется Линейный индуктосин (линейка), запитывается головка через усилители sin/cos частотой 1 Кгц сдвинутые на 90 градусов,

с линейки считывается и усиливается усилителем. Необходимо измерять и подсчитывать сдвиг фазы выхода с линейки относительно sin или cos .

Кто подскажет как мне организовать все это на микроконтроллере, sin/cos вырабатывает МК., выход буду ловить прерыванием.
Фиксировать переходы через 0 .

Запитку головки сделал, вот код:

#include ‹stdio.h›
#include ‹avr/io.h›
#include ‹util/delay.h›
#include ‹avr/interrupt.h›

char c=0;
ISR (TIMER0_OVF_vect)
{
TCNT0=208;

switch(c) {

case 0: PORTA=0b10;
break;
case 1: PORTA=0b00;
break;
case 2: PORTA=0b01;
break;
case 3: PORTA=0b11;

}
if (c‹3) c++; else c=0;

}

//-------КООРДИНАТА Z -----------

ISR( INT0_vect )
{

}
ISR( INT1_vect )//-------КООРДИНАТА Х -----------
{

}

ISR( INT2_vect )//-------КООРДИНАТА Y -----------
{

}
//-------------------------------------------------------------------------

int main(void)
{
DDRD=0x80;
PORTD=0xff;
DDRB=0x00;
PORTB=0xff;
DDRA=0xff;
GICR |= (1 ‹‹ INT0)|(1 ‹‹ INT1)|(1 ‹‹ INT2); // Разрешаем внешнее прерывание на входе INT0
MCUCR=(1‹‹ISC11) | (0‹‹ISC10) | (1‹‹ISC01) | (0‹‹ISC00);
MCUCSR=(0‹‹ISC2) ;
/***Настраиваем таймер0***/
TCCR0 = 3;
TIMSK |=(1‹‹TOIE0);//|(1‹‹TICIE1)); // Запускаем таймер
TCCR1B = (0‹‹CS12)|(1‹‹CS11)|(0‹‹CS10);//|(0‹‹ICES1)|(0‹‹ICNC1); // настраиваем делитель
TCNT1 = 0 ; // выставляем начальное значение TCNT1
sei(); // выставляем бит общего разрешения прерываний

while (1)
{
}

}

Фото запитка головки.
Вот видео : при движении линейки или головки что происходит.
https://disk.yandex.ru/i/6JdgSKkpyea17Q
Миниатюры:
Нажмите на изображение для увеличения
Название: IMG_20220930_101826.jpg
Просмотров: 0
Размер:	185.8 Кб
ID:	172957   Нажмите на изображение для увеличения
Название: 4823c6.jpg
Просмотров: 0
Размер:	38.2 Кб
ID:	172958  
Реклама:

Последний раз редактировалось Валерий_64; 30.09.2022 в 19:29.
Валерий_64 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли использовать линейный блок питания для зарядки плеера? radiolubitel 512 Аудиотехника 9 11.02.2021 16:13
atmega 32u4 сброс фьюзов tomitch AVR 3 16.08.2019 22:04
Линейный вход в магнитолу m_i_g Аудиотехника 2 02.04.2018 22:51
Линейный вход в автомагнитоле Chrystler Alexis_m Аудиотехника 15 05.07.2013 10:45
Помогите с ATmega 32 (32х) naumovich Микроконтроллеры, АЦП, память и т.д 10 07.10.2008 08:31


Часовой пояс GMT +4, время: 03:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.