PIC16C74 Interruptproblem?

Gast #12087
Lesenswert?

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 #12090
Lesenswert?

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 #12091
Lesenswert?

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 #12092
Lesenswert?

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 #12093
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren