Например TDA7294

Форум РадиоКот • Просмотр темы - Програмирование pic на СИ.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс окт 26, 2025 19:12:04

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1367 ]     ... , , , 6, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб фев 12, 2011 12:25:58 
Встал на лапы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн авг 24, 2009 10:41:16
Сообщений: 130
Откуда: SPb
Рейтинг сообщения: 0
ARV, претензия не по делу. У человека ошибка, мне другую тему создавать, чтобы указать ее?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб фев 12, 2011 19:52:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2128
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18417
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
testerplus писал(а):
ARV, претензия не по делу. У человека ошибка, мне другую тему создавать, чтобы указать ее?
претензия не к вам. если у меня болит зуб, нога, голова и насмор, леяат меня 4 разных врача, а не один. если у человека проблема с Си - пусть разбирается с Си не приплетает ПИК. если у него проблема с ПИК-ом - пусть разбирается с ним, и не приплетает Си. по-моему, порядок есть порядок.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб фев 12, 2011 20:10:20 
Встал на лапы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн авг 24, 2009 10:41:16
Сообщений: 130
Откуда: SPb
Рейтинг сообщения: 0
ARV писал(а):
если у меня болит зуб, нога, голова и насморк, лечат меня 4 разных врача, а не один

А если плохой аппетит? Иногда и с одной проблемой придется всех 4х врачей обойти. Чел. не в курсе , в чем проблема, и мог приписать "Программирования pic на Си из-под Widows 7". Нормальное название темы, это же не программный модуль, где следует стремиться к самобытности и самодостаточности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб фев 12, 2011 22:41:40 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 315
Рейтинг сообщения: 0
по сути не ответили
скобок то наставить не проблема
Код:

freq=0;
 for (i=1;i<=100;i++)
{
   TMR1H=0;TMR1L=0;
   T1CON=0b00000111 ;// 00 = 1:1 Prescale value;;; 0 = Oscillator is shut off;;;  1 = Do not synchronize external clock input;;;;
    //1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
   __delay_us(1000);
    T1CON=0b00000110 ;// 0 = disable Timer1(lowers bit)
    freq=(long)TMR1H*256+freq;
   freq=(long)TMR1L +freq;
}
freq=freq*10;  //



какое значение будет иметь переменная freq в конце вышеприведенного участка кода при подаче на вход
RB6/T1OSO/T1CKI/PGC меандра 1000000 Гц с нижним уровнем 0.5 вольт и верхним уровнем 4.5 вольт)))))))))))))))))))))))))))))))
зануды

_________________
ух ты.... показывает


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс фев 13, 2011 09:45:04 
Встал на лапы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн авг 24, 2009 10:41:16
Сообщений: 130
Откуда: SPb
Рейтинг сообщения: 0
12val12 писал(а):
какое значение будет иметь переменная freq в конце вышеприведенного участка кода при подаче на вход RB6/T1OSO/T1CKI/PGC меандра 1000000 Гц

Так соберите и проверьте, в чем пробема?
Точности в 20Гц даже близко не будет (как вы хотите получить точность 20 импульсов, если вы делаете 100 измерений? Да еще таким способом. Прерывания-то хоть отключены?).
1. Измерять надо в одном интервале, а не в 100.
2. Задержку формировать таймером (TMR2 или TMR0), а не вручную.
3. По переполнению TMR1 нужно входить в прерывание и инкрементировать переменную, например, Counter. Тогда по завершению измерения результат будет в трехбайтовой переменной Counter:TMR1H:TMR1L


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс фев 13, 2011 13:18:58 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 315
Рейтинг сообщения: 0
Собран тот вариант что страницей ранее ..точность 400гц на мегегерце ...не хочу писать прерывания и подсчитывать такты на его обработку !
__delay даёт точную задержку... проверено измерением частоты с ноги собственного кварца
но там точность ограничена 16 разрядами
здесь же преполнение таймера исключено до частоты 65 Мгц.
В общем
я не хочу ничео изобретать поэтому просил процедуру частотомера .пусто он хоть все три таймера использует но лишь бы не задействовал другие ноги кроме внешнего входа 16 битного таймера ..получил ответ давайте схему .. но ЗАЧЕМ ВАМ схема???
есть вход T1CKI нужна процедура которая даст в переменную freq (лонг) значение частоты в герцах ..
прошу готовую подпрограмму компиллятор да HI-TECH
вроде нашел но компиллятор ругается на попрограмму обработки прерываний
Код:
char timerH = 0; //кол-во переполнений TMR1
char timerM = 0;
char timerL = 0;
unsigned long summa = 0;
char text [12];
unsigned int incTMR0 = 0; //кол-во переполнений TMR0
void init() {                         //ф-ция инициализации ЖКИ

     Lcd_Custom_Config ( &PORTA,3,2,1,0,&PORTB,0,2,1 );
     Lcd_Custom_Cmd(LCD_CURSOR_OFF);
    }
void interrupt() {                       //обработка прерываний

     if (INTCON.T0IF) {                 //если TMR0 увеличить перем. прерываний
        incTMR0++;
        INTCON.T0IF = 0;
     }
     if (PIR1.TMR1IF) {                //если TMR1 увеличить перем прерываний
        timerH++; PIR1.TMR1IF = 0;
        }
    }
