Например TDA7294

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

Текущее время: Ср окт 01, 2025 12:51:03

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1367 ]     ... , , , 12, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 14:55:59 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Аlex писал(а):
Цитата:
считать за секунду импульсы. Верно?
:shock:
:тут смайл - кот повесился:

Ой :oops: Аж стыдно стало. тупанул. Сас накидаю код:)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 15:37:08 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
3000 об/мин. Это 50Гц. За 1 период(20 мс.), таймер отсчитает 400'000 тактов. Делим 1'200'000'000 на 400'000, получаем 3000.
_____
Не пойму. Подаю на ИНТ 50 герц и таймер насчитует проимерно 76598. Обьясните откуда 400? Всё считает но выводит не 3000 оборотов, а 15 с чемто тысяч.


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

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4582
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Цитата:
Подаю на ИНТ 50 герц и таймер насчитует проимерно 76598
А когда я подаю, у меня отсчитывает нормально. А если и считает неправильно, я вижу свой исходник, в отличии от Вашего, и не занимаюсь экстрасенсорикой. Собственно, как и любой из присутствующих здесь :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 15:51:24 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Аlex писал(а):
Цитата:
Подаю на ИНТ 50 герц и таймер насчитует проимерно 76598
А когда я подаю, у меня отсчитывает нормально. А если и считает неправильно, я вижу свой исходник, в отличии от Вашего, и не занимаюсь экстрасенсорикой. Собственно, как и любой из присутствующих здесь :)

вот мой исходник
Код:
#include <pic.h>
__CONFIG (XT & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
unsigned int   tmr1temp;
unsigned int   tmr1temp2;
long  tmp;
unsigned int   tmppr;
int num10000;
int num1000;
int num100;
int num10;
int num1;
void pauza (void)
{ // начало переменная
unsigned int x; // локальная
x = 100; // в tmp поместить некое максимальное число
while (x-->0);
}// конец функции

void podgot (void)
{
TRISA = 0b00000000; // направление работы ножек порта А.
TRISB = 0b10000001; // направление работы ножек порта В.
CMCON = 0x07; // отключение компараторов.
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б.
GIE = 1; //разрешить глобальные прерывания .
PEIE = 1;
// OPTION BIT
RBPU = 1;  // подтягивающие R (0-вкл, 1-выкл).
INTEDG = 0; //Прерывания INT по пер. фронту.
T0CS = 1; // внешний тактовый сигнал
T0SE = 0; // задний фронт преращения сигнала.
//T1CON BIT
T1CKPS1 = 0;
T1CKPS0 = 0; //предделитель 1:1
T1OSCEN = 0; // внутренний тактовый генератор выкл.
T1SYNC = 1; // не синхронизировать внешний сигнал
TMR1CS = 0; // Внутреннй источник тактового сигнала.
TMR1ON = 1; // таймер включен.
INTE=1;
/////////
TMR1IE = 1; // прерывание от 1 таймера on.
tmp=0;
}

void main (void)
{
podgot ();
while (1)
{
// === массив констант с описанием 7-сегментных символов
const unsigned int arr_seg1[12]=

0b01111100, // 0й элемент, символ «0»
0b01100000, // 1й элемент, символ «1»
0b01011010, // 2й элемент, символ «2»
0b01110010, // 3й элемент, символ «3»
0b01100110, // 4й элемент, символ «4»
0b00110110, // 5й элемент, символ «5»
0b00111110, // 6й элемент, символ «6»
0b01100000, // 7й элемент, символ «7»
0b01111110, // 8й элемент, символ «8»
0b01110110, // 9й элемент, символ «9»
0b01000110, //10й элемент, символ градуса
0b00000000,  //11й элемент, пробел
}; // конец массива

// === массив констант с описанием 7-сегментных символов
const unsigned int arr_seg2 [12]=
{    // начало массива
// 0bABCDEFGH <– расположение сегментов по битам
1, // 0й элемент, символ «0»
0, // 1й элемент, символ «1»
1, // 2й элемент, символ «2»
1, // 3й элемент, символ «3»
0, // 4й элемент, символ «4»
1, // 5й элемент, символ «5»
1, // 6й элемент, символ «6»
1, // 7й элемент, символ «7»
1, // 8й элемент, символ «8»
1, // 9й элемент, символ «9»
1, //10й элемент, символ градуса
0, //11й элемент, пробел
};
tmp=65536*tmr1temp2; //количество кругов таймера1
tmp=tmp+tmppr;  // пребовляем то что осталось в таймере до обнуления
tmp=1200000000/tmp;  // делим число (20000000*60) на t
      num10000=tmp/10000;   
      tmp %=10000;               
      num1000=tmp/1000;      // количество тысяч
      tmp %=1000;            // остаток от деления на 1000
      num100=tmp/100;      // количество сотен
      tmp %=100;            // остаток от деления на 100
      num10=tmp/10;         // кол-во десятков
      num1=tmp%10;         // остаток - единицы


RB7 = 0;
PORTB = arr_seg1 [num10000];
RA4 = arr_seg2 [num10000];

RB7 = 1;
RA0 = 0;
PORTB = arr_seg1 [num1000];
RA4 = arr_seg2 [num1000];

RA0 = 1;
RA1 = 0;
PORTB = arr_seg1[num100];
RA4 = arr_seg2[num100];

RA1 = 1;
RA2 = 0;
PORTB = arr_seg1[num10];
RA4 = arr_seg2[num10];

RA2 = 1;
RA3 = 0;
PORTB = arr_seg1[num1];
RA4 = arr_seg2[num1];

RA3 = 1;
}
}
void  interrupt prerivanie (void)
{
if (INTF==1)
    {
      INTF=0;
      tmppr = TMR1H<<8;
      tmppr +=TMR1L;
      TMR1H=0;
      TMR1L=0;
      tmr1temp2=tmr1temp;
      tmr1temp=0;
    }
if (TMR1IF==1)
    {
     TMR1IF=0;   
     tmr1temp=tmr1temp+1;
    }     
    }


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

