Например TDA7294

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





Текущее время: Вт апр 23, 2024 10:24:25

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8273 ]     ... , , , 384, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт фев 07, 2017 09:53:20 
Прорезались зубы

Карма: -17
Рейтинг сообщений: -26
Зарегистрирован: Ср дек 02, 2015 15:06:01
Сообщений: 218
Рейтинг сообщения: 0
[/quote]
Была прекрасная программа Алгоритм Билдер.Делали ребята из Тулы.Графический ассемблер.Гораздо удобнее Код Вижена особенно в отладке - всегда понятно что происходит.И писалось по времени немного более чем Си...Но...к сожалению умерла из-за проблем с маркетингом....А жаль...[/quote]

даже не слышал о таком (


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт фев 07, 2017 10:38:42 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Сайт Алгоритм Билдер живой, 7-й год как не обновлялась, может смысла уже обновлять и нету.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт фев 07, 2017 16:00:20 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт янв 22, 2013 16:31:22
Сообщений: 166
Рейтинг сообщения: 0
К сожалению Вы правы.Сайт есть но...обновлений давно нет...Было пару раз упоминание в форумах что команда Громова собирается его реанимировать но...Может они чем другим занялись...

Добавлено after 4 hours 15 minutes 9 seconds:
Собрал по новому проект с несколькими файлами и он даже откомпелировался и в протеусе работает.Один вопрос - в файлах 111.с и 222.с я вставил #define outsw PORTA.2. Насколько правильно в двух файлах определять одну переменную или возможно есть более правильное решение...Файл с новым проектом прилагаю


Вложения:
111_1.RAR [30.4 KiB]
Скачиваний: 191

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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт фев 07, 2017 16:18:57 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
#define, используемый в разных файлах, лучше прописать в .h файле, который #include-ить в обоих


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт фев 07, 2017 21:34:02 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт янв 22, 2013 16:31:22
Сообщений: 166
Рейтинг сообщения: 0
Думаю что вообще надо сделать один заголовочный файл в котором прописать все #define ...
Ещё 2 вопроса...
1.Возможно-ли прописать заголовочный файл поместив в него все глобальные переменные и подключать их в каждом *.c файле через
#include ? Ну чтоб голову не заморачивать где чего подключил.Записал во всех-и пусть компилятор разбирается что ему нужно...
Иль без extern никак ?
2.Можно-ли не писать *.c файлы а все функции разместить только в *.h файлах ?

_________________
С уважением...


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 08, 2017 05:53:22 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
1. Можно. Но без extern никак.
2. Нельзя.
andr_lar писал(а):
Ну чтоб голову не заморачивать где чего подключил
С таким подходом программировать не научишься. Нужно в голове представлять, что должна делать программа, и какой должна быть её структура. А просто пихать всё подряд куда попало, пытаясь отдать это на откуп компилятору - так не делают.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 08, 2017 10:45:14 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 0
ARV писал(а):
так, не? я бы так делал

Спасибо, но никак не хватает времени сесть и разобраться с Вашим кодом. Работы навалилось...

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 08, 2017 11:04:03 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт янв 22, 2013 16:31:22
Сообщений: 166
Рейтинг сообщения: 0
andr_lar писал(а):
Ну чтоб голову не заморачивать где чего подключил
С таким подходом программировать не научишься. Нужно в голове представлять, что должна делать программа, и какой должна быть её структура. А просто пихать всё подряд куда попало, пытаясь отдать это на откуп компилятору - так не делают.[/quote]

Прежде всего благодарю за ответы...Будем осваивать далее...
Позвольте так-же с Вами не согласится...
Во-первых мне уже "крутость" в программировании как-то и неинтересна...Мне уж ближе к 60-и и по работе я руковожу парой таких - же "старпёров" - ремонтников-электронщиков так что для нас микроконтроллеры это более хобби чем необходимость.А не согласится я хотел с тем что считаю что и процесс программирования так-же как и любая профессия идёт к процессу упрощения...Пример тому - увеличение визуальных программ,которые очень отличаются от "классического" строчного программирования.Да,они пока менее совершенны чем "написательные" языки но это процесс времени и не более.Возьмите тот-же Ардуино...При всех недостатках он удобен.Тем более что уже появляются его графические варианты типа FLProg...(кстати российский)...И если-б не большой недостаток в отсутствии средств отладки то он очень даже хорош...Ну конечно не в специфических областях,но специфика это всегда узкий сегмент деятельности...
Поэтому я и от CodeVision хотел-бы упрощения в процессе программирования...Ну или хотя-бы понятного описания и примеров(возможно с картинками) где подробно и обстоятельно были-б обьяснены ньюансы....

P.S. Звиняюсь если отвлёк Ваше время излишней философией... :)

