Програмирование pic на СИ.
Re: Програмирование pic на СИ.
Подскажите как прописать чтобы команда выполнялась определенное время, допустим 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;}
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 на СИ.
Команда не может выполняться 10 секунд, она выполняется очень быстро.Tolibbass писал(а):Подскажите как прописать чтобы команда выполнялась определенное время, допустим 10 сек
Не вижу в Вашем коде ничего, связанного с таймером. Какой таймер нужно "обнулить" ?Tolibbass писал(а):то таймер обнулялся
Вообще, не понятно в чём у Вас вопрос и какая проблема. Постарайтесь максимально конкретно объяснить, гляди того и решение сразу придёт в голову.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Програмирование pic на СИ.
я порой делаю так:т.к. обработчик прерываний оформляется по-разному для разных компиляторов, я описал его на псевдокоде
Код: Выделить всё
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 на СИ.
Самое угрёбищное решение в стиле АВР-ногодрыга...
Что... так тяжело проверку условия провести прямо в прерывании... оно уже есть... по любому??? Несколько дополнительных команд на скорости исполнения прерывания радикально не отразится...
А тупо висеть 10 сек и ничего не делать... ужос...
Что... так тяжело проверку условия провести прямо в прерывании... оно уже есть... по любому??? Несколько дополнительных команд на скорости исполнения прерывания радикально не отразится...
А тупо висеть 10 сек и ничего не делать... ужос...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Програмирование pic на СИ.
Нужно чтоб на portb.0 сигнал подавался 10 сек. В то де время если поступает сигнал с порта d сигнал должен прерываться и выполняться сл команда. Таймеры пока темный лес, поэтому и обратился.
Сразу " что сложно.....". Было б не сложно не спрашивал бы.
Сразу " что сложно.....". Было б не сложно не спрашивал бы.
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Програмирование pic на СИ.
Т.е. Вы считаете, что вот это :
Тогда я Вам скажу как её решить. - Нужно написать программу, которая соответствует вышеописанному Вами алгоритму.
Это Вы написали свои хотелки, а не проблемы и вопросы, с которыми Вы столкнулись во время написания программы.

