Например TDA7294

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

Текущее время: Ср июл 30, 2025 23:46:47

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 83, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт июл 08, 2010 12:27:27 
Сверлит текстолит когтями
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Чт окт 15, 2009 14:16:18
Сообщений: 1116
Откуда: Екб
Рейтинг сообщения: 0
Можно, почему бы нет...
Делаем массив указателей на функции:

Код:
void fun0()
{...}

void fun1()
{...}

void fun2()
{...}

void main(void)
{
void (*OLOLO[6])();
OLOLO[0]=fun0;
OLOLO[1]=fun1;
OLOLO[2]=fun2;


Вызываем fun1:
Код:
OLOLO[1]();


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт июл 08, 2010 12:39:24 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн окт 12, 2009 18:16:50
Сообщений: 50
Откуда: Саранск
Рейтинг сообщения: 0
слышал, что можно использовать опорное напряжение 2,56 В с вывода aref, но там 0. ацп не использую, каким регистром включить?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт июл 08, 2010 12:48:09 
Сверлит текстолит когтями
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Чт окт 15, 2009 14:16:18
Сообщений: 1116
Откуда: Екб
Рейтинг сообщения: 0
Включается битами REFS* регистра ADMUX. Использовать, конечно, можно, но лучше - не надо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт июл 08, 2010 13:00:46 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб сен 06, 2008 12:56:13
Сообщений: 326
Рейтинг сообщения: 0
Dj_Alex писал(а):
слышал, что можно использовать опорное напряжение 2,56 В с вывода aref, но там 0. ацп не использую, каким регистром включить?
ADMUX|=(1<<REFS1)|(1<<REFS0);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 11:49:38 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн окт 12, 2009 18:16:50
Сообщений: 50
Откуда: Саранск
Рейтинг сообщения: 0
пробовал так
ADMUX=0b11000000;
но все равно на выводе 0, кондер вешал, толку нет


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 12:55:27 
Сверлит текстолит когтями
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Чт окт 15, 2009 14:16:18
Сообщений: 1116
Откуда: Екб
Рейтинг сообщения: 0
А вы на AVCC не забыли питание подать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 13:04:03 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн окт 12, 2009 18:16:50
Сообщений: 50
Откуда: Саранск
Рейтинг сообщения: 0
конешно не забыл, контроллер пашет, прост хотел с ИОНа напругу на контраст ЖК подать, т.к. питание плавает и контраст вместе с ним.
кстати нагрузочная способность у ИОНа какая?
ps мерил без нагрузки


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 13:13:48 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб сен 06, 2008 12:56:13
Сообщений: 326
Рейтинг сообщения: 0
Dj_Alex писал(а):
пробовал так
ADMUX=0b11000000;
но все равно на выводе 0, кондер вешал, толку нет
Так вы хотели использовать внутренний ИОН 2,56 В, и это значение разрядов REFSx ADMUX для такого случая. При этом на выводах AVCC и AREF не должно быть внешних напряжений. А если хотите с вывода AVCC, то REFS1=0; REFS0=1;
Да, есть еще один момент. По датшиту: "Работа АЦП разрешается путем установки бита ADEN (разрешение АЦП) в ADCSRA. Выбор опорного источника и канала преобразования невозможно выполнить до установки ADEN".
Затем только выбор источника. Преобразование в АЦП можете не запускать, если оно не нужно, т. е. бит ADSC=0; Результатом разрешения АЦП, будет немного большее потребление тока МК.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 16:38:16 
Сверлит текстолит когтями
Аватар пользователя

Карма: 1
Рейтинг сообщений: 4
Зарегистрирован: Чт окт 15, 2009 14:16:18
Сообщений: 1116
Откуда: Екб
Рейтинг сообщения: 0
ValBag писал(а):
При этом на выводах AVCC и AREF не должно быть внешних напряжений.

На AVCC всегда должно быть напряжение питания:
Даташит писал(а):
The ADC has a separate analog supply voltage pin, AVCC.

И раз уж обратились к ДШ, продолжаем.
2 Dj_Alex,
Даташит писал(а):
In either case, the external AREF pin is directly connected to the ADC, and the reference voltage can be made more immune to noise by connecting a capacitor between the AREF pin and ground. VREF can also be measured at the AREF pin with a high impedant voltmeter. Note that VREF is a high impedant source, and only a capacitive load should be connected in a system.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 18:22:11 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб сен 06, 2008 12:56:13
Сообщений: 326
Рейтинг сообщения: 0
AI_Disable писал(а):
ValBag писал(а):
При этом на выводах AVCC и AREF не должно быть внешних напряжений.
На AVCC всегда должно быть напряжение питания:
Согласен - в отношении AVCC дал "маху". Оно должно быть, если АЦП используется или, как в данном конкретном случае, питание служит только для получения напряжения опорного источника, которое Dj_Alex собирается использовать по другому назначению.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 19:01:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ValBag писал(а):
Согласен - в отношении AVCC дал "маху". Оно должно быть, если АЦП используется или, как в данном конкретном случае, питание служит только для получения напряжения опорного источника, которое Dj_Alex собирается использовать по другому назначению.
никакого ИЛИ - AVCC должно подаваться ВСЕГДА! во многих микроконтроллерах от этого вывода запитаны выходные буферы портов ввода-вывода, так что без него не будут работать даже цифровые линии.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт июл 09, 2010 21:05:21 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб сен 06, 2008 12:56:13
Сообщений: 326
Рейтинг сообщения: 0
ARV писал(а):
никакого ИЛИ - AVCC должно подаваться ВСЕГДА! во многих микроконтроллерах от этого вывода запитаны выходные буферы портов ввода-вывода, так что без него не будут работать даже цифровые линии.
Не все, - отдельные линии портов, питающиеся от AVCC и не использующиеся в конкретном случае. ...Встречается практика такого использования.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 15:56:09 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Написал офигительно простую программку:
Код:
//Chip type           : ATtiny13
// CodeWizardAVR V1.25.9 Professional
#include <tiny13.h>
#include <delay.h>

interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTB.2 = 1;
delay_us(100); // имитируем операторы в обработчике
PORTB.2 = 0;
}

