Например TDA7294

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





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

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


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



Начать новую тему Ответить на тему  [ Сообщений: 31 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср авг 02, 2017 14:55:30 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
1. После изменением номера канала, необходимо выдерживать паузу.
2. По программе. У Вас имеются совершенно одинаковые куски кода. Зачем их плодить в такую огромную нечитаемую простыню, вместо создания одной функции и её вызова ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср авг 02, 2017 15:01:55 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
задержка имеется в 20 мкс
вот как выглядит для каждого канала

ADCON0 = 0b00000000; // выбор канала
__delay_us(20);
ADRESH = 0;
ADRESL = 0;
ADCON0bits.ADON = 1;
__delay_us(20);
ADCON0bits.GO = 1;
while (ADCON0bits.GO_nDONE)
{continue;}
ADC = calc_v();

if (ADC >= 4700)
{
countChanel++;
}

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср авг 02, 2017 15:07:05 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
УАРТ можно задействовать, если он не занят, выводить в комп в терминальную программу.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср авг 02, 2017 15:32:42 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14052
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У этих ПИКов обслуживание прерываний весьма специфичное (в отличии от стандартной "среднемладшей" серии).
В обязательном порядке помимо стека задействуются "теневые хранилки".
Так что прежде, чем прерываниями воспользоваться внимательно даташит перечитать надо и помозговать над возможными "наложениями"
8)


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср авг 02, 2017 15:39:28 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21786
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Теневые регистры используются в обязательном порядке только при СОХРАНЕНИИ контекста. А вот при восстановлении совсем нет. Совсем как в 18-х.
В зависимости от параметра команды retfie контекст будет или не будет восстановлен из теневых регистров. И тем обеспечена возможность вложенных прерываний.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср авг 02, 2017 16:29:00 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DarkWolf писал(а):
задержка имеется в 20 мкс
Вы уверены, что этого достаточно ? Попробуйте поставить побольше. Для эксперимента, можно и миллисекунду воткнуть.

DarkWolf писал(а):
просто срочно надо рабочий код, а не красивый.. красоту позже наведу
Красота тут не причём. Выведя код в функцию, Вы получаете быстрое изменение кода для всех каналов, меняя код только в одном месте. Разве это не быстрее ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Чт авг 03, 2017 10:05:53 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
переписал код в следующем виде

функция чтения ацп

Код:
unsigned int calc_v(void)
{
    unsigned int result_adc;
    unsigned long result_v;

    result_adc = (ADRESH | (ADRESL << 2));
    result_v = (unsigned long)Vdd_mV * result_adc;
    return (result_v / 1024);
}


функция с выбором каналов

Код:
unsigned char  read_adc( unsigned char ch)
{
    unsigned int ADC = 0;
   
    switch (ch)                                     
         {case 0:ADCON0=0b00000000; // Канал 0
                 break;
          case 1:ADCON0=0b00000100; // Канал 1
              break;
          case 2:ADCON0=0b00001000; // Канал 1
              break;
          case 3:ADCON0=0b00001100; // Канал 1
              break;
          case 4:ADCON0=0b00010000; // Канал 1
              break;
          case 5:ADCON0=0b00010100; // Канал 1
              break;
          case 6:ADCON0=0b00011000; // Канал 1
              break;
          case 7:ADCON0=0b00011100; // Канал 1
              break;
          }
  __delay_ms(1);//задержка в 1 мс
    // Обнуляем регистры
    ADRESH = 0;
    ADRESL = 0;
    // Разрешаем АЦП
    ADCON0bits.ADON = 1;
    __delay_us(20);
    // Запускаем измерение
    ADCON0bits.GO = 1;
    while (ADCON0bits.GO);
    {
        ADC = calc_v();
    }
    if (ADC >= 4700)
    {
        return 1;
    }
    else
        return 0; 
 } 


в основной функции проверяю
Код:
count = read_adc(0) + read_adc(1) + read_adc(2) + read_adc(3) + read_adc(4) + read_adc(5) + read_adc(6)+read_adc(7);
   
    if (count == 2)
    {
     PORTA = 0x20; // Порт A5 устанавливаем 1.
     mydelay_ms(87);
    PORTA = 0; // Порт A5 устанавливаем 1.
    mydelay_ms(25);
     PORTA = 0x20; // Порт A5 устанавливаем 1.
    }
    else
    {
        PORTA = 0x20; // Порт A5 устанавливаем 1.
    }


сейчас у меня два канала с напряжением 4.75 вольта. Но программа почему то не работает.
Прерывания не использую. Из отладочных средств только вольтметр и осцилограф. Может кто в протеусе проверить работоспособность кода?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Чт авг 03, 2017 10:36:42 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
1.
Цитата:
Код:
    while (ADCON0bits.GO);
    {
        ADC = calc_v();
    }
Что то тут не то ... Вам не кажется ? :roll:
Зачем, пока идёт преобразование, постоянно читать его результат ? Его же (результата) пока ещё нет, он появится только после преобразования.

2. Для чего Вы преобразовываете в милливольты ? Пороги известны, а значит и значение "попугаев" тоже известны. Почему бы с ними и не сравнивать ? Вам же не на экран значения выводить. Только лишние преобразования, которые только увеличивают вероятность совершения ошибки.

Цитата:
Может кто в протеусе проверить работоспособность кода?
Почему бы Вам самому его не установить и не погонять свой код ? :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Пт авг 04, 2017 13:49:58 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Всем принявшим участие в помощи, огроменное спасибо. Поставленная задача выполнена. Но не без костылей. Наблюдается следующая особенность поведения АЦП. Если подать напряжение питания на 3 и больше каналов, то в результате код выдает как будто напряжение питания подано на все 8 каналов. Если напряжение питания подать на 2 и меньше каналов то они успешно определяются программой.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Ср апр 10, 2019 17:35:28 
Родился

Зарегистрирован: Сб фев 16, 2019 19:15:40
Сообщений: 5
Рейтинг сообщения: 0
DarkWolf , не вы ли автор светoдиoдных фонaрей на кaмaзe?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC16F1503
СообщениеДобавлено: Чт апр 11, 2019 08:03:09 
Мучитель микросхем
Аватар пользователя

Карма: 45
Рейтинг сообщений: 100
Зарегистрирован: Вс мар 12, 2006 14:53:26
Сообщений: 428
Откуда: Вологда
Рейтинг сообщения: 0
Если Вам нужен только высокий уровень, почему-бы компараторы не использовать?


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

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


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

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


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

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


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