PIC16C74 Interruptproblem?

Gast #12087
Hallo!

Habe beim Programmieren des PIC 16C74 ein Problem mit der 
Interruptroutine. Die Parameter des PICs sind so eingestellt, dass die 
ISR bei einer Änderung an Port B durchlaufen wird. Ich habe nun ein 10Hz 
Signal an PIN_B1 angehängt. Mein Problem ist nun, das die ISR nicht 
nicht durchlaufen wird und fdd immer 0 ist.
Das 10 Hz Rechtecksignal an PIN_B1 habe ich mit dem Oszi überprüft und 
hat die Zustände 0.1V und 4.8V.

Kann mir jemand weiterhelfen?
Kurt

Programm(Im PCW PIC C Compiler geschrieben):

//globale Variablen, damit die ISR auch zugreifen kann
unsigned int fa=0, fb=0, fc=0, faa=0, fbb=0, fcc=0, fdd=0, br=0, xa=0, 
xb=0, xc=0, xd=0, xaa=0, xbb=0, xcc=0, xdd=0;

#include <INTERRU2.H>

#int_rb

rb_isr()
{

   xa=input( PIN_B2 );
   xb=input( PIN_B3 );
   xc=input( PIN_B5 );
   xd=input( PIN_B1 );
   br=input( PIN_B6 );

   if(xd!=xdd)
   {
   xdd=xd;
   fdd++;
   }


}


main()
{

  setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  setup_port_a(ALL_ANALOG);
  setup_adc(ADC_CLOCK_INTERNAL);
  port_b_pullups(0);
  enable_interrupts(RB_CHANGE);
  enable_interrupts(GLOBAL);

  while(1)
     {
  delay_ms(250);
     //..Ausgabe von fdd über das Display..
  }
}
Gast
Hast du die Hauptfreigabe für Interrupts freigegeben?
Beim 16F84 z.B. ist es im INTCON-Register Bit7 (GIE).
Ist dieses Bit gelöscht, werden keine Interrupts ausgeführt.
Gast
Ich habe noch am PIN_B6 einen Schalter dranhängen, und wenn ich diesen 
betätige, wird die ISR problemlos durchlaufen. Aber der 10Hz Rechteck an 
PIN_B1 löst keinen Start der ISR aus....
Wie ist das zu erklären?
Gast
Wenn du mal probeweise versuchen würdest, das 10kHz-Signal an Pin_B6 
anzulegen, um zu sehen, was passiert.
Oder du legst an Pin_B1 den Taster an, um zu sehen, ob das Register 
"mechanisch" hochzählt.
Der Pin_B1 ist schon auf Eingang eingestellt,oder? (Entschuldige, aber 
ich beherrsche nur Assembler und kein C)
Hast du schon einen anderen 16C74 dazu benutzt, könnte ja sein, daß 
dieser Pin defekt ist.
Gast
PIN_B0 bis PIN_B7 sind als Eingänge definiert.

Ich habe jetzt alle Pins mit dem Schalter durchgetestet.
Es haben alle Anschlüsse ausser PIN_B0, PIN_B1, PIN_B2 funktioniert.

Ich kann mir nicht vorstellen, dass die Pin defekt sind(verwende 2 
16C74, bei beiden das gleiche Verhalten).

Komisch??
Gast
Ihr solltet beachten, das
- der Port-B-"Änderungs"-Interrupt nur für Port B4-B7 zuständig ist. Bei 
Änderungen an B0, B1, B2 und B3, wird also die ISR NICHT durchlaufen!!!
- Port B0 der "Ext."-Interrupteingang ist.

Gruß Flo

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 24 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.