void main() {                 //Начало главной программы
init();
  CMCON=0b00000111;           //выключаем компараторы
  OPTION_REG=0b1000010;      //прескалер перед TMR0 1:8
  TMR1L=0b00000000;          //обнуляем TMR1
  TMR1H=0b00000000;
  TMR0=188;                   //начальное значение TMR0
  TRISA.F0=0;
  TRISA.F1=0;
  TRISA.F2=0;
  TRISA.F3=0;               //Конф-ция порта А 0,1,2,3 - выход
  TRISB.F0=0;
  TRISB.F1=0;               //Конф-ция порта В 0,1,2 - выход
  TRISB.F2=0;
  INTCON=0b11100000;  //разрешить прерыв-я глобальные,от переферии, от TMR0
  T1CON=0b000000111;  //вкл TMR1,источник такт внешний,не синхронизировать
                      // генератор выкл,прескалер 1:1
  PIR1.TMR1IF = 0;  //сбросить флаг прерываний
  PIE1.TMR1IE = 1;  //разрешить прерывания от TMR1

   while(1) {       //цикл

           if (incTMR0 == 489 ) {  //секунда прошла
              INTCON=0b00000000;  //запретить все прерывания
              T1CON.TMR1ON = 0;   //выключить TMR1
              timerM = TMR1H;   //считать регистр TMR1H
              timerL = TMR1L;   //считать регистр TMR1L

              *(((unsigned char*)(&summa))+2)=timerH;
              *(((unsigned char*)(&summa))+1)=timerM;
              *(((unsigned char*)(&summa))+0)=timerL;
             
              LongToStr(summa,text); //переводим число в текст
              Lcd_Custom_Out(1,1,text);//выводим число в 1-ю строку 1-ю позицию
             
              timerH = 0; //обнуляем переменную кол-ва переполнений TMR1
              incTMR0 = 0;  //обнуляем переменную кол-ва переполнений TMR0

              TMR1L=0b00000000;          //обнуляем TMR1
              TMR1H=0b00000000;
             
              TMR0 = 188;  //инициализируем TMR0 начальным значением
              PIR1.TMR1IF = 0;  //сброс флага прерываний TMR1
              INTCON=0b11100000; //разрешаем снова все прерывания
                                 //сброс флага прерываний TMR0
              T1CON.TMR1ON = 1;  //включаем TMR1

              }
          }
}
     

_________________
ух ты.... показывает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс фев 13, 2011 13:24:35 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4587
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
но компиллятор ругается на попрограмму обработки прерываний
Он и будет ругаться. В хайтеке не может быть ф-ии с именем interrupt ! Да и код написан не под хайтек.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс фев 13, 2011 13:49:02 
Встал на лапы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 4
Зарегистрирован: Пн авг 24, 2009 10:41:16
Сообщений: 130
Откуда: SPb
Рейтинг сообщения: 0
12val12 писал(а):
Собран тот вариант что страницей ранее ..точность 400гц на мегегерце

Вряд ли такое устройство можно назвать частотомером, точность 0.05% - никуда не годится. (Ксати, понизьте входную частоту до 10000 и будете приятно удивлены тем, что точность дойдет до единиц процента).

Цитата:
...не хочу писать прерывания и подсчитывать такты на его обработку !

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

65 чего? Я понимаю, что Вы имели ввиду, но Вам здесь неохотно помогают именно из-за постановки вопроса.

Цитата:
я не хочу ничео изобретать поэтому просил процедуру частотомера .пусто он хоть все три таймера использует но лишь бы не задействовал другие ноги кроме внешнего входа 16 битного таймера

Так ее за Вас написать должны? Берите алгоритм и реализуйте самостоятельно:
1. Программируете формирование задержки с помощью аппаратного таймера, который по переполнению в прерывании (или после 10 или после 100 переполнений) остановит измерение.
2. Задержку запускаете одновременно с включением TMR1
3. В прерывании по TMR1 инкрементируйте счетчик переполнений

По завершении задержки останавливайте TMR1. И делайте пересчет F = T/C, где T - время задержки, C - значение трехбайтного счетчика из п.3

Программа, которую Вы привели именно так и работает. Не собирается она потому, что, как и сказал Alex, она не для htpicc (она на mikroC).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс фев 13, 2011 14:26:46 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 315
Рейтинг сообщения: 0
ок попробую слепить из двух одну

_________________
ух ты.... показывает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт мар 08, 2011 22:10:16 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: -5
Зарегистрирован: Пн июн 15, 2009 06:01:38
Сообщений: 897
Откуда: USSR
Рейтинг сообщения: 0
Доброго времени суток!
вопрос: как запустить логической "1" программу?
сначала:

CMCON = 0x07; // отключение компараторов (биты RA0, RA1, RA2 будут работать как порты)
TRISA = 0b00000000; // направление работы ножек порта А (все - на выход)
TRISB = 0b11111111; // направление работы ножек порта В (все - на вход)
PORTA = 0; // очищаем порт А (устанавливаем логический "О", или НЛУ)
PORTB = 0; // очищаем порт Б (устанавливаем логический "О", или НЛУ)
#define knopka_start RB4 // назначение имени "knopka_start" 4-й линии регистра В

