- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- btz: Internet fejlesztés országosan!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- leslieke: leslieke farmerzsebe
- sziku69: Fűzzük össze a szavakat :)
- Meggyi001: RTX 5060 - Az új népkártya?
- hege8888: Retro Kocka Kuckó 3
- Gurulunk, WAZE?!
Hirdetés
Köszönjük a sok biztatást, támogatást! Egy rövid ideig még féláron tudsz hirdetni, előfizetni!
Ú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
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Samsung Galaxy Buds3 Pro - szárat eresztettek a babok
- Genshin Impact (PC, PS4, Android, iOS)
- Kutya topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Motoros topic
- Újabb videón a Mafia: The Old Country
- Azonnali VGA-s kérdések órája
- A fociról könnyedén, egy baráti társaságban
- Battlefield 6
- Telekom mobilszolgáltatások
- További aktív témák...
- Eladó Apple Watch Series 4 GPS 40mm Szürke
- Bomba ár! Lenovo ThinkPad T480s - i5-8GEN I 8GB I 256GB I 14" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! HP EliteBook 845 G7 - Ryzen 5 4650U I 16GB I 512SSD I 14" FHD Touch I Cam I W11 I Gari!
- Lenovo Thinkpad P52 15.6" Core i9 8950HK Quadro P3200 6GB 32GB DDR4 RAM 1TB NVME SSD
- Latitude 5520 27% 15.6" FHD IPS érintő i7-1185G7 MX450 16GB 512GB NVMe ujjolv IR kam gar
- DELL Precision 7540 i7-9850H Quadro T2000 16GB 512GB 1 év garancia
- Designer 4K Monitor - BenQ PD-3200-U
- Apple iPhone 12 Pro Max /128GB / Gyári független / 12Hó Garancia / 83% aku
- Akció! Gigabyte Vision Z590 D Wi-Fi Alaplap! LGA 1200!
- BESZÁMÍTÁS! Asus TUF A620M R7 7700 32GB DDR5 1TB SSD RX 6800 XT 16GB ZALMAN I3 NEO Gigabyte 750W
Állásajánlatok
Cég: FOTC
Város: Budapest