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

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

подумаешь, бином ньютона -
что там догадываться... или компараторы не отключил или на rmw нарвался - всего и вариантов 2 штуки. если порты на цифру не перевел - на вход вроде должно работать.
Chettuser

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

Сообщение Chettuser »

Кстати, а светодиод случаем не в "цифре" стоит? Есть там такой глюк.
dertsb
Родился
Сообщения: 7
Зарегистрирован: Вт мар 05, 2013 00:33:51

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

Сообщение dertsb »

Про внутреннюю подтяжку.

Скажите а в PIC можно подтянуть внутренний резистор на отдельный пин или если подтягивается резисторы то сразу на всем порту?

По команде

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

RBPU = 1;  // подтягивающие R (0-вкл, 1-выкл)
я понял что это сразу про весь порт речь, а вот отдельно по пинам нельзя делать подтяжку?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

В данном случае - да, весь порт... в отдельности не получится... а так... ПИКи ведь тоже разные бывают...
"Я не даю готовых решений, я заставляю думать!"(С)
Phenom
Родился
Сообщения: 3
Зарегистрирован: Вс мар 24, 2013 16:35:36

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

Сообщение Phenom »

Решил снова написать в ожидании помощь, а не очередных насмешек. На днях решил дальше поковырять пик раз мне никто толком не помог. а всего лишь посмеялись. Взял всё тот же PIC16F887, чтобы пока не заморачиваться с модулями и аналог или цифра вход решил использовать пины на порту D, та RD0...RD4 без дополнительных модулей то есть работают как есть. К RD0 подключил кнопку, к RD3 подключил диод. Если всё правильно понял, то RD0 настраиваю на вход, а RD3 на выход. Смысл всей задумки, как уже писал, раз нажимаем горит, ещё раз тухнет. Возможно напарил с кодом.

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

void main () {
TRISD = 0b00000001;
PORTD =0;

while (1) {
   if (RD0=1)
     RD3=RD0;
   else
     RD3=0;
}
}

Код может где-то неверен, но так ничего нет. Если написать так:

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

void main () {
TRISD = 0b00000000;
PORTD =0;

while (1) {
   if (RD0=1)
     RD3=RD0;
   else
     RD3=0;
}
}

то диод горит и при нажатии тухнет, отпускаю кнопку горит. Дальше разберусь как сделать что бы менял состояние по нажатию. Про не пойму с управлением пинами. То есть кнопка работает только когда стоит пин на выход, а не вход. Объясните, плиз, без наездов как правильно ставить работу пинов.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

if(RD0=1) операция не присваивания, а сравнения, если так хотите , то if(RD0==1)
Chettuser

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

Сообщение Chettuser »

А подтяжка есть на кнопке? Это первое.
Далее.
Переключение можно написать так:
RD3 = ~RD3;
это означает "инвертировать состояние вывода порта", по условию разумеется, где Вы и написали.
Возможно придётся включить некоторую задержку - Вы же мгновенно не сможете нажать и отпустить кнопку? С таймерами Вам работать еще рановато, как и с прерываниями. Задержка скажем в 0,5 сек.

Картинки со схемой подключения на сайте я так, к сожалению и не увидел.
Phenom
Родился
Сообщения: 3
Зарегистрирован: Вс мар 24, 2013 16:35:36

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

Сообщение Phenom »

В строке if(RD0=1) имел введу сравнение с тем, если есть на порту сигнал, диод включаем/выключаем.
RD3 = ~RD3; про это думал потом попробовать
Подтяжка имели введу RBPU = 1; то есть подтягивать к единице?
По поводу картинок, их нет т.к. нахожусь на работе.
Есть ещё вопрос по компараторам, что это и как работает т.к. в даташите нашел только в одном месте и то в описании режима SLEEP. На этой строке "CMCON = 0x07; // отключение компараторов" компилятор материться.
Chettuser

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

Сообщение Chettuser »

А нафига Вам компаратор?
Его настраивать надо по даташиту, ищите соответствующий раздел, если честно я никогда его не применял.
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

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

