120 lines
3.5 KiB
C
120 lines
3.5 KiB
C
|
/**
|
||
|
Generated Main Source File
|
||
|
|
||
|
Company:
|
||
|
Microchip Technology Inc.
|
||
|
|
||
|
File Name:
|
||
|
main.c
|
||
|
|
||
|
Summary:
|
||
|
This is the main file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs
|
||
|
|
||
|
Description:
|
||
|
This header file provides implementations for driver APIs for all modules selected in the GUI.
|
||
|
Generation Information :
|
||
|
Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8
|
||
|
Device : PIC18F97J60
|
||
|
Driver Version : 2.00
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
(c) 2018 Microchip Technology Inc. and its subsidiaries.
|
||
|
|
||
|
Subject to your compliance with these terms, you may use Microchip software and any
|
||
|
derivatives exclusively with Microchip products. It is your responsibility to comply with third party
|
||
|
license terms applicable to your use of third party software (including open source software) that
|
||
|
may accompany Microchip software.
|
||
|
|
||
|
THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
||
|
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY
|
||
|
IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS
|
||
|
FOR A PARTICULAR PURPOSE.
|
||
|
|
||
|
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
||
|
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
||
|
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP
|
||
|
HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
|
||
|
THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
|
||
|
CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT
|
||
|
OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS
|
||
|
SOFTWARE.
|
||
|
*/
|
||
|
|
||
|
#include "mcc_generated_files/mcc.h"
|
||
|
#include "lcd/lcd.h"
|
||
|
#include "measure.h"
|
||
|
#include "modbus.h"
|
||
|
|
||
|
#define MAX_COL 16
|
||
|
/*
|
||
|
Main application
|
||
|
*/
|
||
|
void resetTMR0(void);
|
||
|
void endFrame(void);
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
// Initialize the device
|
||
|
SYSTEM_Initialize();
|
||
|
EPWM1_LoadDutyValue(0);
|
||
|
|
||
|
Lcd_Init();
|
||
|
adc_init();
|
||
|
modbus_init(0x80);
|
||
|
uint16_t offsetCurrent = 0;
|
||
|
offsetCurrent = measure_current(offsetCurrent);
|
||
|
|
||
|
// If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
|
||
|
// If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global and Peripheral Interrupts
|
||
|
// Use the following macros to:
|
||
|
|
||
|
// Enable the Global Interrupts
|
||
|
INTERRUPT_GlobalInterruptEnable();
|
||
|
|
||
|
// Disable the Global Interrupts
|
||
|
//INTERRUPT_GlobalInterruptDisable();
|
||
|
|
||
|
// Enable the Peripheral Interrupts
|
||
|
INTERRUPT_PeripheralInterruptEnable();
|
||
|
|
||
|
// Disable the Peripheral Interrupts
|
||
|
//INTERRUPT_PeripheralInterruptDisable();
|
||
|
uint16_t foo = 512;
|
||
|
EUSART1_SetRxInterruptHandler(resetTMR0);
|
||
|
TMR0_SetInterruptHandler(endFrame);
|
||
|
while (1)
|
||
|
{
|
||
|
foo = ++foo%1023;
|
||
|
EPWM1_LoadDutyValue(foo);
|
||
|
uint16_t valueV = measure_voltage();
|
||
|
uint16_t valueI = measure_current(offsetCurrent);
|
||
|
|
||
|
char msg[MAX_COL+1];
|
||
|
//LCD_2x16_WriteCmd(0x01); // clear display
|
||
|
|
||
|
sprintf(msg, "U = %04d [mV] ", valueV);
|
||
|
LCD_2x16_WriteMsg(msg,0);
|
||
|
|
||
|
sprintf(msg, "I = %04d [uA] ", valueI);
|
||
|
LCD_2x16_WriteMsg(msg,1);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void resetTMR0(void){
|
||
|
INTCONbits.TMR0IF = 0;
|
||
|
TMR0_Reload();
|
||
|
TMR0_StartTimer();
|
||
|
}
|
||
|
|
||
|
void endFrame(void){
|
||
|
TMR0_StopTimer();
|
||
|
modbus_analyse_and_answer();
|
||
|
|
||
|
// TODO
|
||
|
}
|
||
|
/**
|
||
|
End of File
|
||
|
*/
|