Например TDA7294

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





Текущее время: Чт апр 25, 2024 05:16:06

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


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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: ATtiny2313+енкодер
СообщениеДобавлено: Вс май 03, 2020 15:03:36 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Доброго времени всем! Пока выходные, решил штудировать книги по МК на С. Захотелось с енкодером поиграться, схему собрал, программу по книгам написал, но не работает.
Подскажите, пожалуйста, где ошибка?
Спойлер
Код:
#define  F_CPU 8000000UL


#include <avr/io.h>
#include <util/delay.h>
int NewState,OldState,Vol,upState,downState;

#include <avr/interrupt.h>

ISR(TIMER1_COMPA_vect)
{
    NewState=PIND & 0b0000011;
    if(NewState!=OldState)
    {
        switch(OldState)
        {
            case 2:
            {
                if(NewState == 3) upState++;
                if(NewState == 0) downState++;
                break;
            }
           
            case 0:
            {
                if(NewState == 2) upState++;
                if(NewState == 1) downState++;
                break;
            }
            case 1:
            {
                if(NewState == 0) upState++;
                if(NewState == 3) downState++;
                break;
            }
            case 3:
            {
                if(NewState == 1) upState++;
                if(NewState == 2) downState++;
                break;
            }
        }
        OldState=NewState;
    }
    TCNT1H=0x00;
    TCNT1L=0x00;
}

int main(void)
{
   
   
    PORTD=0x03;
    DDRD=0x00;
    DDRB=0x01;
    PORTB=0x00;
   
    TCCR1A=0x00;
    TCCR1B=0x0A;
   
    OCR1AH=0x03;
    OCR1AL=0xE8;
   
   
    // Timer(s)/Counter(s) Interrupt(s) initialization
   
    asm("sei");
    // Global enable interrupts
   
   
    while (1)
    {
        if (upState >= 4)
        {
           PORTB|=0x01;
        }
        if (downState >= 4)
        {
           PORTB&=~0x01;
        }
       
       
    };
}

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny2313+енкодер
СообщениеДобавлено: Вс май 03, 2020 16:06:26 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
подозреваю, что таймер настроен неправильно... и/или его прерывания.
кстати для генерации прерываний и 8битного таймера хватит...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny2313+енкодер
СообщениеДобавлено: Вс май 03, 2020 17:06:00 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Цитата:
// Timer(s)/Counter(s) Interrupt(s) initialization

И? Где тут код? Где-то тут вы TIMSK должны были установить, чтобы включить прерывание.

Добавлено after 7 minutes 37 seconds:
TIMSK = 1 << OCIE1A;

И еще - переменные, которые меняются в прерывании, должны быть объявлены как volatile. Иначе компилятор просто выкинет их при оптимизации, т.к. не в курсе, что они там могут поменяться. С его точки зрения код в прерывание не заходит сам, а значит меняться они не будут.

Добавлено after 9 minutes 10 seconds:
PS: А еще откройте режим таймера CTC. TCCR1A = 1<<WGM12; и не надо сбрасывать TCNT1 в прерывании. МК сам будет сбрасывать каждый раз по достижению OCR1A.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: ATtiny2313+енкодер
СообщениеДобавлено: Пн май 04, 2020 16:12:19 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 967
Рейтинг сообщения: 0
Если вы только осваиваетесь, сделайте без прерываний сначала. Просто вставьте 1-мс делай в основном цикле в котором будет крутиться ваш код. Обкатайте, а потом уже переносите в прерывание.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ATtiny2313+енкодер
СообщениеДобавлено: Вт май 05, 2020 11:22:40 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Всем спасибо огромное, сейчас в отъезде по работе. Какивернусь- сразу же отпишусь о результатах.

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


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

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

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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


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

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


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