8bit Zahl seriell ausgeben...
Hallo zusammen,
ich arbeite gerade an einem Projekt, 8bit Zahlen seriell über den PortA ausgeben muss.
Ich arbeite mit einem PIC18F452 mit einem 10MHz Oszi und habe die PLL aktiviert, das heisst also mit 40MHz (10MHz effektiv).
Mit meinem Code komme ich gerade auf lächerliche 200kHz und interessant wäre da schon um die 1MHz.
1MHz wäre nähmlich die max. Übertragungsgeschwindigkeit zu dem Endgeräte. (500ns Datenvorbereitung und 500ns Clockimpuls)
Deshalb auch die NOPs im code
Ich hoffe ihr könnt mir da mal Tips geben wie ich mein Prog schneller machen kann.
Vielen Dank schon im voraus
Hier noch mein Quellcode
bitmask --> muss zuerst den msb ausgeben darum '10000000'
writeBlock --> ist die 8bit zahl welche ich ausgeben muss
setData ist deklariert als bit
PIC_OUTPUT_RF_DATA ist fix gegeben durch PORTA RA2
PIC_OUTPUT_RF_CLK1 ist fix gegeben durch PORTA RA1
int i;
UINT8 bitmask = 0x80;
for(i = 0 ; i < 8 ; i++ )
{
if((writeBlock & bitmask) == bitmask)
{
setData = 1;
}
else
{
setData = 0;
}
PIC_OUTPUT_RF_DATA = setData;
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
PIC_OUTPUT_RF_CLK1 = 1;
writeBlock <<= 1;
PIC_OUTPUT_RF_CLK1 = 0;
}