_________________
С уважением...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 08, 2017 12:54:32 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Продолжая ваши философские речи неизбежно приходим к пределу упрощения "пусть делают другие". Это предельно просто: не парить свою голову, пускай другие парятся.
Но ежели вы хотите сами делать - придется пройти тернистый путь от линии "старт", которой является учебник языка Си.
Скачиваете Кернигана и Ричи, читаете, и примерно на 25-й странице начинаете смеяться над своими воросами про файлы и инклюды.
Не начнете с этого - так и будете страдать от сложностей.

P.S. про 25-ю страницу я преувеличил. Извините за философию.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 08, 2017 13:33:04 
Нашел транзистор. Понюхал.

Зарегистрирован: Вт янв 22, 2013 16:31:22
Сообщений: 166
Рейтинг сообщения: 0
Мною перед заданием вопроса были просмотрены : хельп CodeVision,Лебедев (CodeVisionAVR. Пособие для начинающих .)с.250,Лебедев с.471,в интернете по сему вопросу было найдено http://kazus.ru/forums/showthread.php?t=29862
где была попытка сей вопрос прояснить...Вопрос остался для меня не совсем понятным поэтому и был задан в форум в надежде на консультацию специалистов.В форуме мне полностью вопрос был так-же не раскрыт но была попытка некоторых участников прояснить некоторые ньюансы...За что я им благодарен.К сожалению от Вас я подобной помощи не получил.Ваши ответы были просто пустыми строками написаными неизвестно зачем.Поэтому это не вопрос философии...Философствование приемлемо от людей имеющих реальные результаты(в данном случае оказавших помощь) а не стремившихся продемонстрировать своё возвышенное эго...Ваши ответы это не философия а элементарное звездобольство...,звиняюсь за точность определения... :o

_________________
С уважением...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 08, 2017 15:36:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ознакомьтесь с форумом в темах, касающихся "вопросов по Си", WinAVR, AvrStudio и других. Надеюсь, вы сможете найти много полезного и/или интересного. Возможно среди найденного будет и кое-что из сказанного мною. Ну а не найдете - так тому и быть, соглашусь с последним вашим "точным" определением.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт фев 21, 2017 09:17:29 
Встал на лапы

