Например TDA7294

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

Текущее время: Ср июл 30, 2025 16:58:20

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8295 ]    , , 3, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 20, 2007 18:24:48 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
И ещё вопрос. Чтоб создать обработчик прерывания в CodeVision нужно:

interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
PORTB|=1<<PORTB.0;
}

а вот где взять список правильно написанных вторых частей строки(выделенно) а то мне компилятор выдал interrupt vector exceeds allowable range

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 20, 2007 19:03:29 
Модератор
Аватар пользователя

Карма: 27
Рейтинг сообщений: 58
Зарегистрирован: Пн апр 03, 2006 11:43:25
Сообщений: 4517
Откуда: Санкт - Петербург
Рейтинг сообщения: 0
Медали: 3
Получил миской по аватаре (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Да вроде как CodeWizard обычно их сам правильно пишет... :wink:

_________________
Оптимизм х (Опыт + Знания) = const


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 20, 2007 19:43:40 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Negor писал(а):
И ещё вопрос. Чтоб создать обработчик прерывания в CodeVision нужно:

interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
PORTB|=1<<PORTB.0;
}

а вот где взять список правильно написанных вторых частей строки(выделенно) а то мне компилятор выдал interrupt vector exceeds allowable range


Вы б прочитали ТАКИ курс.

Это обычное название функции - может делать его любым допустимым в Си.

А вот это - TIM0_COMPA - важно писать правильно !

Это названия прерываний по таблице в даташите.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 20, 2007 19:45:21 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Aheir писал(а):
Да вроде как CodeWizard обычно их сам правильно пишет... :wink:


Мастер CVAVR обычно все пишет правильно.

Я еще ни разу не видел где либо сообщения что он
что-то не верно сделал - точно по-заказу "лепит".

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 21, 2007 05:08:47 
Опытный кот

Зарегистрирован: Пт фев 02, 2007 10:19:58
Сообщений: 764
Откуда: Железногорск
Рейтинг сообщения: 0
Negor писал(а):
Имхо уж очень легко ты разкидываешся таймерами... я понимаю, если бы их было штук восемь... а так два таймера(я изучаю тини2313) и, как правильно заметил ARV один просто будет молотить и энергия расходуется в никуда...

эээ. ну не обязательно на таймер вешать одну задачу. Если не хватает таймеров, можно попробовать их так оптимально настроить, чтобы каждая из задач могла использовать таймер для своих целей.
на счёт молотить. ИМХО думаю молотить таймером например 10 раз в сек ничем не хуже чем в бесконечном цикле периодически вызывать процедуру опроса портов с замиранием в delay. тут может получиться гораздо чаще сем 10 раз в секунду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 21, 2007 20:30:42 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Народ, выручайте. В программе два программных ШИМа(аппаратные не стал делать из-за того что мне нужны конкретные выводы МК). Запускаю в отладчике, и получаются что программа работает только в прерываниях(основной "бесконечный цикл выполняется только при старте....") прилагаю архив проэкта в CodeVision и Сишный листинг. Симулирую в AvrStudio4


Вложения:
Комментарий к файлу: Сишный листинг
main.c [1 KiB]
Скачиваний: 1232
Комментарий к файлу: Весь проэкт в CodeVision
DoubleColorLight.zip [23.8 KiB]
Скачиваний: 749

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 26, 2007 17:01:41 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Кажется понял в чём проблема...вроде как пока выполняется обработчик прерывания по переполнению, таймер успевает заново переполнится и флаг перехода на обработчик переполнения устанавливается... вот только как сделать чтоб были волки целы и овцы сыты?(чтоб переполнение по таймеру, но таймер во время обработуи прерывания не считал?)

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 07:03:46 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Попробую перейти на ICC

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 27, 2007 11:34:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Negor писал(а):
Попробую перейти на ICC

Negor, ты хоть на коноплю перейди - проблема сама по себе не пропадет. Надо думать, разбираться.

Таймер считает, пока его не остановишь указанием 000 в качестве номера коэффициента предделителя тактовой частоты (а уж в какой регистр - это ты сам вспоминай :) ) Если прерывания возникают слишком часто, что обработчик не успевает завершиться - думай: скорее всего ты либо неверно поставил себе задачу (и соответственно неверное решение получил), либо чего-то не учел. Может быть, ты слишком высокую частоту ШИМ решил делать, не соответственно своим задачам. Например, для получения приличного качества речи при помощи ШИМ надо делать ее на частоте 8000 Гц, а для регулирования яркости светодиода - достаточно и 100 Гц. Вот и прикинь.

Но даже при 8000 Гц обработчик МК должен уж каким-то супергигантским быть, чтобы таймер успевал переполняться - тактовая частота МК все же минимум в 100 раз выше (а то и в 1000), что соответствует примерно 80 командам на один "тик" таймера (а для переполнения этих тиков требуется далеко не один, как я понимаю).

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 28, 2007 12:36:16 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Как остановить таймер, я знаю, и придумал примерно такую штуку - при входе в обработчик прерывания останавливать таймер, а вконце обработчика запускать...

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 14, 2007 18:48:23 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Помогите пожалуста разобратся с программкой... Стянул с AVRFreaks.net вроде как калькулятор для таймеров... но что то у мну ничего не получается(нужно переполнение каждую секунду)


Вложения:
Калькулятор значений таймеров.zip [21.35 KiB]
Скачиваний: 1009

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 14, 2007 20:03:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Не пора ли бросить надеяться на чужие подсказки, пусть даже в виде таких прекрасных программ как CodeVision или вышеупомянутый калькулятор таймеров, Negor? Может, надо все-таки заняться мозговой деятельностью - таймеры рассчитываются вполне доступно для тех, кто выучил таблицу умножения и умеет конвертировать десятичные числа в шестнадцатиричные. Тем более, если освоен калькулятор Windows :)

как все-таки сильно желание не своим умом дойти до решения, а поскорее на чужих решениях чего-то сварганить :(

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 17:38:29 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
ТОв.tych, зачем в начале прерывания останавливать таймер, записывать в него значение а потом запускать? Разве нельзя просто в конце прерывания записать нужное значение в рег. таймера как сделал я?
Тов.ARV, не подумайте что я прям так сразу обратился к калькулятору частот... Смысл расчёта я понял, калькулятор Windows в инженерном режиме освоен и всё вроде должно было бы получится... но необходимой задержки я так и не получил... Поэтому попытался обратится к стороннему софту (больше из-за неуверенности в правильности рассуждений). Конечно я бы мог взять прошивку от других часов, и разобратся в ней (уж чего чего а часов на АВРах наделали достаточно) но... хочу свою прошивку под свою схему и чтоб работала она так, как придумал я, поэтому и вылазят всякие проблемы...

Вобщем вводная:
МК ATTiny2313 работает от внутр. RC-генератора.
Fuse выставлены на 4 МГц (В сост. лог "1" наход. CKSEL1).
Я расскажу как я рассуждал.
Итак частота МК 4 Мгц=4000000 тактов в сек.
Без пределителя один счёт 16 разр. таймера за
=> 1/4000000=0,00000025 сек.
при делителе 256 один счёт таймера
=> 0,00000025*256=0,000064 в сек.
значит счётов для переполнения в одну сек.
=> 1/0,000064=15625.
значит для переполнения в одну секунду необходимо занести в счётчик таймера
=>65536-15625 = 49111 <=> 0xC2F7 т.е. так

Код:
 
TCNT1H2;
TCNT1L=F7;


и затем запустить таймер установив соотвю пределитель:

Код:
 
TCCR1B=(1<<CS12);


также при каждом переполнении необходимо обновлять значение ЕСТЕ1ю

вот мой "зародыш" часов...
Здесь вывод на два семисегм. индикатора секунд. Если бы у меня всё получилось, я бы помощи не просил. Конечно, я мог пропустить что-то другое...

Код:
#include<tiny2313>
#include<delay>
unsigned char i=0,j=0;
unsigned char Digit[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};
unsigned char FrstState,ScndState,RealState,Flag;
unsigned char ScndH=0xC2,ScndL=0xF7;

void KeyState(void)
{
       
        FrstState=~PIND;                         
        ScndState=FrstState & ~PIND;             
        RealState=(ScndState) & ~(Flag);       
        Flag=ScndState;                           
}

void OutFrst(unsigned char Digit)
{
        PORTD|=0x03;
        PORTB=Digit;
        PORTD&=0x7e;       
}

void OutScnd(unsigned char Digit)
{
        PORTD|=0x03;               
        PORTB=Digit;
        PORTD&=0x7d;
}

interrupt [TIM0_OVF] void timer0_ovf_isr (void)
{
        OutFrst(Digit[i]);
        delay_us(25);
        OutScnd(Digit[j]);       
}
 
interrupt [TIM1_OVF] void timer1_ovf_isr (void)
{
        i++;
        if (i>9)
        {
                i=0;
                j++;
        };
        if (j>5) j=0;
        TCNT1H=ScndH;
        TCNT1L=ScndL;       
}

void main(void)
{
        TCNT1H=ScndH;
        TCNT1L=ScndL;
        DDRB=0xff;
        DDRD=0x03;
        PORTD=0x7f;
        #asm("SEI");
        TIMSK=(1<<TOIE0)|(1<<TOIE1);
        TCCR0B=(1<<CS00);
        TCCR1B=(1<<CS12>9)
                {
                        i=0;
                        j++;
                };
                if (j>9) j=0;
                KeyState();
        }
}


