Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

Подскажите как прописать чтобы команда выполнялась определенное время, допустим 10 сек, если в течении них не выполняется второе условие?? А если второе условие случится раньше то таймер обнулялся.
while(PIND.0==1){}
delay_ms(500);
if(PIND.1==1)
{PORTB.0=1;}

while(PIND.1==1){}
delay_us(500);
if(PIND.1==0)
{PORTB.0=0;}
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Tolibbass писал(а):Подскажите как прописать чтобы команда выполнялась определенное время, допустим 10 сек
Команда не может выполняться 10 секунд, она выполняется очень быстро.
Tolibbass писал(а):то таймер обнулялся
Не вижу в Вашем коде ничего, связанного с таймером. Какой таймер нужно "обнулить" ?

Вообще, не понятно в чём у Вас вопрос и какая проблема. Постарайтесь максимально конкретно объяснить, гляди того и решение сразу придёт в голову.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение ARV »

я порой делаю так:

Код: Выделить всё

volatile int wait_counter;

обработчик_прерывания_таймера(){
   // настройками таймера задается, как часто возникает прерывание
   // допустим, оно возникает 100 раз в секунду
   if(wait_counter) wait_counter--;
}

// допустим, мне нужно, чтобы ожидание нажатия кнопки продолжалось 10 секунд
// тогда в нужном месте я пишу так:

   wait_counter = 10000; //100 раз - 1 секунда, 10000 - 10 сек
   while(wait_counter){
      if(key_pressed()){
         // тут или делаем, что надо, или пишем 
         break; // для выхода из цикла ожидания
      }
   } 
т.к. обработчик прерываний оформляется по-разному для разных компиляторов, я описал его на псевдокоде
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Програмирование pic на СИ.

Сообщение HHIMERA »

Самое угрёбищное решение в стиле АВР-ногодрыга...
Что... так тяжело проверку условия провести прямо в прерывании... оно уже есть... по любому??? Несколько дополнительных команд на скорости исполнения прерывания радикально не отразится...
А тупо висеть 10 сек и ничего не делать... ужос... :facepalm:
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Эиком - электронные компоненты и радиодетали
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

Нужно чтоб на portb.0 сигнал подавался 10 сек. В то де время если поступает сигнал с порта d сигнал должен прерываться и выполняться сл команда. Таймеры пока темный лес, поэтому и обратился.
Сразу " что сложно.....". Было б не сложно не спрашивал бы.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Т.е. Вы считаете, что вот это :
Tolibbass писал(а):Нужно чтоб на portb.0 сигнал подавался 10 сек. В то де время если поступает сигнал с порта d сигнал должен прерываться и выполняться сл команда.
КОНКРЕТНОЕ объяснение проблемы ? :)
Тогда я Вам скажу как её решить. - Нужно написать программу, которая соответствует вышеописанному Вами алгоритму.
Это Вы написали свои хотелки, а не проблемы и вопросы, с которыми Вы столкнулись во время написания программы.
Tolibbass писал(а):Таймеры пока темный лес
Значит пришло то самое время, когда их необходимо изучать. Что тут ещё можно сказать... :dont_know:
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение ARV »

HHIMERA писал(а):А тупо висеть 10 сек и ничего не делать... ужос... :facepalm:
некоторые на форуме тупо висят годами и нифига больше не делают... только критикуют других
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

:)))
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

Я не могу понять как с помощью таймера прописать мою "хотелку" про 10сек.
А ладно.......
Аватара пользователя
Siarzhuk
Потрогал лапой паяльник
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

Re: Програмирование pic на СИ.

Сообщение Siarzhuk »

Tolibbass писал(а):Я не могу понять как с помощью таймера прописать мою "хотелку" про 10сек.
Сконфигурить, повесить обработчик, в обработчике щёлкать глобальным счётчиком. В главном цикле, как собака за хвостом, бегать по кругу и свободным глазом посматривать на этот счётчик - как только он изменился на нужное количество тиков - прыжок в сторону - делать дело и, с ободрённым лаем, двигать на очередной круг "догонялок" до следующего раза.
Tolibbass писал(а):А ладно.......
Что ладно? Теперь не отвертитесь! :-)
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

ARV писал(а): нифига больше не делают... только критикуют других
Обычно вменяемая критика более действенна чем гадалки-подсказки ...
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

