Hallo RoboterNetz Forum,
vorab, ich bin in dieser Materie ein absoluter Newbie und möchte eine Led zum laufen bringen welche sich für 1 Sek. Ein und 1 Sek. Ausschaltet.
Das programm läuft bereits, aber ich hab bemerkt das die Led nicht konstant 1 Sekunde leuchtet, es gibt meistens kleine abweichungen so in ms Bereich. Verglichen habe ich es auf 0815 art mit einer Stoppuhr. Gibt es eine Möglichkeit in der Enwicklungsumgebung festzustellen mit welcher Geschwindigkeit die Led blinkt.
Oder liegt es daran das der PIC Oszi nicht stabil ist?
ps. Das Programm habe ich aus dem Netz hab einiges für meine bedürfnisse angepasst.
Meine Entwicklungsumgebung ist das MPLAB mit Hi Tech C18 Compiler
--------------------------------------------------------------------------------
hier ist wäre der Code.
Code:#include <htc.h> //Chip Settings __CONFIG(1,0x0200); __CONFIG(2,0X1E1F); __CONFIG(3,0X8100); __CONFIG(4,0X00C1); __CONFIG(5,0XC00F); unsigned char counter=0;//Overflow counter void main() { //Setup Timer0 T0PS0=1; //Prescaler is divide by 256 T0PS1=1; T0PS2=1; PSA=0; //Timer Clock Source is from Prescaler T0CS=0; //Prescaler gets clock from FCPU (5MHz) T08BIT=1; //8 BIT MODE TMR0IE=1; //Enable TIMER0 Interrupt PEIE=1; //Enable Peripheral Interrupt GIE=1; //Enable INTs globally TMR0ON=1; //Now start the timer! //Set RB1 as output because we have LED on it TRISB&=0B11111101; while(1); //Sit Idle Timer will do every thing! } //Main Interrupt Service Routine (ISR) void interrupt ISR() { //Check if it is TMR0 Overflow ISR if(TMR0IE && TMR0IF) { //TMR0 Overflow ISR counter++; //Increment Over Flow Counter if(counter==15) { //Toggle RB1 (LED) if(RB1==0) RB1=1; else RB1=0; counter=0; //Reset Counter } //Clear Flag TMR0IF=0; } }







Zitieren


Lesezeichen