Hallo!
ich verwende einen PIC16F877, und ich möchte damit einen servo ansteuern. ich habe ein c programm geschriebn aber iregendwie funktioniert das nicht so wirklich wie ich mir das vorstelle!! (servo zuckt nur)
ich sende vom PC über die serielle Schnittstelle ein zeichen zum pic, je nachdem welches zeichen das ist soll der servo ganz nach links drehen oda in die mittelstellung oda ganz nach rechts drehen.
es soll ein interrupt ausgelöst werden wenn der pic etwas über RS232 empfängt!
kann mir bitte jemand sagen wo der fehler liegt!
oder mach ich das komplett falsch?? bitte um vorschläge , anmerkungen etc.
Code:
++++++++++++++++++++++++++++++++++++++++++
#include <16F877a.h>
#include <stdlib.h>
#use delay (clock=4000000)
#fuses XT, NOWDT, NOPROTECT, NOLVP
#use RS232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
long position = 1000;
char empfangen;
// interrupt service routine
#INT_RDA NOCLEAR
long RS232_isr()
{
empfangen = getc();
if(empfangen == 'a')
position = 1000;
else if(empfangen == 's')
position = 1500;
else if(empfangen == 'd')
position = 2000;
printf("\f\rServo Position: %ld", position);
return position;
}
//*****************************
void main (void)
{
int8 i;
output_low(PIN_C2);
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
while(true)
{
output_high(PIN_C2);
delay_us(position);
output_low(PIN_C2);
delay_us(19000);
}
}
++++++++++++++++++++++++++++++++++++++++++
Geh', macht doch CODE-Tags rein ! (PicNick)
ich danke schon im Voraus
Mfg doolitle
Lesezeichen