На кнопки внимания можно не обращать... С таким кодом циферки меняются оч. долго... секунды 3-4...

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 18:05:25 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Negor писал(а):
ТОв.tych, зачем в начале прерывания останавливать таймер, записывать в него значение а потом запускать?

Разве нельзя просто в конце прерывания записать нужное значение в рег. таймера как сделал я?


Можно конечно.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 18:09:26 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Negor писал(а):
С таким кодом циферки меняются оч. долго... секунды 3-4...


Прверьте на какой частоте работает МК.

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

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 18:36:03 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Цитата:
Обновлять число в таймере нужно в начале обработчика прерывания.

Пробовал... не помогает...

Цитата:
Прверьте на какой частоте работает МК.

Из приборов есть только авомметр...

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 18:51:04 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
а звукового входа нет в ПК ??? :lol: :lol:

Компьютер со звуковой платой - это 2х канальный нч осциллограф.

http://autodevice.ru/oscill.htm

программы - любые звуковые редакторы а лучше специальные - спектралаб, вэйвлаб.

Скачать можно в низу в библиотеке в кратком курсе.

========

ИЛИ сделайте прошивку включающую на 20 сек светодиод да измерьте реальное время.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Последний раз редактировалось tych Пн июл 16, 2007 18:57:26, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 18:52:11 
Э...
Аватар пользователя

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Ср апр 04, 2007 08:39:14
Сообщений: 2792
Откуда: Москва
Рейтинг сообщения: 0
Negor писал(а):
Цитата:
Обновлять число в таймере нужно в начале обработчика прерывания.

Пробовал... не помогает...


Это для повышения точности счета промежутков между переполнениями.

_________________
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 19:39:24 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср мар 07, 2007 22:58:02
Сообщений: 586
Откуда: Черкассы, Украина
Рейтинг сообщения: 0
Думаю что с частотой всё ок, т.к. фузы не трогал... но проверю... да, мои расчёты верны надо полагать?

_________________
There is only 10 kind of people: those who understands binary code and those who dont!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 16, 2007 22:44:30 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Помнится, были темы про частоту тини2313, с которой они с завода выходят... так вот, где гарантия, что у "не менявшихся" фузов состояние как раз на 4 МГц? судя по тому, что цифры меняются редко (раз в 3-4 секунды) очень может быть, что частота как раз 1 МГц... tych дело говорит - напиши программку мигания светодиода (в которой будешь на 100% уверен) и убедись в правильности расчетной частоты.

Расчеты таймера вроде верны...

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

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


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

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


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

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


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

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


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