Ага. Особенно когда из профжаргона или сленга понимаешь только буквы((((. У меня такое ощущение, что люди нормально говорить разучились
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

Tolibbass писал(а):А ладно.......
Что ладно? Теперь не отвертитесь! :-)[/quote]
Просто после такой "помощи" вся охота изучать чего-то пропадает. )
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Програмирование pic на СИ.

Сообщение HHIMERA »

Тролль-ардуинщик??? Что изучаешь... ПИК... АВР???
Вот в параллельной теме... твоё неизменное...
http://radiokot.ru/forum/viewtopic.php? ... 8#p2297058
вот как раз алгоритма я и не могу понять(((((



#include <tiny2313.h>
#include <delay.h>
Значит и не нужно... уже всё разжевали...
"Я не даю готовых решений, я заставляю думать!"(С)
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

И что??? Нельзя выбирать что лучше подойдет??? :shock:
Только начал мк изучать, откуда мне знать что лучше подходит под задачу???
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Програмирование pic на СИ.

Сообщение HHIMERA »

Тут есть ещё ветки по MSP430... STM8 и STM32... Не забудь и там отписать... А вдруг они ещё лучше???
"Я не даю готовых решений, я заставляю думать!"(С)
Tolibbass
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср янв 07, 2015 15:37:52

Re: Програмирование pic на СИ.

Сообщение Tolibbass »

Вот я и говорю - помощи как от козла молока.
Я всегда думал форум для помощи, а оказывается просто так, обсасывать .
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Уважаемый, поймите, нельзя вот так написать - "Я хочу сделать то-то. Ничего не понимаю. Помогите", и ждать чего-то от форумчан, засирая их, что они разучились разговаривать и нихуя не помогают новичкам.
Из ложечки Вас покормить ? Дак это к Маме обратитесь...
Я Вам уже сказал - берёте и пишете программу по своему алгоритму. Что не так в этом совете ?
Чем, блять, помочь то ??? КОНКРЕТНЕЕЕ можно ??? Что у Вас НЕ ПОЛУЧАЕТСЯ ???
ser82g
Родился
Сообщения: 9
Зарегистрирован: Чт фев 12, 2015 18:02:29

Re: Програмирование pic на СИ.

Сообщение ser82g »

Здравствуйте, уважаемые программисты, написал первую свою программу (она полностью работает, как я хотел) вопрос в стиле программирования, как правильно писать выделять в отдельную функцию подготовку микропроцессора или можно как у меня, или лучше все, что можно выносить в отдельные функции, как правильно и более грамотно. Подскажите, чтобы с начало учится более правильно писать программы.
И еще такой вопрос как выставляется частота работы микропроцессора?
Заранее благодарен.

#include <pic.h>

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);


unsigned int kol_imp; //глобальная переменная количество импульсов


void main (void)
{

TRISA = 0b00000010; TRISB = 0b00000000; // направление работы ножек порта А и B
CMCON = 0x07; // отключение компараторов
PORTA = 0; PORTB = 0; // чистим порты
RBPU = 0; // подтягивающие R (1-откл, 0-вкл)

kol_imp = 8; //установка глобальной переменной

while (1) //бесконечный цикл
{

if (RA1 == 1) //проверяем нажатие кнопки счетчика
{

unsigned int sader_r; //задержка работы светодиода
unsigned int sader_p; //задержка не работы светодиода
unsigned int kol_imp_tem; //количество импульсов локальная переменная чтобы не менять глобальную

kol_imp_tem = kol_imp; //перенос количества импульсов с глобальной переменной в локальную

while (kol_imp_tem != 0) //проверка оставшихся количества импульсов

{
RA0 = 1; //включение светодиода

sader_r = 8000; //задержка работы светодиода
while (sader_r-->0); //цикл задержки работы светодиода
RA0 = 0; //выключение светодиода

sader_p = 20000; //задержка выключенного светодиода
while (sader_p-->0); //цикл задержки выключенного светодиода

kol_imp_tem=kol_imp_tem - 1; //уменьшение количества импульсов светодиода
}
}

}
}
Аватара пользователя
Bkmz
Нашел транзистор. Понюхал.
Сообщения: 164
Зарегистрирован: Пт сен 02, 2011 09:14:44

Re: Програмирование pic на СИ.

Сообщение Bkmz »

Bkmz писал(а):Прошу помощи. PIC12F1822. Пытаюсь запустить от внутреннего генератора на 8 МГц. А он запускается только на 32 МГц.
В общем сам себе и отвечу. Может кому полезно будет. Все правильно я писал. Подвел Hi-Tech C PRO v9.71a. Есть такой файл pic12f1822.h в папке компилятора. Так вот там ошибка бита запуска PLL. Было: #define PLLEN_OFF 0xFDFF, а надо: #define PLLEN_OFF 0xFEFF. И всё заработало.
И по предыдущему сообщению:
ser82g писал(а):И еще такой вопрос как выставляется частота работы микропроцессора?
Я делаю так: #define _XTAL_FREQ 4000000
в данном случае 4МГц.
Ответить

Вернуться в «PIC»