Hallo erstmal an alle vl. könnt ihr mir weiter helfen bin ziemlich neu in Sachen programmieren von PIC´s.
Also ich programmiere ein Simulationsprogramm wo man verschiedene LOW Flanken zeitlich verschieben kann und brauche eure hilfe.
Ich nutze einen PIC16F628A und nutze zum verschieben von den Flanken 5 Taster die am PORTB des PIC´s liegen. Ich habe alle PORT´s am PORTB als Eingang.
Wenn ich eine ganz normale if Abfrage im Hauptprogramm schreibe so das er eine Variable erhöht und dadurch die Zeit zb. von der ersten LOW Flanke hinausschiebt funktioniert das programm selber gut. Nur das Problem dabei ist das mir dann die andere Platine an der ich das Eingangssignal simuliere in Störung geht da es ein ständiges HIGH oder LOW bekommt. Die andere Platine ist auch mit dem selben PIC gesteuert und hat im Programm einige Fehlerabfragen die ich aber nicht ausprgrammieren soll.
Ich dachte mir dann ich schreibe das ganze dann in einen Interrupt und erhöhe dort die Variable die die Zeit verschiebt. Dies funktioniert eigendlich ganz gut. Nur das Problem dabei ist das es den PIC jetzt egal ist welchen Eingang von RB4-RB7 ich auf GND lege. Obwohl ich eine if Abfrage hineingeschrieben habe wo klar drinn steht das nur hochgezählt werden soll wenn RB6 angesteuert wird. Vielleicht kann mir da wer weiter helfen??
Hier steht der Interrupt:
Code:
void interrupt isr(void)
{
GIE=0;
if(RBIF)
{
if((PORTB & 0b01000000)== 0b01000000)
{
a=a+1;
}
}
RBIF = 0;
GIE=1;
}
Ich würde mich freuen wenn mir wer weiterhelfen kann.
MFG Daniel
Lesezeichen