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

Поклонники продукции Microchip Technology Inc тусуются тут.
const1105
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Сб мар 19, 2011 15:19:47
Откуда: Владивосток

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

Сообщение const1105 »

По поводу подтягивающих резисторов КРАМ ответил. Вместо них можно использовать ноги МК, переключая их на вход на время гашения.

Как бы у входа наоборот, высокое входное сопротивление.
Если подтяжка нулем на выходе не помогает, то перевод на вход......
база транзистора висит в воздухе.
Darkmaster
Встал на лапы
Сообщения: 137
Зарегистрирован: Вс окт 11, 2009 09:54:59
Откуда: Пенза

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

Сообщение Darkmaster »

Значит поставил я pnp транзистор..И это сильно снизило засветку индикатора(пауза менее 1мс) правда тупит немного.видимо пересчитать резистор базы надо..я думаю еще лучше ставить полевики.Вроде они намного быстрее переключаются..
Заодно спасибо :) и может кто подскажет типа аналога uln2003 .?только чтобы нагрузка подключалась не перед ней (uln2003) а после нее /него (драйвера )
Интересная,однако,штука
TNT116
Родился
Сообщения: 13
Зарегистрирован: Пт авг 28, 2015 23:50:10

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

Сообщение TNT116 »

Собственно чтобы научиться писать на Си, собственно для PIC это основной язык программирования, вам потребуется всего ничего.
1. Четко выучить синтаксис языка, любая вменяемая книга по Си в помощь, для начала нужно знать где правильно ставить точку с запятой и пару операторов.
2. Представлять структуру микроконтроллера под который пишете код. без этого вы ничего вменяемого не напишите.
3. Основательно изучить описание на ваш компилятор, этот хитрый парень может напутать вам все карты, в своей манией оптимизации все вам может изгадить.
4. Правильные примеры исходников и структуры проектов.

удачи
Аватара пользователя
arhimed2007
Открыл глаза
Сообщения: 78
Зарегистрирован: Вт июн 16, 2009 20:41:21
Откуда: Kyiv
Контактная информация:

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

Сообщение arhimed2007 »

Мяу, народ!

Начал осваивать С для пиков через протеус и наткнулся на странный прикол. У меня не компилируется больше ОДНОЙ функции! Причём поменял хайтековский с на ХС8 - та же хрень! На синтаксис софтина не матерится, симуляцию запускает, но в листинге напротив всех функций, кроме первой, опкоды ОТСУТСТВУЮТ и обращение к оным в пошаговом режиме просто проскакивается, как комментарий.

Это какое-то ограничение самого Протеза, бесплатной версии компилятора или я что-то пропустил?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25149
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Может примерчик?
Аватара пользователя
arhimed2007
Открыл глаза
Сообщения: 78
Зарегистрирован: Вт июн 16, 2009 20:41:21
Откуда: Kyiv
Контактная информация:

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

Сообщение arhimed2007 »

Изображение

Хотя бы вот. Стащить сам листинг пока не знаю, как, сделал скриншот.
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

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

Сообщение botchin »

С язък хорошии и мощнъй, но не терпит своеволия
Как оределяется функция
Пример:
int - тип возвращаемого резултата
my_func( - имя функции
int a, int b) - тип и имя параметров
{
return a+b; - тело функции
}

- здесь ничего не надо ставить, даже и ;
можно директивъ препроцессора, но ето плохой стил
void main(void)
{
....

думаю что у тебя компилятор ругается из за наличие ; там где ему не место.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
arhimed2007
Открыл глаза
Сообщения: 78
Зарегистрирован: Вт июн 16, 2009 20:41:21
Откуда: Kyiv
Контактная информация:

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

Сообщение arhimed2007 »

Для нерусских :) повторю: компилятор НЕ РУГАЕТСЯ. Он честно и без ошибок переводит остаток программы в код и запускает симулятор. Но для приведённых в листинге ПУСТЫХ (void) функций (т.е. процедур) даже адресов не назначает!

При этом если в них нарушить синтаксис, компилятор выматерится.
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

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

Сообщение botchin »

Лично для тебя даю ссълку на "БИБЛИЮ" - Brian W. Kernighan, Dennis M. Ritchie - The C programming Language
http://cpp.com.ru/kr_cbook/index.html#content
Почитай на досуге.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
arhimed2007
Открыл глаза
Сообщения: 78
Зарегистрирован: Вт июн 16, 2009 20:41:21
Откуда: Kyiv
Контактная информация:

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

Сообщение arhimed2007 »

:) Спасибо, брат-славянин! Книга сия у меня есть, но, пока размышлял, что тебе могло не понравиться, обратил внимание, что процедуры типа void всё равно при вызове должны содержать скобки. О чём я, не писавши на Си уже добрых лет 15, благополучно забыл. Можно было сразу носом ткнуть.
Stewart
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт апр 05, 2016 19:00:29
Откуда: Ростовская обл. Новочеркасск

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

Сообщение Stewart »