Зарегистрирован: Чт янв 17, 2013 21:25:30
Сообщений: 93
Откуда: Тула
Рейтинг сообщения: 0
Подскажите пожайлуста на счет модуля TM1637 С LED дисплеем. Хочу понять как он управляется. Нашел на него даташит на некоторые вещи непонятны по английски. Есть даже пример функций на Си (в конце то что нужно). ВРодепонятно как проходит инициализация( установка яркости и тд). Но в основном цикле какието buttons .Кнопки, что за кнопки? откуда они? У меня на модуле нету кнопок :)) функция Scankey (сканирование ключей ) мне непонятно как перевести и что за ключи( но во всех диаграммах для программ они используются. ? что это такое?


Вложения:
DOC001110878.pdf [712.75 KiB]
Скачиваний: 191
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс фев 26, 2017 16:33:30 
Нашел транзистор. Понюхал.

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт сен 29, 2009 09:28:51
Сообщений: 175
Откуда: Ульяновск
Рейтинг сообщения: 0
Господа подскажите что не так.

Код:

unsigned char v;
interrupt [PC_INT0] void pin_change_isr(void)
{
v++;
if(v==3)v=0;
delay_ms (50);
}
#define button PINB.3 //Переменная где сидит кнопка
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=In Bit0=Out
DDRB=(0<<DDB5) | (1<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit5=T Bit4=T Bit3=P Bit2=T Bit1=T Bit0=1
PORTB=(0<<PORTB5) | (0<<PORTB4) | (1<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: On
GIMSK=(0<<INT0) | (1<<PCIE);
MCUCR=(0<<ISC01) | (0<<ISC00);
PCMSK=(0<<PCINT5) | (0<<PCINT4) | (1<<PCINT3) | (0<<PCINT2) | (0<<PCINT1) | (0<<PCINT0);
GIFR=(0<<INTF0) | (1<<PCIF);

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIS1) | (0<<ACIS0);
ADCSRB=(0<<ACME);
DIDR0=(0<<AIN0D) | (0<<AIN1D);
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
#asm("sei")
while (1)   
{
if(v==0)
OCR0A=0x19;
{
delay_ms (10);   
}
if(v==1){
        button=0;
        OCR0A=0x3F;
        {
        delay_ms (10);
        }
        };
       
while (v==2){
       button=0;
       OCR0A=0xFF;
       {
       delay_ms (10);
       }
       };
       
};
}


По сути что должно быть на выходе 3 режима (OCR0A=0x19 -> OCR0A=0x3F -> OCR0A=0xFF) . Подается питание на выходе OCR0A=0x19 с этим все ОК. Нажимаем кнопку увеличивает выход до OCR0A=0x3F и тут же OCR0A=0xFF. Еще раз нажимаем получаем OCR0A=0x19. Еще раз нажимаем идет v==0 и т.д по кругу. А по факту OCR0A=0x19 -> (OCR0A=0x3F + OCR0A=0xFF) -> OCR0A=0x3F


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс фев 26, 2017 16:49:49 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1209
Зарегистрирован: Ср фев 23, 2011 12:12:31
Сообщений: 2352
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Зачем это:
button=0;
и это:
delay_ms (10);
и это:
while(v==2)

И где подавление дребезга?

Прерывание по изменению пина здесь как то не к месту. Ибо при дребезге может быть выполнено множество прерываний.
Лучше запустить таймер на невысокой частоте. При прерывании по переполнению/совпадению каждый раз проверять нажата ли кнопка. Если нажата то прибавляем счётчик времени нажатия пока он меньше или равен, например, 10. Как только он достиг например 10, прибавляем вашу переменную V и прибавляем счётчик. На этом он перестаёт расти и ваша переменная поменялась. Как только пин сменился на 1, обнуляем счётчик.

И да, господа в африке.

_________________
Глупый не задает вопросы. Глупый и так все знает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс фев 26, 2017 17:09:24 
Нашел транзистор. Понюхал.

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт сен 29, 2009 09:28:51
Сообщений: 175
Откуда: Ульяновск
Рейтинг сообщения: 0
AndTer писал(а):
Зачем это:
button=0;
и это:
delay_ms (10);
и это:
while(v==2)

И где подавление дребезга?

Прерывание по изменению пина здесь как то не к месту. Ибо при дребезге может быть выполнено множество прерываний.
Лучше запустить таймер на невысокой частоте. При прерывании по переполнению/совпадению каждый раз проверять нажата ли кнопка. Если нажата то прибавляем счётчик времени нажатия пока он меньше или равен, например, 10. Как только он достиг например 10, прибавляем вашу переменную V и прибавляем счётчик. На этом он перестаёт расти и ваша переменная поменялась. Как только пин сменился на 1, обнуляем счётчик.

И да, господа в африке.


Ну наверное button=0 потому #define button PINB.3 //Переменная где сидит кнопка

v - программа v==2 вторая программа.

Код:
unsigned char v;
interrupt [PC_INT0] void pin_change_isr(void)
{
v++;
if(v==3)v=0;
delay_ms (50);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс фев 26, 2017 17:22:19 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1209
Зарегистрирован: Ср фев 23, 2011 12:12:31
Сообщений: 2352
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Не тупим! Вы спросили почему не работает? Я задаю наводящие вопросы)
Хорошо, другими словами:
- Зачем входному регистру присваивать 0?
- Зачем используются задержки?
- Зачем делать цикл для значения v=2, когда для других его нет?

И где устранение дребезга?

И да, за цитирование полное тут банят)

В кодевижне нормальный визард программ, с человеческим описанием настроек переферии, совсем не хочется разбираться в том какие регистры вы забили и как настроили при помощи сдвига <<.

В вашей программе столько ошибок, что проще написать заново) Причём писать то тут 2 минуты от силы.

