Помогите с разобраться с прошивкой

Поклонники продукции Microchip Technology Inc тусуются тут.
dmejer
Родился
Сообщения: 7
Зарегистрирован: Вт июл 18, 2017 10:25:35

Помогите с разобраться с прошивкой

Сообщение dmejer »

Здравстуйте. Нашёл интересный проект на github, плату я собрал но вот с прошивкой разобраться не могу.
На странице этого проекта есть только фаил с названием main.c


вот его содержание:
Спойлер

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

/*
 * File:   main.c
 * Author: Petr Kortanek, i4wifi a.s.
 *
 * Created on 23rd November 2013
 *
 * 2014-01-11 - RA3 (MCLR, prog 1) input for button
 * 2014-04-09 - RA0 (ICSPDAT, prog 4) potentiometer input
 * 2014-08-11 - fixed PWM duty (+10bit), RA1 (ICSPCLK, prog 5) input switch 6A / 10A
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

#define _XTAL_FREQ 4000000
#define Button_pressed PORTAbits.RA3

#pragma config LVP = OFF, MCLRE = OFF, BOREN = OFF, PLLEN = OFF, FOSC = INTOSC, WDTE = OFF, CP = OFF, PWRTE = OFF

char latcha = 0;
char latchc = 0;
char pilot_value = 255;
char pot_value = 255;
char pot_value2 = 255;
char adchannel = 2;
char measure_nth = 0;
char button_pressed_counter = 0;
char amps = 16;
char amps_to_set = 16;
char setbypot = 0;
short duty = 500; //50%

//attached to RC1
void relayon() {
  latchc = latchc | 0b00000011;//RC1+backup RC0
  PORTC = latchc;
}
void relayoff() {
  latchc = latchc & 0b11111100;//RC1+backup RC0
  PORTC = latchc;
}

//attached to RC2
void ledon() {
  latchc = latchc | 0b00000100;
  PORTC = latchc;
}
void ledoff() {
  latchc = latchc & 0b11111011;
  PORTC = latchc;
}

void button_flashing() {
  for (int i=0; i<20; i++) {
    ledon();
    __delay_ms(30);
    ledoff();
    __delay_ms(30);
  }
}

void setAmps() {
  setbypot = 0;

  //we get current limit from the pot
  if (pot_value <= 222) { //<4.4V, amps 6-80
    amps = 6 + (222-pot_value)/3;
    setbypot = 1;
  }
  //we get current limit from the "pot2" (set 6A / 10A)
  if (pot_value2 <= 222) { //<4.4V,
    amps = 10;
    if (pot_value2 <= 25) { //short => amps 6 ~ >3kOhm
      amps = 6;
    }
    setbypot = 1;
  }
  if (setbypot == 0) {
    amps = amps_to_set;
  }
  //minimum
  if (amps < 5)
    amps = 5;
  //maximum
  if (amps > 80)
    amps = 80;
  
  //compute PWM duty
  if (amps < 51)
    duty = 1000 - (100 * amps) / 6;
  else
    duty = 1000 - (4*amps+640);

  //set PWM output 10bit
  CCPR1L = duty >> 2;
  duty &= 0b00000011;
  duty <<= 4;
  CCP1CON = duty + 12; //1100

}

void main() {

    OSCCON = 0b01101010; // 4MHz

    TRISA = 0b11111111; //pilot detect RA2, button detect RA3, pot RA0, pot2 RA1
    TRISC = 0b11110000; //relay RC1 (+backup RC0), LED RC2, pilot RC3
    latcha = 0;
    latchc = 0;
    PORTA = latcha;
    PORTC = latchc;

    ADCON1 = 0b01100000; // f/64 4MHz, 16 us
    ADON = 1; //channel: RA2=PWM detect, RA0=pot value, RA1=pot2 value
    ADCON0bits.CHS = 2;

    //pilot PWM RC3
    PSTR1CONbits.STR1C = 1;
    APFCON1bits.P1CSEL = 0; //P1C function is on RC3
    
    PR2 = 249 ;//period value
    CCP1CON = 0b00001100; //PWM mode

    OPTION_REG = 0b00000001; //pullups and TMR0
    WPUAbits.WPUA3 = 1; //button pressed detect - MCLR
    WPUAbits.WPUA1 = 1;  //6A / 10A input RA1

    //T2CON timer ON + prescaler 4
    T2CON = 0b00000101 ;

    //INTCON = 0b11100000;
    GIE = 1;
    PEIE = 1;
    
    ADIE = 1;
    TMR2IE = 1;
    
    setAmps();

    while(1) {

        //MODE set current
        if(Button_pressed == 0) {
          button_pressed_counter++;
          //setting mode entered - rapid led flashing
          if (button_pressed_counter == 5) {
            button_flashing();
            amps_to_set = 0;
          }
          if (button_pressed_counter >= 5) {
            amps_to_set++;
            setAmps();
            ledoff();
            __delay_ms(300);
            ledon();
            __delay_ms(300);
          } else {
            __delay_ms(800);
          }

        //MODE normal operation
        } else {
          if(button_pressed_counter>=5) {
            //current setting mode exit confirmation
            button_flashing();
          }
          button_pressed_counter = 0;

          //car connected (pilot pulled down <8V)
          if(pilot_value < 111) {
            relayon();
            ledon();
            __delay_ms(800);

          } else {
            ledon();
            __delay_ms(30);
            relayoff();
          }
          ledoff();
          __delay_ms(300);
        }
    }
}

void interrupt isr() {

  //channel: RA2=PWM detect or RA0=pot value
  if (ADIF) {
    if (adchannel == 0) {
      pot_value = ADRESH;
      setAmps();
      adchannel = 1;
    } else if (adchannel == 1) {
      pot_value2 = ADRESH;
      setAmps();
      adchannel = 2;
    } else   {
      pilot_value = ADRESH;
      adchannel = 0;
    }
    ADCON0bits.CHS = adchannel;
    ADIF = 0;
  }

  if (TMR2IF) {
    TMR2IF = 0;
    //voltage must be measured when voltage is "up"
    measure_nth++;
    if (measure_nth>98) {
      __delay_us(950);
      GO_nDONE = 1;
      measure_nth = 0;
    }
  }
}
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите с разобраться с прошивкой

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

А вопрос то в чём ?
Реклама
dmejer
Родился
Сообщения: 7
Зарегистрирован: Вт июл 18, 2017 10:25:35

Re: Помогите с разобраться с прошивкой

Сообщение dmejer »

Вопрос в том- является ли это самой прошивкой ?
В программировании к сожалению пока вообще не разбираюсь . По моим догадкам это не скомпилированная прошивка.
И может ли кто-то помочь скомпилировать?
Аватара пользователя
AlekseyEnergo
Модератор
Сообщения: 2117
Зарегистрирован: Пт янв 11, 2013 19:19:26
Откуда: Санкт-Петербург

Re: Помогите с разобраться с прошивкой

Сообщение AlekseyEnergo »

Ваши догадки правильные.
=========
Правила Форума ЗДЕСЬ _____ Правила раздела БАЗАР ЗДЕСЬ _____ Если вы продаете, прочтите ЗДЕСЬ

Редко появляюсь. Если вопрос не личного характера пользуйтесь кнопкой "!".
Реклама
Эиком - электронные компоненты и радиодетали
dmejer
Родился
Сообщения: 7
Зарегистрирован: Вт июл 18, 2017 10:25:35

Re: Помогите с разобраться с прошивкой

Сообщение dmejer »

подскажите тогда как его скомпилировать , какой программой.
Или может кто-то сможет помочь скомпилировать?
Прошивка под PIC16f1824.
Заранее спасибо.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите с разобраться с прошивкой

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

Прошивка :
123.hex
(4 КБ) 579 скачиваний
Проект :
123.rar
(117.09 КБ) 402 скачивания
Реклама
dmejer
Родился
Сообщения: 7
Зарегистрирован: Вт июл 18, 2017 10:25:35

Re: Помогите с разобраться с прошивкой

Сообщение dmejer »

Спасибо огромное)). На днях куплю программатор попробую прошить, а подскажите с помощью какой программы компилировали?

Добавлено after 1 minute 33 seconds:
И подойдёт ли Pic kit 3 программатор ?
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Помогите с разобраться с прошивкой

Сообщение Zhuk72 »

Компилируют МПЛабом с Си компилятором, например ХС8.
Конечно подойдет, родной же программатор.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
dmejer
Родился
Сообщения: 7
Зарегистрирован: Вт июл 18, 2017 10:25:35

Re: Помогите с разобраться с прошивкой

Сообщение dmejer »

Спасибо вам ).
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Помогите с разобраться с прошивкой

Сообщение -=Vovka=- »

[uquote="dmejer",url="/forum/viewtopic.php?p=3147128#p3147128"]И подойдёт ли Pic kit 3 программатор ?[/uquote]
Пробовал: PicKit2 этот МК не видит, так что только PicKit3
Аватара пользователя
abc
Друг Кота
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Помогите с разобраться с прошивкой

Сообщение abc »

Видит.
СпойлерИзображение
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Помогите с разобраться с прошивкой

Сообщение -=Vovka=- »

Не правильно выразился: в списке видит, но при подключении не видит! По крайней мере у меня лайт-версия пиккита-2
Аватара пользователя
AlekseyEnergo
Модератор
Сообщения: 2117
Зарегистрирован: Пт янв 11, 2013 19:19:26
Откуда: Санкт-Петербург

Re: Помогите с разобраться с прошивкой

Сообщение AlekseyEnergo »

[uquote="-=Vovka=-",url="/forum/viewtopic.php?p=3147643#p3147643"]По крайней мере у меня лайт-версия пиккита-2[/uquote]

Тогда чего хаить нормальный программатор?
На зеркало неча пенять, коли рожа крива - русская пословица, означающая: Если сам виноват, то не перекладывай вину на других.
=========
Правила Форума ЗДЕСЬ _____ Правила раздела БАЗАР ЗДЕСЬ _____ Если вы продаете, прочтите ЗДЕСЬ

Редко появляюсь. Если вопрос не личного характера пользуйтесь кнопкой "!".
Аватара пользователя
abc
Друг Кота
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Помогите с разобраться с прошивкой

Сообщение abc »

Более того, он не только их видит, но и нормально программирует.
1823, 1825, 1829 - с этими работаю постоянно. И тоже самодельный лайт.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Помогите с разобраться с прошивкой

Сообщение -=Vovka=- »

а у меня не захотел - пришлось подключать к пиккит3
Аватара пользователя
samand587
Поставщик валерьянки для Кота
Сообщения: 2312
Зарегистрирован: Вт фев 21, 2017 18:59:21
Откуда: Седой Урал

Re: Помогите с разобраться с прошивкой

Сообщение samand587 »

Уважаемые! Помогите, пожалуйста, собрать прошивку в файле .hex из приведенного архива. Прошиваться будет PIC16F628A. Заранее спасибо! :beer:

З.Ы. Сам пытался, но понял что :facepalm:
Вложения
freescale.zip
(4.26 КБ) 266 скачиваний
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Помогите с разобраться с прошивкой

Сообщение otest »

Как минимум не хватает 2х файлов.
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
Аватара пользователя
samand587
Поставщик валерьянки для Кота
Сообщения: 2312
Зарегистрирован: Вт фев 21, 2017 18:59:21
Откуда: Седой Урал

Re: Помогите с разобраться с прошивкой

Сообщение samand587 »

[uquote="otest",url="/forum/viewtopic.php?p=3817877#p3817877"]Как минимум не хватает 2х файлов.[/uquote]

Спасибо за оперативный ответ! :beer: Значит вопрос снят! :facepalm:
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Помогите с разобраться с прошивкой

Сообщение NStorm »

samand587, а при чем здесь PIC, если выложенная прошивка для совсем другого контроллера MC68HC908QY1 ? Там же это прям написано сверху. Да и архив ваш называется Freescale по названию производителя той архитектуры (ныне NXP). Это 68HC08, совсем не PIC.
Аватара пользователя
samand587
Поставщик валерьянки для Кота
Сообщения: 2312
Зарегистрирован: Вт фев 21, 2017 18:59:21
Откуда: Седой Урал

Re: Помогите с разобраться с прошивкой

Сообщение samand587 »

NStorm, Вы правы! Выложил немножечко не то! :dont_know: :music: Вот правильная прошивка и корректировок не требует! :)) Вот для этого http://robocua.blogspot.com/2014/01/eas ... clock.html :solder:
Вложения
pic628(1).zip
(3.64 КБ) 246 скачиваний
Ответить

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