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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.