I’ve seen some inexplicable behavior from our rabbit processors.
I first setup the two I/O pins I want to control.
BitWrPortI(PEDDR, &PEDDRShadow, 1, 4);
BitWrPortI(PEFR, &PEFRShadow, 0, 4);
BitWrPortI(PECR, &PECRShadow, 0, 4);
BitWrPortI(PEDDR, &PEDDRShadow, 1, 2);
BitWrPortI(PEFR, &PEFRShadow, 0, 2);
BitWrPortI(PECR, &PECRShadow, 0, 2);
Then, stepping past the following line of code, only the state of PE4 should chnage, but it is also changing the state of PE2. Why?
BitWrPortI(PEDR, &PEDRShadow, 1, 4);
Try running this code on a rabbit and watch the pin states of PE2 and PE4 with an O-scope. This appears to be a bug. Does this bug show up in an errata somewhere? Do you have any suggestions?
BitWrPortI(PEDDR, &PEDDRShadow, 1, 4);
BitWrPortI(PEFR, &PEFRShadow, 0, 4);
BitWrPortI(PECR, &PECRShadow, 0, 4);
BitWrPortI(PEDDR, &PEDDRShadow, 1, 2);
BitWrPortI(PEFR, &PEFRShadow, 0, 2);
BitWrPortI(PECR, &PECRShadow, 0, 2);
BitWrPortI(PEDR, &PEDRShadow, 0, 4);
BitWrPortI(PEDR, &PEDRShadow, 1, 4);
BitWrPortI(PEDR, &PEDRShadow, 0, 4);
BitWrPortI(PEDR, &PEDRShadow, 1, 4);
BitWrPortI(PEDR,&PEDRShadow,0,2);
BitWrPortI(PEDR,&PEDRShadow,1,2);
BitWrPortI(PEDR, &PEDRShadow, 1, 4);
BitWrPortI(PEDR,&PEDRShadow,0,2);
BitWrPortI(P:(EDR,&PEDRShadow,1,2);
BitWrPortI(PEDR,&PEDRShadow,0,2);
I appreciate any help you can offer.
Best Regards,
Steve