Сообщение misterkuk »

Нормально работало, а теперь при коде

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

void podgot (void)
{
CMCON = 0x07; // отключение компараторов.
TRISA = 0b00000000; // направление работы ножек порта А.
TRISB = 0b00000001; // направление работы ножек порта В.
RBPU = 1;
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б.
}

////////////////////////////////////////////////////
void main (void)
{
podgot ();
while (1)
{
PORTB=1;
led1=0;
}
}

Не меняется значение порта Б, Если написать RB4( К примеру)=1; то будет меняться.
Chettuser

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

Сообщение Chettuser »

Подскажите где в MCC18 прячется функция Delay10KTCYx?
Chettuser

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

Сообщение Chettuser »

misterkuk писал(а):Нормально работало, а теперь при коде
Не меняется значение порта Б, Если написать RB4( К примеру)=1; то будет меняться.


TRISB = 0b00000001; - RB0 - на вход, остальные на выход.
PORTB=1; - здесь в порт запишется следующим образом: 0b00000001. т.е. туда где настроено на вход.
А led1 на какой у Вас записан?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

Chettuser писал(а):Подскажите где в MCC18 прячется функция Delay10KTCYx?
mcc18\src\extended\delays
Chettuser

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

Сообщение Chettuser »

Хех! Да они на асме сделаны! Чудеса! :)) А я то думал на Сях...
Спасибо, Alex!
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

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

Сообщение misterkuk »

Chettuser писал(а):
misterkuk писал(а):Нормально работало, а теперь при коде
Не меняется значение порта Б, Если написать RB4( К примеру)=1; то будет меняться.


TRISB = 0b00000001; - RB0 - на вход, остальные на выход.
PORTB=1; - здесь в порт запишется следующим образом: 0b00000001. т.е. туда где настроено на вход.
А led1 на какой у Вас записан?

led1 посажен на RA линию.
Суть RB0 у меня настроен на вход и через него я считаю приходящие импульсы. Остальные биты работают на выход и подключены к 7ми сегментному индикатору с ОК. led1 это первый разряд индикатора. Просто по мойму всё работало и код был уже написан и работал, но я его кода-то подевал или затёр случайно. Каждый бит напряжёно определять тогда будет
Chettuser

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

Сообщение Chettuser »

PORTB=1; - пишет в RB0 единицу.
А RB0 у Вас на вход оформлен.
rockborn
Родился
Сообщения: 1
Зарегистрирован: Сб май 25, 2013 18:47:24

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

Сообщение rockborn »

Добрый вечер! Написал маленькую програмку для pic12f629, кроме Си ничего не знаю. Компилирую в Pic C Compiler. Честно сказать, программа далека от совершенства, но за то работает (правда нестабильно). Поэтому хотелось бы увидеть ваши комментарии и исправления)

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

#include <main.h>
void main()
{
   while(1) 
       {
        if(!input(PIN_A5))
        while(input(PIN_A5))
         {
          output_high(PIN_A1);
          delay_ms(100);         
          output_low(PIN_A1); 
          delay_ms(100);
       
         }           
        }
 }
Chettuser

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

Сообщение Chettuser »

Хотелось бы раз и навсегда заполнить пробел в самообучении:
Есть конструкция типа

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

#pragma config CPUDIV =
#pragma config CPUDIV =
#pragma config USBDIV =
#pragma config FOSC =

есть даташит, в нём приведено например следующее: (глава REGISTER 24-1: CONFIG1L: CONFIGURATION REGISTER 1 LOW)

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

bit 4-3 CPUDIV<1:0>: CPU System Clock Selection bits
            11 = CPU system clock divided by 4
            10 = CPU system clock divided by 3
            01 = CPU system clock divided by 2
            00 = No CPU system clock divide

Так всё же что писать в #pragma config ?
и где это брать?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

mcc18\doc\hlpPIC18ConfigSet.chm
Chettuser

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

Сообщение Chettuser »

Ё-маё! Я ж туда заглядывал... пару лет тому назад :oops:
Ответить

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