Собственно, вопрос не вопрос, но интересно.
Компилятор МикроСи для PIC от Микроэлектронники.
Писал код для 16Ф628. Т.к. код получился больше и не компилировался, указал 16Ф648. Потихоньку оптимизировал, получилось ровно 2048. :)) Вернул тип камня 16Ф628 и код скомпилировался ещё меньше. :shock: Въедливо разницу меж камнями не вычитывал, кроме объёма флеши, но на вскидку они не отличаются. Тем более, что код не имеет аппаратнозависимых функций, используется только прерывание по таймеру, софт-UART и библиотека 1602. Интересно, почему компилируется разный объём прошивки?

И более существенный вопрос. В МикроСи есть возможность задавать уровень оптимизации? Полазив по менюшкам - не нашёл.
Ох уж эти сказки...
Ох уж эти сказочники...
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

Немного глупый вопрос. В С есть функции для работы с WDT? Нужно просто менять время срабатывания в коде. А компилятор даёт вроде только через #pragma. Регистра CW1 ваще нету в дефайнах. Или только __asm ("") делать?
Успех - императив!
Alpout
Открыл глаза
Сообщения: 77
Зарегистрирован: Вт сен 27, 2011 09:27:40

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

Сообщение Alpout »

Всем привет! А нельзя ли использовать модуль CCP, конкретнее PWM стандартный режим в любых портах выводить? Мне пока известно, что выход CCP1 настроен только на один вывод, а мне нужно в трех пинах? ECCP не нужен.
Dmitry888
Встал на лапы
Сообщения: 131
Зарегистрирован: Чт мар 05, 2015 07:14:58

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

Сообщение Dmitry888 »

Пытаюсь использовать bootloader на PIC18F25K80.
Взял код из примера MikroC для PIC18F45K22, заменив лишь UART1 на UART2
Спойлер

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


#pragma orgall 0x7CC0

#define BOOTLOADER_START_ADDR 0x7CC0
#define START_PROGRAM_ADDR 0x7FC0

static char block[64];

void Start_Program() org START_PROGRAM_ADDR{

}

unsigned short UART_Write_Loop(char send, char receive){
  unsigned int rslt = 0;

  while(1){
    Delay_5ms();
    UART2_Write(send);
    Delay_5ms();

    rslt++;
    if (rslt == 0x0200)
      return 0;
    if (UART2_Read() == receive)
      return 1;
  }
}

void Write_Begin(){
  FLASH_Erase_Write_64(START_PROGRAM_ADDR, block);
  //--- goto main
  block[0] = 0x60;  //0xF03EEF60
  block[1] = 0xEF;
  block[2] = 0x3E;
  block[3] = 0xF0;
}

void Start_Bootload(){
  char i = 0, xx, yy;
  long j = 0;

  while (1) {
    if (i == 64) {
      //--- If 32 words (64 bytes) recieved then write to flash
      if (!j)
        Write_Begin();
      if (j<BOOTLOADER_START_ADDR){
        FLASH_Erase_Write_64(j, block);
      }

      i = 0;
      j += 0x40;
    }
    //--- Ask for yy
    UART2_Write('y');
    while (!UART2_Data_Ready()) ;
    //--- Read yy
    yy = UART2_Read();
    //--- Ask for xx
    UART2_Write('x');
    while (!UART2_Data_Ready()) ;
    //--- Read xx
    xx = UART2_Read();
    //--- Save xxyy in block[i]
    block[i++] = yy;
    block[i++] = xx;
  }
}

void main() org BOOTLOADER_START_ADDR{
 // ANSELC = 0;                         // Configure PORTC pins as digital
  UART2_Init(115200);                 // Init USART at 115200
  if (UART_Write_Loop('g','r')) {     // Send 'g' for ~5 sec, if 'r'
    Start_Bootload();                 //   received start bootload
  }
  else {
    Start_Program();                  //   else start program
  }
}


В результате: соединение устанавливается, прошивка заливается через бутлоадер. Но после ресета, загрузки залитой программы не происходит. Почему то всё время загружается бутлоадер.
Подскажите, в чем может быть дело?
____Eugene____
Открыл глаза
Сообщения: 47
Зарегистрирован: Вт авг 31, 2010 18:26:35

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

Сообщение ____Eugene____ »

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

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

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

В PIC16 и PIC18 нет переменных. В них есть область памяти, которая выделяется компилятором под переменные. Соответственно, всё зависит от компилятора, а не платформы.
____Eugene____
Открыл глаза
Сообщения: 47
Зарегистрирован: Вт авг 31, 2010 18:26:35

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

Сообщение ____Eugene____ »

Аlex писал(а):В PIC16 и PIC18 нет переменных

это я понимаю ,спасибо постараюсь изъяснятся точнее

Покажите пожалуйста пример создания целочисленной без знаковой переменной длиной в 64 бита
и еще хотелось бы знать какой именно компилятор "такое проглотит"
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

____Eugene____ писал(а):пример создания целочисленной без знаковой переменной длиной в 64 бита

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

unsigned long long x;
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

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

Сообщение botchin »

unsigned char a[8];

Вот здесь возникает вопрос - 1. Кто и как напишет код для "простой арифметикой" с переменной в 64 бита?
и 2. Зачем вам такие числа 2^64? Въ атомъ в Вселенную будете считать?
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

____Eugene____ писал(а):и еще хотелось бы знать какой именно компилятор "такое проглотит"
Вообще, как бы, наоборот - нам хотелось знать какой Вы компилятор используете. Тогда уже можно ответить на Ваш вопрос.
Ответить

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