Зарегистрирован: Вс мар 13, 2011 15:58:25
Сообщений: 189
Откуда: м. Луцьк
Рейтинг сообщения: 0
извеняюсь что вмешался, но поясните плиз что такое (исходник прошивки) и для чего ето???буду очень благодарен

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 16:39:25 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
самогон писал(а):
извеняюсь что вмешался, но поясните плиз что такое (исходник прошивки) и для чего ето???буду очень благодарен

Это сам текст программы написан на языке программирования который не откомпилирован.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 16:46:36 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Вс мар 13, 2011 15:58:25
Сообщений: 189
Откуда: м. Луцьк
Рейтинг сообщения: 0
misterkuk писал(а):
самогон писал(а):
извеняюсь что вмешался, но поясните плиз что такое (исходник прошивки) и для чего ето???буду очень благодарен

Это сам текст программы написан на языке программирования который не откомпилирован.

спасиба!

_________________
Изображение


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

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4582
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
misterkuk, срочно читать это
http://yandex.ru/yandsearch?clid=9582&text=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D1%82%D0%B8%D0%BF%D0%BE%D0%B2&lr=2


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 17:58:21 
Написано:
Цитата:
Лучшая практика по приведению типов: не делать этого. Потому что, если в программе потребовалось приведение типов, значит в этой программе с большой долей вероятности что-то неладно...

Собственно вопрос - а нафига Вам нужен этот float? Чай не на PIC32 пишем?


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

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Chettuser писал(а):
Написано:
Цитата:
Лучшая практика по приведению типов: не делать этого. Потому что, если в программе потребовалось приведение типов, значит в этой программе с большой долей вероятности что-то неладно...

Собственно вопрос - а нафига Вам нужен этот float? Чай не на PIC32 пишем?

