- Elektromos rásegítésű kerékpárok
- Argos: Szeretem az ecetfát
- gban: Ingyen kellene, de tegnapra
- btz: Internet fejlesztés országosan!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gerner1
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- hdanesz: Hyundai Ioniq 28kWh - Első benyomások - második felvonás
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
#90088192
törölt tag
válasz
buherton #6048 üzenetére
Köszönöm
Akkor természetesen jönnek az újabb kérdések, ha nem baj
Akkor a különböző részegységek funkcióit hogyan tudnám szeparálni.
Vagyis a mostani screen.c bol csináltam screen.h, így működik, de ha újabb .h-t hívok meg amiben egy előzőleg meghívott hardware.h benne van akkor megint ugyan az a probléma.
Tudom hülye kérdés, ilyen alap struktúra probléma, de fogalmam sincs ezekre hogyan keressek rá.
Amit el akarok erni: reszegysegenkent kulon fuggveny konyvtar vagy mi a fitty fene.(Nem tudom minek nevezzem)
Azt hogyan kellene strukturalni?Közben kutakodtam, ezt találtam.
ez a hardware.h
#include "stdio.h"
#include <string.h>
#include <math.h>
#include <p32xxxx.h>
#include <D:\Program Files (x86)\Microchip\xc32\v2.30\pic32mx\include\peripheral\legacy\i2c_legacy.h>
#define SYS_FREQ 80000000L
#define FCY SYS_FREQ
#define F_CPU SYS_FREQ
#define DLY_COUNT (F_CPU/4000000)
#define _delay_us( dly ) {unsigned int x=0,y=dly; while(y--){x=DLY_COUNT;while(x--);}}
// DEVCFG3
// USERID = No Setting
#pragma config FSRSSEL = PRIORITY_1 // SRS Select (SRS Priority 1)
#pragma config FCANIO = OFF // CAN I/O Pin Select (Alternate CAN I/O)
#pragma config FUSBIDIO = OFF // USB USID Selection (Controlled by Port Function)
#pragma config FVBUSONIO = OFF // USB VBUS ON Selection (Controlled by Port Function)
// DEVCFG2
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider (2x Divider)
#pragma config FPLLMUL = MUL_20 // PLL Multiplier (20x Multiplier)
#pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider (2x Divider)
#pragma config UPLLEN = ON // USB PLL Enable (Enabled)
#pragma config FPLLODIV = DIV_1 // System PLL Output Clock Divider (PLL Divide by 1)
// DEVCFG1
#pragma config FNOSC = FRCPLL // Oscillator Selection Bits (Fast RC Osc with PLL)
#pragma config FSOSCEN = ON // Secondary Oscillator Enable (Enabled)
#pragma config IESO = ON // Internal/External Switch Over (Enabled)
#pragma config POSCMOD = XT // Primary Oscillator Configuration (XT osc mode)
#pragma config OSCIOFNC = OFF // CLKO Output Signal Active on the OSCO Pin (Disabled)
#pragma config FPBDIV = DIV_2 // Peripheral Clock Divisor (Pb_Clk is Sys_Clk/2)
#pragma config FCKSM = CSDCMD // Clock Switching and Monitor Selection (Clock Switch Disable, FSCM Disabled)
#pragma config WDTPS = PS1048576 // Watchdog Timer Postscaler (1:1048576)
#pragma config FWDTEN = OFF // Watchdog Timer Enable (WDT Disabled (SWDTEN Bit Controls))
// DEVCFG0
#pragma config DEBUG = OFF // Background Debugger Enable (Debugger is disabled)
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select (ICE EMUC2/EMUD2 pins shared with PGC2/PGD2)
#pragma config PWP = OFF // Program Flash Write Protect (Disable)
#pragma config BWP = OFF // Boot Flash Write Protect bit (Protection Disabled)
#pragma config CP = OFF // Code Protect (Protection Disabled)
//I/O Digital analog selection
#define Analog_digital AD1PCFG
//Screen Hardware Setup
#define DISPLAY_Dir TRISE
#define S_DATA_OUT LATE
#define S_DATA_IN PORTE
#define DISPLAY_CS1 LATGbits.LATG6
#define DISPLAY_CS2 LATDbits.LATD8
#define DISPLAY_RS LATGbits.LATG9
#define DISPLAY_RW LATDbits.LATD7
#define DISPLAY_EN LATDbits.LATD11
#define DISPLAY_CS1_Direction TRISGbits.TRISG6
#define DISPLAY_CS2_Direction TRISDbits.TRISD8
#define DISPLAY_RS_Direction TRISGbits.TRISG9
#define DISPLAY_RW_Direction TRISDbits.TRISD7
#define DISPLAY_EN_Direction TRISDbits.TRISD11
//Membrane
#define JTAGEN DDPCONbits.JTAGEN
#define MEMBRANE_MUTE LATBbits.LATB13
#define MEMBRANE_MAINS LATBbits.LATB14
#define MEMBRANE_ALARM LATBbits.LATB15
#define MEMBRANE_MUTE_Direction TRISBbits.TRISB13
#define MEMBRANE_MAINS_Direction TRISBbits.TRISB14
#define MEMBRANE_ALARM_Direction TRISBbits.TRISB15
//Analog inputs
#define REF2_5 PORTBbits.RB0
#define MUX PORTBbits.RB1
#define BAT1_CURRENT PORTBbits.RB2
#define BAT2_CURRENT PORTBbits.RB3
#define CHARGER_CURRENT PORTBbits.RB4
#define CHARGER_VOLTAGE PORTBbits.RB5
#define LOAD_VOLTAGE PORTBbits.RB8
#define BRIDGE_VOLTAGE PORTBbits.RB9
#define VREQ PORTBbits.RB10
#define IREQ PORTBbits.RB11
#define REF2_5_DIRECTION TRISBbits.TRISB0
#define MUX_DIRECTION TRISBbits.TRISB1
#define BAT1_CURRENT_DIRECTION TRISBbits.TRISB2
#define BAT2_CURRENT_DIRECTION TRISBbits.TRISB3
#define CHARGER_CURRENT_DIRECTION TRISBbits.TRISB4
#define CHARGER_VOLTAGE_DIRECTION TRISBbits.TRISB5
#define LOAD_VOLTAGE_DIRECTION TRISBbits.TRISB8
#define BRIDGE_VOLTAGE_DIRECTION TRISBbits.TRISB9
#define VREQ_DIRECTION TRISBbits.TRISB10
#define IREQ_DIRECTION TRISBbits.TRISB11
void InitalizePorts_membrane()
{
JTAGEN=0;
MEMBRANE_MUTE=1;
MEMBRANE_MAINS=1;
MEMBRANE_ALARM=1;
MEMBRANE_MUTE_Direction =0 ;
MEMBRANE_MAINS_Direction =0 ;
MEMBRANE_ALARM_Direction =0 ;
};
void InitalizePorts_display()
{
S_DATA_OUT=0;
S_DATA_IN=0;
DISPLAY_Dir=0;
DISPLAY_CS1=1;
DISPLAY_CS2=1;
DISPLAY_RS=1;
DISPLAY_RW=0;
DISPLAY_EN=1;
/* Command port direction settings */
DISPLAY_CS1_Direction =0 ;
DISPLAY_CS2_Direction =0 ;
DISPLAY_RS_Direction =0 ;
DISPLAY_RW_Direction =0 ;
DISPLAY_EN_Direction =0 ;
};
void InitalizePorts_ADC()
{
Analog_digital= 0x10C0;
AD1CON2 = 0x0000;
AD1CON3 = 0x0000; // Configure ADC conversion clock
AD1CSSL = 0x0000; // No inputs are scanned. Note: Contents of AD1CSSL are ignored when CSCNA = 0
IFS1CLR = 2; //Clear ADC conversion interrupt
IEC1SET = 2; //Enable ADC conversion interrupt
AD1CON1 = 0x00E0; // SSRC bit = 111 internal counter ends sampling and starts converting
AD1CHS = 0b1111110011110000; // Connect RB2/AN2 as CH0 input in this example RB2/AN2 is the input
AD1CSSL = 0;
AD1CON3 = 0x0F00; // Sample time = 15Tad
AD1CON2 = 0x0004; // Interrupt after every 2 samples
//Analog PORT directions
REF2_5_DIRECTION =1;
MUX_DIRECTION =1;
BAT1_CURRENT_DIRECTION =1;
BAT2_CURRENT_DIRECTION =1;
CHARGER_CURRENT_DIRECTION =1;
CHARGER_VOLTAGE_DIRECTION =1;
LOAD_VOLTAGE_DIRECTION =1;
BRIDGE_VOLTAGE_DIRECTION =1;
VREQ_DIRECTION =1;
IREQ_DIRECTION =1;
};
void I2C1_Init()
{
//***** I2C1 Hardware Init *****/
//-----Set pin drive modes-----
//I2C - drive outputs so we can manually clear lines
LATDbits.LATD9 = 1; //Start with bus in idle mode - both lines high
LATDbits.LATD10 = 1;
ODCDbits.ODCD9 = 1; //Open drain mode
ODCDbits.ODCD10 = 1;
TRISDbits.TRISD9 = 0; //SCL1 output
TRISDbits.TRISD10 = 0; //SDA1 output
/***** I2C1 Module start *****/
I2C1CON = 0x1000; //Set all bits to known state
I2C1CONbits.I2CEN = 0; //Disable until everything set up. Pins will be std IO.
I2C1BRG = 0x00C6; //set up baud rate generator
I2C1CONbits.DISSLW = 0; //Enable slew rate control for 400kHz operation
//IFS1bits.MI2C1IF = 0; //Clear I2C master int flag
I2C1CONbits.I2CEN = 1; //Enable I2C
} ;
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Acer Nitro AN515-57 15.6" FHD IPS i5-11400H RTX 3060 16GB DDR4 512GB NVMe gar
- HP core i5-ös fémházas Folio 9470m kifogástalan állapotban!! AkciÓÓ!
- A legolcsóbb!!! Dell Latitude 6. gen. core i5-ös notebook olcsón!!!! AkciÓÓ!
- Olcsó Laptop! Dell Latitude 7280. I5 7300U / 8GB DDR4 / 256GB SSD
- MSI Thin GF63 12VF 15.6" FHD IPS 5-12450H RTX 4060 16GB 512GB NVMe magyar vbill gar
- Telefon felvásárlás!! Samsung Galaxy A22/Samsung Galaxy A23/Samsung Galaxy A25/Samsung Galaxy A05s
- Bomba ár! HP 255 G7 - AMD A4 I 4GB I 128SSD I HDMI I 15,6" FHD I Radeon I HDMI I W11 I Cam I Gari!
- Samsung Galaxy A52s 128GB, Kártyafüggetlen, 1 Év Garanciával
- 129 - Lenovo Legion Pro 7 (16ARX8H) - AMD Ryzen 9 7945HX, RTX 4080
- Csere-Beszámítás! RTX Számítógép PC Játékra! R5 8400F / RTX 3070Ti / 32GB DDR5 / 1TB SSD
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest