mirror of
https://github.com/clockworkpi/PicoCalc.git
synced 2026-03-20 11:02:37 +01:00
add pico_multi_booter code
This commit is contained in:
134
Code/pico_multi_booter/picomite/Include.h
Normal file
134
Code/pico_multi_booter/picomite/Include.h
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* @cond
|
||||
* The following section will be excluded from the documentation.
|
||||
*/
|
||||
// ****************************************************************************
|
||||
//
|
||||
// Main code
|
||||
//
|
||||
// ****************************************************************************
|
||||
#ifndef _INCLUDE_H
|
||||
#define _INCLUDE_H
|
||||
|
||||
|
||||
|
||||
typedef unsigned char Bool;
|
||||
#define True 1
|
||||
#define False 0
|
||||
|
||||
// NULL
|
||||
#ifndef NULL
|
||||
#ifdef __cplusplus
|
||||
#define NULL 0
|
||||
#else
|
||||
#define NULL ((void*)0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// I/O port prefix
|
||||
#define __IO volatile
|
||||
|
||||
// request to use inline
|
||||
#define INLINE __attribute__((always_inline)) inline
|
||||
|
||||
// avoid to use inline
|
||||
#define NOINLINE __attribute__((noinline))
|
||||
|
||||
// weak function
|
||||
#define WEAK __attribute__((weak))
|
||||
|
||||
// align array to 4-bytes
|
||||
#define ALIGNED __attribute__((aligned(4)))
|
||||
|
||||
// default LED pin
|
||||
#define LED_PIN 25
|
||||
|
||||
// nop instruction
|
||||
INLINE void nop()
|
||||
{ __asm volatile (" nop\n"); }
|
||||
|
||||
// compiler barrier
|
||||
INLINE void cb()
|
||||
{ __asm volatile ("" ::: "memory"); }
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#define BIT(pos) (1UL<<(pos))
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Includes
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include <stdio.h>
|
||||
#include "pico/stdlib.h"
|
||||
#include "pico/multicore.h"
|
||||
#include <string.h>
|
||||
#include "hardware/divider.h"
|
||||
#include "hardware/dma.h"
|
||||
#include "hardware/irq.h"
|
||||
|
||||
#include "hardware/gpio.h"
|
||||
#include "pico/binary_info.h"
|
||||
#include "configuration.h"
|
||||
#include "hardware/watchdog.h"
|
||||
#include "hardware/clocks.h"
|
||||
#include "hardware/flash.h"
|
||||
#include "hardware/adc.h"
|
||||
#include "hardware/exception.h"
|
||||
#include "hardware/structs/systick.h"
|
||||
#include "hardware/structs/scb.h"
|
||||
#include "hardware/vreg.h"
|
||||
#include <pico/bootrom.h>
|
||||
#include "hardware/irq.h"
|
||||
#include "hardware/pio.h"
|
||||
#ifndef HDMI
|
||||
#include "PicoMiteVGA.pio.h"
|
||||
#include "PicoMiteI2S.pio.h"
|
||||
#endif
|
||||
#ifndef USBKEYBOARD
|
||||
#include "pico/unique_id.h"
|
||||
#include "class/cdc/cdc_device.h"
|
||||
#endif
|
||||
|
||||
|
||||
// ****************************************************************************
|
||||
//
|
||||
// QVGA configuration
|
||||
//
|
||||
// ****************************************************************************
|
||||
// port pins
|
||||
// GP22... VGA
|
||||
// GP16 ... VGA HSYNC/CSYNC synchronization (inverted: negative SYNC=LOW=0x80, BLACK=HIGH=0x00)
|
||||
// GP17 ... VSYNC
|
||||
|
||||
// QVGA port pins
|
||||
#define QVGA_GPIO_FIRST PinDef[Option.VGA_BLUE].GPno // first QVGA GPIO
|
||||
#define QVGA_GPIO_NUM 4 // number of QVGA color GPIOs, without HSYNC and VSYNC
|
||||
#define QVGA_GPIO_LAST (QVGA_GPIO_FIRST+QVGA_GPIO_NUM-1) // last QVGA GPIO
|
||||
#define QVGA_GPIO_HSYNC PinDef[Option.VGA_HSYNC].GPno // QVGA HSYNC/CSYNC GPIO
|
||||
#define QVGA_GPIO_VSYNC (QVGA_GPIO_HSYNC+1) // QVGA VSYNC GPIO
|
||||
|
||||
|
||||
// QVGA display resolution
|
||||
//#define FRAMESIZE (38400) // display frame size in bytes (=38400)
|
||||
|
||||
// 126 MHz timings
|
||||
#define QVGA_TOTAL_F 4000// total clock ticks (= QVGA_HSYNC + QVGA_BP + WIDTH*QVGA_CPP[1600] + QVGA_FP)
|
||||
#define QVGA_HSYNC_F 480 // horizontal sync clock ticks
|
||||
#define QVGA_BP_F 240 // back porch clock ticks
|
||||
#define QVGA_FP_F 80 // front porch clock ticks
|
||||
|
||||
// QVGA vertical timings
|
||||
#define QVGA_VTOT_F 525 // total scanlines (= QVGA_VSYNC + QVGA_VBACK + QVGA_VACT + QVGA_VFRONT)
|
||||
#define QVGA_VSYNC_F 2 // length of V sync (number of scanlines)
|
||||
#define QVGA_VBACK_F 33 // V back porch
|
||||
#define QVGA_VACT_F 480 // V active scanlines (= 2*HEIGHT)
|
||||
#define QVGA_VFRONT_F 10 // V front porch
|
||||
|
||||
|
||||
#endif // _MAIN_H
|
||||
/* @endcond */
|
||||
Reference in New Issue
Block a user