modified: source/pinport.c

modified:   source/pinport.h
	-adding some compatibility between boards.
	-purple and green should work under final version commands.
	-making some commands lower case which aren't recommended.
This commit is contained in:
Paul Molloy 2016-11-23 02:23:17 -06:00
parent b1ba1c4432
commit aca6bb8960
2 changed files with 47 additions and 31 deletions

View File

@ -2,7 +2,7 @@
#include "logic.h"
#include "pinport.h"
//This file is generated from pinport.h
//This file was created based on pinport.h
//the close relationship between these two files must be kept in mind when making changes.
//This file is also very dependent on macro definitions in host app.
//the host app pinport.h was generated from this file, so any changes here must be forwarded.
@ -54,7 +54,6 @@ uint8_t pinport_macro( uint8_t opcode )
case 12: M2_OP(); break;
case 13: M2_LO(); break;
case 14: M2_HI(); break;
//TODO read M2 PIN as input
case 15: ROMSEL_IP(); break;
case 16: ROMSEL_OP(); break;
@ -73,13 +72,11 @@ uint8_t pinport_macro( uint8_t opcode )
//give each def different version numbers to detect errors
//where command given to board which doesn't have that function
#ifdef p_AXL //purple boards only
case 27: p_AXL_IP(); break;
case 28: p_AXL_OP(); break;
#ifdef PURPLE_KAZZO //purple boards only
case 27: p_AXL_ip(); break; //Don't use these, use software tied together versions instead.
case 28: p_AXL_op(); break; //Increases compatibility between versions
case 29: p_AXL_lo(); break; //Don't recommend calling lo/hi, use CLK instead
case 30: p_AXL_hi(); break;
//AXL_CLK assumes AXL was previously left in default low state
//XX: AXL_CLK() p_AXL_hi(); p_AXL_lo(); //same name and convention on final design
#else //Green and final design
case 31: FREE_IP(); break;
case 32: FREE_OP(); break;
@ -102,19 +99,18 @@ uint8_t pinport_macro( uint8_t opcode )
case 45: CICE_LO(); break;
case 46: CICE_HI(); break;
#ifdef g_AXHL
#ifdef GREEN_KAZZO
case 47: g_AXHL_IP(); break;
case 48: g_AXHL_OP(); break;
case 49: g_AXHL_lo(); break; //Don't recommend calling these as AXHL should be left low
case 50: g_AXHL_hi(); break; //That way AXHL_CLK(); is always effective
//XX: AXHL_CLK() g_AXHL_hi(); g_AXHL_lo();
#else //purple and final design
#endif
//purple and final design, safe to pretend green is similar due to software AHL/AXL CLK
case 51: AHL_IP(); break;
case 52: AHL_OP(); break;
case 53: AHL_lo(); break; //Don't recommend calling these as AHL should be left low
case 54: AHL_hi(); break; //That way AHL_CLK(); is always effective
//XX: AHL_CLK() AHL_hi(); AHL_lo();
#endif
case 54: AHL_hi(); break; //That way AHL_CLK(); is always effective.
//also helps maintain validity of software AHL/AXL CLK
//============================
//AUX PORTD
@ -156,37 +152,39 @@ uint8_t pinport_macro( uint8_t opcode )
case 79: BL_LO(); break;
case 80: BL_HI(); break;
#ifndef pg_XOE //FINAL_DESIGN
//#ifndef pg_XOE //FINAL_DESIGN
//purple and green have versions of these which tie two pins together in software
case 81: AXLOE_IP(); break;
case 82: AXLOE_OP(); break;
//Caution AXL_CLK() relies on EXPFF_OP() to be called beforehand
// Think of it like you must enable the output before you can clock it.
// Floating EXPFF also happens to clock it. Think of it like it looses it's value if disabled.
//XX: AXL_CLK() EXPFF_FLT(); EXPFF_OP(); //same name and convention as purple
#else //purple and green versions
case 83: XOE_IP(); break;
case 84: XOE_OP(); break;
#ifdef PURPLE_KAZZO or GREEN_KAZZO //purple and green versions
case 83: XOE_ip(); break; //Don't call these, use AXLOE instead
case 84: XOE_op(); break;
case 85: XOE_lo(); break;
case 86: XOE_hi(); break;
#endif
//Same definition on all board versions
//Only need to be cognizant that AXL_CLK won't work if EXPFF_FLT was called beforehand
//This is only an issue on final design, so an error here should only cause probs on final design
//Net effect is it it works on final design should be fine on other versions which is the goal
case 85: EXPFF_OP(); break; //FF /OE pin low->enable o/p
case 86: EXPFF_FLT(); break; //FF /OE pin high->disable o/p
case 87: EXPFF_OP(); break; //FF /OE pin low->enable o/p
case 88: EXPFF_FLT(); break; //FF /OE pin high->disable o/p
//AXL_CLK this is similar between purple and green versions, just on a different pin.
//green boards don't have an AXL_CLK nor a AHL_CLK, as the two are combined.
//green boards must resolve this in software storing value of FF's so can have the effect
//of only clocking one of them.
//#ifdef g_AXHL
//#ifdef GREEN_KAZZO
//case XX: AXHL_CLK(); break; //don't want to call this as software AXL/AHL don't track
//case 87: software_AXL_CLK(); break;
//case 88: software_AHL_CLK(); break;
//#else
//these two cases covers all designs with macro calling sofware versions for green board.
case 87: AXL_CLK(); break;
case 88: AHL_CLK(); break;
case 89: AXL_CLK(); break;
case 90: AHL_CLK(); break;
//#endif
//these work fine in hardware for purple and final.
//green had to separate these two with software.