void main (void) // запуск программы
{ // начало функции
while (ожидание, пока knopka_start = 0)
{
}
программа
} // конец функции

Вот как организовать, чтобы ожидание длилось до появления логической "1" на линии "knopka_start"?
Как МК воспринимает появление логической "1"? Какое это число, знак? С чем сравнивать?

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт мар 08, 2011 22:35:34 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Ghost in shell писал(а):
Доброго времени суток!
вопрос: как запустить логической "1" программу?
сначала:

Вот как организовать, чтобы ожидание длилось до появления логической "1" на линии "knopka_start"?
Как МК воспринимает появление логической "1"? Какое это число, знак? С чем сравнивать?


Код:
void main (void) // запуск программы
{ // начало функции
while (knopka_start)
{
}
программа
} //

Но если отпустим опять из цикла выйдем .



Код:
void main (void) // запуск программы
{ // начало функции
while(!knopka_start);
while (1)
{
}
программа
} //

Так ждем пока кнопка не нажата , если нажали входим в цикл и исполняем программу - вечно (до сброса)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср мар 09, 2011 12:35:15 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: -5
Зарегистрирован: Пн июн 15, 2009 06:01:38
Сообщений: 897
Откуда: USSR
Рейтинг сообщения: 0
dosikus, спасибо, но есть вопросы:

Код:
void main (void) // запуск программы
{ // начало программы
while(!knopka_start);
while (1)
{
}
программа
} // конец  программы


зачем оператор
Код:
while (1)
{
}
?
Логичнее поместить тело программы в бесконечный оператор while (1):
Код:
void main (void) // запуск программы
{ // начало программы
while(!knopka_start);
while (1)
{
программа
}
} // конец  программы

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср мар 09, 2011 15:31:16 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4587
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
Цитата:
Логичнее поместить тело программы в бесконечный оператор while (1):
Ну так у Вас же изначально было написано:
Цитата:
{ // начало функции
while (ожидание, пока knopka_start = 0)
{
}
программа
} // конец функции
:)

Естественно, основная программа в пределах бесконечного цикла, а не за ним :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср мар 09, 2011 19:05:13 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Ghost in shell писал(а):
dosikus, спасибо, но есть вопросы:
зачем оператор
Логичнее поместить тело программы в бесконечный оператор while (1):


Это же тупой копипаст вашей же программы . Да и думал "программа" - это комментарий. :))) :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 10, 2011 12:35:13 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: -5
Зарегистрирован: Пн июн 15, 2009 06:01:38
Сообщений: 897
Откуда: USSR
Рейтинг сообщения: 0
Доброго времени суток!
Кто-нить работал с pic16f72? Интерисует команда отключения АЦП.

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


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср апр 06, 2011 19:39:39 
Можно я тут немного погажу вопросами?
Скажите пожалуйста, почему я не могу найти delay.h в папках HT-PICC ? И где его взять можно? Да и вообще где можно полные библиотеки кучей скачать?


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 07, 2011 19:11:58 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Chettuser писал(а):
Можно я тут немного погажу вопросами?
Скажите пожалуйста, почему я не могу найти delay.h в папках HT-PICC ? И где его взять можно? Да и вообще где можно полные библиотеки кучей скачать?

Я к стате тоже не нашол:(... хотелосьбы их себе добыть.:)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 07, 2011 19:28:53 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
не разберусь с прерываниями и временем.
1.в даташитах написано что при прерывании программа уходит по адресу ххххххх ии выполняет обработку прерываний.
Как я понял это отдельная функция которая выполняется при прерывании. Вопрос. как сделать чтоб после прерывания выполнялась функция обработки прерываний? надо её прикрепить к адресу какомуто, какое то название может особенное? Короче как сделать чтоб компилятор понял что по прерыванию надао делать эту функцию?
2. хочу сделать что то типа тахометра. Сделать чтоб таймером прерывалось на 1 сек. ии выводило подсчитанные обороты.
Вопрос. Как сделать это секундное прерывание? пускай кварц 4мГц. 1млн. операций в секунду. 1000000/256=3906,25
выходит что при прерывании от переполнения каждые 3906 за сек. вызывается программа обработки прерываний (ПОП)
после чего в ней досчитываются остальные циклы. как то так. читал сто таймером можно считать, нулевым. тогда первым надо делать временные рамки. научите как это рассчитывать и делать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 07, 2011 20:17:34 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: -1
задержки
По измерению частоты недавно оперу писал
http://kazus.ru/forums/showthread.php?t=50542&page=2
Для пиков не сильно отличается.


Вложения:
delay.zip [2.3 KiB]
Скачиваний: 259
Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 07, 2011 22:17:44 
Мдааа... надо затирать посты старые... уже нашёл... в каком то установленном когда то компиляторе типа версии 9,6. - почему то в одном только было. Даже в версии PRO 9,81a нету. Странно вообще как то.

misterkuk Если надо могу поделится.


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

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


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

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


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

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


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