[abc80] mer PIC32 - det funkar! (Re: PIC32 igen...)

juhasz at abc.se juhasz at abc.se
Sön Sep 12 15:11:52 PDT 2010


Hej igen på listan!

Nu har jag fått både input och output att fungera direkt mellan ABC80 och
pic32. allt löste sig efter att jag satt inp-interruptets prioritet till
nivå 7 (ipl7) funkar även inp till abc80:n (med open-drain-utgångar på
pic32:an). Jag håller med Peter om att PMP-interfacet kanske är lite
elegantare, men kräver ju som sagt en extra krets. detta funkar direkt...

jag har alltså kopplat INP1-ledningen till INT2 på picen och
OUT2-ledningen till en av change-notification-pinnarna och använt
rutinerna nedan. Jag simulerar en 256-byte buffer på picen, och det funkar
både att läsa och skriva den med OTIR och INIR (det snabbaste jag kan
komma på...)

Skall städa upp koden lite och lägga upp en bättre beskrivning på nån
hemsida. Det fina med den här lösningen är att PMP-interfacet är ledigt, t
ex för att kunna göra DMA......

Robert


--------------------------------------------------------------------
// routines to connect ABC80 to pic32 - PORTE is open-drain and connected
to ABC bus, and INP1 is connected to INT2 and OUT2 to a change
notification pin
//
//
//
// handle INP1 direkt ansluten till INT2
void __ISR(_EXTERNAL_2_VECTOR, ipl7) Int2Handler(void)
{
int i;
//time delays are inserted here to see 1) how fast we need to set the data
pins
// and 2) how long we need/can hold the data pins

	i = 7;		// Time delay 7 seem the highest possible value
	while(i) {i--;}
PORTE=buf[bufpek];
	i = 200;		// Time delay 200 seem about the highest possible value
	while(i) {i--;}
PORTE=255;

bufpek++;
mINT2IntEnable(FALSE); //INT2 disable
mINT2ClearIntFlag();
mINT2IntEnable(TRUE); //INT2 enable
}
//
//
// configure the CN interrupt handler - denna räcker att köra som ipl2!
void __ISR(_CHANGE_NOTICE_VECTOR, ipl2) ChangeNotice_Handler(void)
{
    unsigned int temp,data;

    temp = mPORTBRead();



	 if ((temp & 2)==0) //OUT2
	{
	buf[bufpek++]=mPORTERead();
	}

    // clear the interrupt flag
    mCNClearIntFlag();
}


> On 09/07/2010 02:18 PM, H. Peter Anvin wrote:
>>
>> RST# och C2# är rena kontrollsignaler så kan gå till en vanlig GPIO.
>>
>
> Skulle ha varit RST#, C1# och C3#; och detta gäller specifikt för en
> diskcontroller (C2# och C4# används överhuvudtaget inte.)
>
> 	-hpa
>



More information about the ABC80 mailing list