void main(void)
{
 
DDRB=0x1E; // PB0 на ввод, PB1-PB4 на вывод

MCUCR=0x03; // прерывание по нарастающему фронту
GIMSK=0x40; // разрешаем INT0

#asm("sei")

while (1)
{
//PORTB.1 = PINB.0; // повторяем на PB1 то, что на PB0 (он же INT0)
}
}

На вход INT0 подаю импульсы от внешнего генератора - меандр частотой 100 - 200 Гц. В обработчике прерывания на выходе PB2 формируется импульс, совпадающий с передним фронтом импульса на входе PB0 (он же INT0).
Если в теле цикла while (1) нет ничего, т.е. строка PORTB.1 = PINB.0 закомментирована, то нифига не работает. Т.е. на выходе PB2 ничего нет - строгий 0.
Первая мысль - надо пить поменьше валерьянки - простые вещи делать разучился. А потом решил в основном цикле повторить на PB1 то, что на входе PB0. И произошло чудо, прерывания заработали!
Что это за нах? Кто-нибудь встречался с подобным?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 19:14:47 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
А по подробнее можно? Что это за мастер такой? И как лечить?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 20:01:55 
Модератор
Аватар пользователя

Карма: 13
Рейтинг сообщений: 14
Зарегистрирован: Вс июн 01, 2008 00:17:35
Сообщений: 4673
Откуда: Я всего лишь плод вашего воображения...
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Хм, а вы не могли бы соответствующий ассемблерный код выслать? Подозреваю, что там что-то не то накручено в коде цикла.

_________________
Знание - сила!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 20:52:39 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Вот ассемблерные файлы, которые родил кодевизион. Если бы я изучил этот дурацкий ассемблер, то сам бы разобрался :)


Вложения:
работает.asm [15.78 KiB]
Скачиваний: 373
НЕработает.asm [15.7 KiB]
Скачиваний: 290
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 21:51:32 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб сен 06, 2008 12:56:13
Сообщений: 326
Рейтинг сообщения: 0
Барсик, вероятно ошибка в компиляторе. Он генерирует код, предполагая, что INT0 на PB0. У меня 2.04.4а, получается то же самое. Но, дело в том, что INT0 на PB1, а не на PB0. Если завести сигнал на "нужное" место - то все в порядке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 21:51:52 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Как Вы меня напугали... Сказали бы сразу, что имели в виду "CodeVizardAVR". Я как раз в нём код и генерил. Лишнее выкинул. Остальное 10 раз перепроверил по даташиту...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 22:00:39 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб сен 06, 2008 12:56:13
Сообщений: 326
Рейтинг сообщения: 0
Барсик писал(а):
... Сказали бы сразу, что имели в виду "CodeVizardAVR".
Неудачно выразился, конечно он. ...А что, не помогает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 11, 2010 22:02:02 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
ValBag писал(а):
...Но, дело в том, что INT0 на PB1, а не на PB0. Если завести сигнал на "нужное" место - то все в порядке.
Хуясе :shock: :shock: :shock: :shock: Я уже все седые волосы из собственной задницы выдрал! Я же по даташиту смотрел. Там английским по белому написано, что PCINT0 это нога номер 5, она же PB0 !!! Это же первое, что стал проверять! Правильно ли подаю сигнал. Из-за этого и родилась эта идиотская идея повторить на PB1 то, что подаётся на PB0.
Всё... пойду приму 300 капель валерьянки. Надо стресс снять...

Так... После снятия стресса подал сигнал на ногу номер 6 (где PB1) И всё заработало. ValBag, я навеки Ваш должник. Вы спасли меня от дурдома. Я уже подумывал вызывать санитаров - думал, что сошёл с ума от жары...

Т.е. дело не в компиляторе, а в даташите! :shock: :shock: :shock:

Так... Оказалось, что я сам дурак. В даташите всё правильно. Около 6 ноги английским по белому написано: PB1 (MISO/AIN1/OC0B/INT0/PCINT2)
Блин, ну какое коварство !!!


Последний раз редактировалось Барсик Вс июл 11, 2010 22:18:56, всего редактировалось 1 раз.

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

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


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

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


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

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


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