View File

@ -11,7 +11,7 @@ void software_AXL_CLK();
//can be differentiated by solder mask color.
//Final version is default and doesn't need any defines
//#define PURPLE_KAZZO
//#define GREEN_KAZZO
#define GREEN_KAZZO
//=======================================================
//History of PCB revsisions produced by InfiniteNesLives
@ -244,8 +244,8 @@ void software_AXL_CLK();
#define PRGRW_RD() CTL_OUT |= (1<<PRGRW) //HI for reads
#ifdef PURPLE_KAZZO
#define p_AXL_IP() CTL_DDR &= ~(1<<p_AXL)
#define p_AXL_OP() CTL_DDR |= (1<<p_AXL)
#define p_AXL_ip() CTL_DDR &= ~(1<<p_AXL) //Don't use these, use software tied together versions instead.
#define p_AXL_op() CTL_DDR |= (1<<p_AXL) //Increases compatibility between versions
#define p_AXL_lo() CTL_OUT &= ~(1<<p_AXL) //Don't recommend calling lo/hi, use CLK instead
#define p_AXL_hi() CTL_OUT |= (1<<p_AXL)
//AXL_CLK assumes AXL was previously left in default low state
@ -280,6 +280,11 @@ void software_AXL_CLK();
#define AXHL_CLK() g_AXHL_hi(); g_AXHL_lo();
#define AHL_CLK() software_AHL_CLK();
#define AXL_CLK() software_AXL_CLK();
//can ~safely consider this pin as if it were only AHL due to software AHL/AXL CLK
#define AHL_IP() g_AXHL_IP();
#define AHL_OP() g_AXHL_OP();
#define AHL_lo() g_AXHL_lo();
#define AHL_hi() g_AXHL_hi();
#else //purple and final design
#define AHL_IP() CTL_DDR &= ~(1<<AHL)
#define AHL_OP() CTL_DDR |= (1<<AHL)
@ -370,8 +375,21 @@ void software_AXL_CLK();
// Floating EXPFF also happens to clock it. Think of it like it looses it's value if disabled.
#define AXL_CLK() EXPFF_FLT(); EXPFF_OP(); //same name and convention as purple
#else //purple and green versions
#define XOE_IP() AUX_DDR &= ~(1<<pg_XOE)
#define XOE_OP() AUX_DDR |= (1<<pg_XOE)
#define EXPFF_OP() AUX_OUT &= ~(1<<pg_XOE) //FF /OE pin low->enable o/p
#define EXPFF_FLT() AUX_OUT |= (1<<pg_XOE) //FF /OE pin high->disable o/p
#define XOE_ip() AUX_DDR &= ~(1<<pg_XOE) //don't use these, use software tied together AXLOE instead
#define XOE_op() AUX_DDR |= (1<<pg_XOE)
#define XOE_lo() AUX_OUT &= ~(1<<pg_XOE) //FF /OE pin low->enable o/p
#define XOE_hi() AUX_OUT |= (1<<pg_XOE) //FF /OE pin high->disable o/p
//Final version ties XOEn and AXL to same pin, we can do this in software to make other ver behave similarly
#endif
#ifdef PURPLE_KAZZO
#define AXLOE_IP() XOE_ip(); p_AXL_ip();
#define AXLOE_OP() XOE_op(); p_AXL_op();
#define EXPFF_OP() XOE_lo(); p_AXL_lo();
#define EXPFF_FLT() XOE_hi(); p_AXL_hi();
#endif
#ifdef GREEN_KAZZO //green can't tie AXL, just don't worry about clocking effect while enabling/disabling
#define AXLOE_IP() XOE_ip(); //run risk that AHL isn't O/P because AXL was made O/P instead
#define AXLOE_OP() XOE_op(); //sofware AXL/AHL clock covers this case though.
#define EXPFF_OP() XOE_lo();
#define EXPFF_FLT() XOE_hi();
#endif