Страница 31 из 103
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 09:48:43
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;}
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 11:14:27
Аlex
Tolibbass писал(а):Подскажите как прописать чтобы команда выполнялась определенное время, допустим 10 сек
Команда не может выполняться 10 секунд, она выполняется очень быстро.
Tolibbass писал(а):то таймер обнулялся
Не вижу в Вашем коде ничего, связанного с таймером. Какой таймер нужно "обнулить" ?
Вообще, не понятно в чём у Вас вопрос и какая проблема. Постарайтесь максимально конкретно объяснить, гляди того и решение сразу придёт в голову.
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 11:24:30
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; // для выхода из цикла ожидания
}
}
т.к. обработчик прерываний оформляется по-разному для разных компиляторов, я описал его на псевдокоде
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 11:54:07
HHIMERA
Самое угрёбищное решение в стиле АВР-ногодрыга...
Что... так тяжело проверку условия провести прямо в прерывании... оно уже есть... по любому??? Несколько дополнительных команд на скорости исполнения прерывания радикально не отразится...
А тупо висеть 10 сек и ничего не делать... ужос...

Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 12:14:39
Tolibbass
Нужно чтоб на portb.0 сигнал подавался 10 сек. В то де время если поступает сигнал с порта d сигнал должен прерываться и выполняться сл команда. Таймеры пока темный лес, поэтому и обратился.
Сразу " что сложно.....". Было б не сложно не спрашивал бы.
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 13:23:35
Аlex
Т.е. Вы считаете, что вот это :
Tolibbass писал(а):Нужно чтоб на portb.0 сигнал подавался 10 сек. В то де время если поступает сигнал с порта d сигнал должен прерываться и выполняться сл команда.
КОНКРЕТНОЕ объяснение проблемы ?
Тогда я Вам скажу как её решить. - Нужно написать программу, которая соответствует вышеописанному Вами алгоритму.
Это Вы написали свои хотелки, а не проблемы и вопросы, с которыми Вы столкнулись во время написания программы.
Tolibbass писал(а):Таймеры пока темный лес
Значит пришло то самое время, когда их необходимо изучать. Что тут ещё можно сказать...

Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 13:28:29
ARV
HHIMERA писал(а):А тупо висеть 10 сек и ничего не делать... ужос...

некоторые на форуме тупо висят годами и нифига больше не делают... только критикуют других
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 13:29:42
Аlex
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 13:31:53
Tolibbass
Я не могу понять как с помощью таймера прописать мою "хотелку" про 10сек.
А ладно.......
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 15:34:56
Siarzhuk
Tolibbass писал(а):Я не могу понять как с помощью таймера прописать мою "хотелку" про 10сек.
Сконфигурить, повесить обработчик, в обработчике щёлкать глобальным счётчиком. В главном цикле, как собака за хвостом, бегать по кругу и свободным глазом посматривать на этот счётчик - как только он изменился на нужное количество тиков - прыжок в сторону - делать дело и, с ободрённым лаем, двигать на очередной круг "догонялок" до следующего раза.
Tolibbass писал(а):А ладно.......
Что ладно? Теперь не отвертитесь!

Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 16:05:10
dosikus
ARV писал(а): нифига больше не делают... только критикуют других
Обычно вменяемая критика более действенна чем гадалки-подсказки ...
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 16:12:09
Tolibbass
Ага. Особенно когда из профжаргона или сленга понимаешь только буквы((((. У меня такое ощущение, что люди нормально говорить разучились
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 16:25:21
Tolibbass
Tolibbass писал(а):А ладно.......
Что ладно? Теперь не отвертитесь!

[/quote]
Просто после такой "помощи" вся охота изучать чего-то пропадает. )
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 16:47:13
HHIMERA
Тролль-ардуинщик??? Что изучаешь... ПИК... АВР???
Вот в параллельной теме... твоё неизменное...
http://radiokot.ru/forum/viewtopic.php? ... 8#p2297058
вот как раз алгоритма я и не могу понять(((((
#include <tiny2313.h>
#include <delay.h>
Значит и не нужно... уже всё разжевали...
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 16:50:05
Tolibbass
И что??? Нельзя выбирать что лучше подойдет???
Только начал мк изучать, откуда мне знать что лучше подходит под задачу???
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 16:58:10
HHIMERA
Тут есть ещё ветки по MSP430... STM8 и STM32... Не забудь и там отписать... А вдруг они ещё лучше???
Re: Програмирование pic на СИ.
Добавлено: Пт мар 06, 2015 17:01:02
Tolibbass
Вот я и говорю - помощи как от козла молока.
Я всегда думал форум для помощи, а оказывается просто так, обсасывать .
Re: Програмирование pic на СИ.
Добавлено: Сб мар 07, 2015 08:13:21
Аlex
Уважаемый, поймите, нельзя вот так написать - "Я хочу сделать то-то. Ничего не понимаю. Помогите", и ждать чего-то от форумчан, засирая их, что они разучились разговаривать и нихуя не помогают новичкам.
Из ложечки Вас покормить ? Дак это к Маме обратитесь...
Я Вам уже сказал - берёте и пишете программу по своему алгоритму. Что не так в этом совете ?
Чем, блять, помочь то ??? КОНКРЕТНЕЕЕ можно ??? Что у Вас НЕ ПОЛУЧАЕТСЯ ???
Re: Програмирование pic на СИ.
Добавлено: Пн мар 09, 2015 20:06:11
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; //уменьшение количества импульсов светодиода
}
}
}
}
Re: Програмирование pic на СИ.
Добавлено: Ср мар 11, 2015 05:45:48
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МГц.