16ф628а .Я учусь по самоучителям с интернета. В основном с labkit.ru. Там как написано так и делаю. Ведь если не определять то ругается компилятор. float тошо большие числа с запятой.
Аlex так почему у меня таймер не считает 400? Исходник жеш дал. И почему поллали меня на приведение типов.?


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

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
misterkuk писал(а):
В основном с labkit.ru.

Собственно дальше можете и не продолжать ...


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

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4582
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
misterkuk писал(а):
Аlex так почему у меня таймер не считает 400?
Потому что в некоторых местах данные ограничиваются всего 2-мя байтами.
misterkuk писал(а):
И почему поллали меня на приведение типов.?
А Вы почитали ? Думаете напрасно Вам дают подобные ссылки ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 22:29:13 
Мучитель микросхем

Зарегистрирован: Пт ноя 20, 2009 20:38:12
Сообщений: 429
Откуда: Калининград (Koenigsberg)
Рейтинг сообщения: 0
misterkuk, в самообучении всегда повышена вероятность нарваться на неподходящий учебник и как бы не старались разобраться в теме, но каменный цветок не будет выходить. В итоге только потраченное впустую время, но время - самый ценный ресурс в жизни (или нет, здоровье ценнее, но не суть). Не получается по одному учебнику - берите другой. Многие на эти грабли наступали. Если можете читать по-английски, то это резко увеличивает шансы на успех - берите оригиналы и изучайте тему по ним. Если осилите самостоятельно половину упражнений из K&R то гарантирую что проблем как сейчас не будет :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт сен 27, 2011 23:03:35 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Аlex писал(а):
misterkuk писал(а):
Аlex так почему у меня таймер не считает 400?
Потому что в некоторых местах данные ограничиваются всего 2-мя байтами.
misterkuk писал(а):
И почему поллали меня на приведение типов.?
А Вы почитали ? Думаете напрасно Вам дают подобные ссылки ?

Всё считает, еслиб не хваталоб места то не считалоб. За ссылки спасибо . просто дали ссылку и всё, хотяб на что конкретно обратить внимание. я за то что у вас за 0.02 сек таймер насчитует 400000 циклов. Но как так.? у нас разные таймеры чтоли? Нет конечно. Кварц 20 мегагерц.
1 машинный цикл 200 наносекунд. Тоесть 200/1000000000=0.0000002 секунды и если мы 0.0000002*400000 как у вас то получим не 0.02 а 0.08.


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

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4582
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Тьфу ты, я все 20Мгц посчитал. Тактовая же в 4 раза меньше.
Но в любом случае, принцип тот-же... об/мин = (тактовая * 60) / T
В Вашем случе получится 300'000'000 / T.
Для 3000 об/мин, таймер насчитает 100'000.


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср сен 28, 2011 05:34:08 
С пред- постделителями?
Тогда зачем FLOAT?


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

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4582
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Chettuser писал(а):
С пред- постделителями?
Тогда зачем FLOAT?
А кто сказал что он нужен ?
viewtopic.php?p=971859#p971859


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср сен 28, 2011 20:51:30 
OFTOPIC: Вот и я спрашиваю - зачем почти страницу мучаем человека с float? Знать конечно полезно, но всему своё время...


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт июн 19, 2012 14:55:26 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Не компилит такой код на 12f675
Код:
#include <pic.h>
__CONFIG(0x3F82);
void podgot (void)
{
CMCON=0x07;
ADCON0=0x81;
WPU=0x0;
ANSEL=0x41;
}

void main (void)
{
podgot();
int i,v;
GODONE=1;
while(GODONE){}
v=ADRESL;           
i=ADRESH;           
v=v+i*256;
}

не компилит после добавления
Код:
int i,v;
v=ADRESL;           
i=ADRESH;           
v=v+i*256;


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт июн 19, 2012 19:03:39 
чё пишет?


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

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


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

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


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

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


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