_________________
Глупый не задает вопросы. Глупый и так все знает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн фев 27, 2017 07:43:11 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
Объявлено прерывание interrupt [PC_INT0] но включается GIMSK=(1<<PCIE); Вы правда рассчитываете что это сработает?
Задержка в прерывании - зло
Переменная v, используемая в прерывании и основном коде, не объявлена как volatile (впрочем, прерывание все равно запрещено так что это неважно).
ФоРмАтИрОвАнИе УжАсНо
Цитата:
В кодевижне нормальный визард программ, с человеческим описанием настроек переферии, совсем не хочется разбираться в том какие регистры вы забили и как настроили при помощи сдвига <<.
Настройка сдвигами гораздо нагляднее чем магическими числами. А комментарии запросто могут не соответствовать коду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн фев 27, 2017 11:31:57 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1209
Зарегистрирован: Ср фев 23, 2011 12:12:31
Сообщений: 2352
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
COKPOWEHEU писал(а):
Вы правда рассчитываете что это сработает?

Сработает! Название темы посмотрите, у него объявлено правильно.

COKPOWEHEU писал(а):
не объявлена как volatile

Компилятор видит что переменная используется в левых выражениях, а значит не должен ничего переоптимизировать.
Конечно надёжней использовать volatile но тут оно роли не сыграет.

COKPOWEHEU писал(а):
Настройка сдвигами гораздо нагляднее чем магическими числами. А комментарии запросто могут не соответствовать коду.

Если не знать все регистры наизусть то толку от такого объявления? Всё равно надо будет смотреть что за регистр и что за бит.
Всё же периферия настраивается чаще один раз, а значит комментарии соответствуют. Если надо что то поменять, не надо создавать новый файл, визард имеет превью из которого можно скопировать перенастроенные куски в уже имеющийся код. Это уже к вопросу откуда растут руки.

Можно и вовсе обойтись без прерываний:
Код:
#include <tiny13.h>

void main(void)
{

unsigned char v=0;
unsigned char c=0;

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State5=T State4=T State3=P State2=T State1=T State0=0
PORTB=0x08;
DDRB=0x01;

// Timer/Counter 0 initialization
// Timer/Counter 0 initialization
TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00);
TCNT0=0x00;
OCR0A=0x19;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

while (1)
      {

     if(!PINB.3 && !c)         // Если кнопка нажата и до этого мы на текущее нажатие не отреагировали
         {
           delay_ms(10);     // Задержка против дребезга и ложных срабатываний, можно/нужно подобрать
           if(!PINB.3)           // Если кнопка осталась нажата, значит она уж точно нажата
             {
               c=1;               // ставим с=1 чтобы не заходить сюда до следующего нажатия кнопки
               v=v+1;
               if(v==3){v=0;};
               if(v==0){OCR0A=0x19;};
               if(v==1){OCR0A=0x3F;};
               if(v==2){OCR0A=0xFF;};   
             }; 
          };
     if(PINB.3){c=0;};      // если кнопку отпустили можем ждать следующее нажатие
   
      };
}


Кучку условий можно заменить на case что ускорит обработку, но нафиг оно надо? Если написано за 2 минуты и светодиод меняет яркость.

Вообще не люблю использовать delay и для опроса сколько угодно кнопок вовсе применяю свободный таймер. Но тут непонятно что нужно вопрошающему, если тупо как есть то это самый простой вариант. Само собой решений данной задачи множество, на прерываниях красивее конечно)

_________________
Глупый не задает вопросы. Глупый и так все знает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн фев 27, 2017 20:08:47 
Нашел транзистор. Понюхал.

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт сен 29, 2009 09:28:51
Сообщений: 175
Откуда: Ульяновск
Рейтинг сообщения: 0
Всем СПАСИБО кто откликнулся отдельное спасибо за решение AndTer без прерывания.

Видимо у тиньки есть баг, помнит состояние регистра поэтому хаотичное переключение программ. Если на инициализации делать OCR0A=0x00; то if(v==0){OCR0A=0x00;}; надо таким же делать. В этом случае все четко происходит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн фев 27, 2017 20:22:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
a.garkin писал(а):
Видимо у тиньки есть баг
напишите в Atmel (или теперь уже Микрочип?) :)))

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

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

Мой уютный бложик... заходите!


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

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


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

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


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

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


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