Es hat zwar etwas gedauert, aber ich habe jetzt einen Servo zum laufen gebracht.
Diese 1ms Auflösung war wohl nicht genau genug. Mit einem Timer mit 50us geht es jetzt.
Ich kann ein Servo jetzt vor- und rückwÄrts drehen lassen.
Zum stehen kann ich es aber noch nicht bringen. Wenn er eigendlich stehen müsste, fährt er rückwärts.
Muss ich beim Servo anschliessen noch etwas beachten? Ich habe den Servo einfach an einen Ausgang von Port A gehangen. Dazwichen ist noch ein 270Ohm Wiederstand (weil ich dort vorher eine LED angesteuert hatte).
Also, der Servo dreht. Aber es gibt ein Problem...
der Pic wird heiss, sehr heiss. Ich habe mir eben die Pfoten verbrannt.
Löschen oder umprogramieren kann ich den auch nicht mehr. Der scheint hinüber zu sein. Wie habe ich das hingekriegt? Das würde ich gerne wissen, um nicht noch einen PIC zu verbrennen.
Hier kommt der fertige Code:
Code:
#include <pic1687x.h>
#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))
//-------------------------------------------------------------------------
int cont=0;
//-------------------------------------------------------------
void initial(){
ADCON1=6; // PortA Pins als digital definiert
TRISA = 0x00; //Port A = Ausgang mit LEDs
TRISB = 0b00011111; //RB0 - RB4 = Eingänge, RB5 - RB7 =
//Ausgänge
//RB0 brauchen wir im Moment nicht
PORTA = 0b00000000;
PORTB = 0b00011110; // RB5-RB7 auf Low und RB1-RB4 auf High
//RB1 - RB4 auch mit Pull-up Wiederständen auf High
}//initial
//timer us=50us
int us;
void pause_1(us){
while(us){ // Schleife verlassen wenn ms=0 ist
OPTION = 3; // Vorteiler auf 16 einstellen
// 1/10M * 4 * 16 * x x=8 für 50us
TMR0=248; //256-8=248
while (TMR0); // abwarten von 50us
us--; // "50us"-1
}
};//timer
void job (){ // Servo fährt vorwärts
if(cont==0){
PORTA = 0b00000001;
pause_1(20); //timer 20 *50us = 1ms
cont=1;
}
else{
PORTA = 0b00000010;
pause_1(380); // 380 * 50us = 19ms
cont=0;
}
}//job
//-------------------------------------------------------
void main (void)
{
initial();
do{
job();
}while (1); //immer wiederholen
}//()
Viele Grüsse,
Tornado
Lesezeichen