КОНКРЕТНОЕ объяснение проблемы ?Tolibbass писал(а):Нужно чтоб на portb.0 сигнал подавался 10 сек. В то де время если поступает сигнал с порта d сигнал должен прерываться и выполняться сл команда.
Тогда я Вам скажу как её решить. - Нужно написать программу, которая соответствует вышеописанному Вами алгоритму.
Это Вы написали свои хотелки, а не проблемы и вопросы, с которыми Вы столкнулись во время написания программы.
Значит пришло то самое время, когда их необходимо изучать. Что тут ещё можно сказать...Tolibbass писал(а):Таймеры пока темный лес
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Програмирование pic на СИ.
некоторые на форуме тупо висят годами и нифига больше не делают... только критикуют другихHHIMERA писал(а):А тупо висеть 10 сек и ничего не делать... ужос...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Програмирование pic на СИ.
Я не могу понять как с помощью таймера прописать мою "хотелку" про 10сек.
А ладно.......
А ладно.......
Re: Програмирование pic на СИ.
Сконфигурить, повесить обработчик, в обработчике щёлкать глобальным счётчиком. В главном цикле, как собака за хвостом, бегать по кругу и свободным глазом посматривать на этот счётчик - как только он изменился на нужное количество тиков - прыжок в сторону - делать дело и, с ободрённым лаем, двигать на очередной круг "догонялок" до следующего раза.Tolibbass писал(а):Я не могу понять как с помощью таймера прописать мою "хотелку" про 10сек.
Что ладно? Теперь не отвертитесь!Tolibbass писал(а):А ладно.......
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! 
Re: Програмирование pic на СИ.
Обычно вменяемая критика более действенна чем гадалки-подсказки ...ARV писал(а): нифига больше не делают... только критикуют других
Re: Програмирование pic на СИ.
Ага. Особенно когда из профжаргона или сленга понимаешь только буквы((((. У меня такое ощущение, что люди нормально говорить разучились
Re: Програмирование pic на СИ.
Что ладно? Теперь не отвертитесь!Tolibbass писал(а):А ладно.......
Просто после такой "помощи" вся охота изучать чего-то пропадает. )
Re: Програмирование pic на СИ.
Тролль-ардуинщик??? Что изучаешь... ПИК... АВР???
Вот в параллельной теме... твоё неизменное...
http://radiokot.ru/forum/viewtopic.php? ... 8#p2297058
Вот в параллельной теме... твоё неизменное...
http://radiokot.ru/forum/viewtopic.php? ... 8#p2297058
Значит и не нужно... уже всё разжевали...вот как раз алгоритма я и не могу понять(((((
#include <tiny2313.h>
#include <delay.h>
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Програмирование pic на СИ.
И что??? Нельзя выбирать что лучше подойдет???
Только начал мк изучать, откуда мне знать что лучше подходит под задачу???
Только начал мк изучать, откуда мне знать что лучше подходит под задачу???
Re: Програмирование pic на СИ.
Тут есть ещё ветки по MSP430... STM8 и STM32... Не забудь и там отписать... А вдруг они ещё лучше???
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Програмирование pic на СИ.
Вот я и говорю - помощи как от козла молока.
Я всегда думал форум для помощи, а оказывается просто так, обсасывать .
Я всегда думал форум для помощи, а оказывается просто так, обсасывать .
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Програмирование pic на СИ.
Уважаемый, поймите, нельзя вот так написать - "Я хочу сделать то-то. Ничего не понимаю. Помогите", и ждать чего-то от форумчан, засирая их, что они разучились разговаривать и нихуя не помогают новичкам.
Из ложечки Вас покормить ? Дак это к Маме обратитесь...
Я Вам уже сказал - берёте и пишете программу по своему алгоритму. Что не так в этом совете ?
Чем, блять, помочь то ??? КОНКРЕТНЕЕЕ можно ??? Что у Вас НЕ ПОЛУЧАЕТСЯ ???
Из ложечки Вас покормить ? Дак это к Маме обратитесь...
Я Вам уже сказал - берёте и пишете программу по своему алгоритму. Что не так в этом совете ?
Чем, блять, помочь то ??? КОНКРЕТНЕЕЕ можно ??? Что у Вас НЕ ПОЛУЧАЕТСЯ ???
Re: Програмирование pic на СИ.
Здравствуйте, уважаемые программисты, написал первую свою программу (она полностью работает, как я хотел) вопрос в стиле программирования, как правильно писать выделять в отдельную функцию подготовку микропроцессора или можно как у меня, или лучше все, что можно выносить в отдельные функции, как правильно и более грамотно. Подскажите, чтобы с начало учится более правильно писать программы.
И еще такой вопрос как выставляется частота работы микропроцессора?
Заранее благодарен.
#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; //уменьшение количества импульсов светодиода
}
}
}
}
И еще такой вопрос как выставляется частота работы микропроцессора?
Заранее благодарен.
#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 на СИ.
В общем сам себе и отвечу. Может кому полезно будет. Все правильно я писал. Подвел Hi-Tech C PRO v9.71a. Есть такой файл pic12f1822.h в папке компилятора. Так вот там ошибка бита запуска PLL. Было: #define PLLEN_OFF 0xFDFF, а надо: #define PLLEN_OFF 0xFEFF. И всё заработало.Bkmz писал(а):Прошу помощи. PIC12F1822. Пытаюсь запустить от внутреннего генератора на 8 МГц. А он запускается только на 32 МГц.
И по предыдущему сообщению:
Я делаю так: #define _XTAL_FREQ 4000000ser82g писал(а):И еще такой вопрос как выставляется частота работы микропроцессора?
в данном случае 4МГц.


