Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Probleme mit der Interruptroutine Kategorie: Progr. Assembler, TaskingTools, OS (von Kurt - 25.06.2004 17:40)
Als Antwort auf Re: Probleme mit der Interruptroutine von Kurt - 25.06.2004 16:16
Ich nutze:
C-Control II Unit, CC2-StarterBoard, OSOPT V3.0
Hallo nochmals,
um den Interruptprogrammierung zu testen habe ich ein *.c2 Programm, in dem es eine interruptroutine
 mit dem Befehl "system.hook" über das
Port 'P1H.0' auslösen soll, geschrieben. und sieht so aus;


  thread main
{
   loop
   {
   ports.set(3,0);
   ports.set(5,0);

   system.hook(system.EVENT_P1H0,3,0,system.HOOK_BEFORE);

   ports.set(3,1);
   sleep 200;
   ports.set(3,0);
   sleep 200;
   }
}


und das C Systemprogramm habe ich so geschrieben;


#define REG164CI_NOOTP  
#define REG164CI_NOPEC
#define REG164CI_NOCAN
#include "reg164ci.h"

void pulses ( void )
{
   if (CC6POS0 == 0)       //P1H.0=0
          COUT62=1;   //P1L.5=1
   else
          COUT62=0;   //P1L.5=0

#pragma asm
   POP R12
   POP R12
#pragma endasm    
}



Wenn ich das Programm laufen lasse, dann wie geregelt, blinkt ein LED in dem Port P1L.3 und wenn
 ich den Pegel von P1H.0 auf LOW setze, bzw. mit einem Stück Draht zu GND verbinde, dann blinkt das
LED auf dem Port P1L.5 und unglücklicherweise stoppt der Programmlauf. Zusätzlich blinkt das HOST
Modus LED auf dem Starter Board.
Was kannst du(/könnt Ihr) mir empfehlen? Wie kriege ich diesen Interrupt als ein blutiger Anfänger hin?

Grü�
Kurt

> Hallo Dietmar
> vielen vielen Dank für die schnelle (21 Minuten) und ausführliche Antwort. Da ich einer Anfänger bin, konnte ich mein
> Problem nicht so deutlich ausdrücken aber dein Antwort ist völlig ausreichend um das Problem zu lösen.
> ich wünsche dir ein schönes Wochenende.
> Grü�
>
>
> > Hallo!
> >
> > Mir ist nicht ganz klar, was du eigentlich möchtest. Bei einem Analog-Eingang bekommst du immer
> > ein Signal. Selbst wenn keine Spannung anliegt, bekommst du eben den 0V-Pegel.
> > Anders ist das bei einem digitalen Eingang, der nur zwei Zustände kennt: High-Level und Low-Level.
> > Hier kann der Zustandswechsel einen Interrupt auslösen. Eine andere Möglichkeit ist eben der ms-Timer,
> > der jedesmal nach Ablauf einer gewissen Zeitdauer einen Interrupt auslöst.
> > Hinter Interrupts müssen also immer irgendwelche Zäsuren stehen, die definitionsgemä�e Auslöser von
> > Interrupts sind. Beim ADC müsste man zuerst definieren, was eine solche Zäsur sein soll. Beispiele -
> > die von der CC2 aber nicht von sich aus unterstützt werden - könnten das �ber- oder Unterschreiten
> > irgendwelcher Schwellwerte sein. Ohne solche Definition gibt es auch keine Interrupts, und das ist der
> > derzeitige Status der CC2. Du kannst dir jedoch selbst eine Schaltung bauen, die je nachdem, ob ein
> > Schwellwert über- oder unterschritten wird, ein digitales Signal (0V oder 5V) erzeugt, das du auf einen
> > der Interrupt-fähigen Digitaleingänge der CC2 legst. Dann kannst du einerseits auf den Schwellwert
> > reagieren und andererseits den Messwert auswerten, der am ADC anliegt.
> >
> > Beste Grü�e,
> > Dietmar.
> >
> >
> > >
> > > Hallo Leute,
> > > bin ein Anfänger und habe Probleme mit meiner Interruptroutinen. Folgendes; ich möchte ein Schleife
> > > definieren in dem ich eine lange Prozess laufen lasse.
> > > Dabei möchte ich die AD Converter Ports regelmässig lesen ob ich Signale aus der
> > > vorhandenen Sensoren bekomme oder nicht. Wenn ja, dann möchte ich das Prozess abbrechen.
> > >
> > > In dem Buch Stand, daÃ? es in der CC2 Unit 5 Interruptquellen gebe (P1H0 bis 3 und 1 ms timer(habe
> > > keine DCF Antenne)).
> > > Da, ich aber nicht die Ports P1H benutzen muÃ?, sondern auf die ADC Ports achten muÃ?; wie kann ich
> > >  diese Ports in einer Interruptroutine definieren? oder sind ADC Ports gar nicht Interruptfähig?
> > >
> > > Vielen Dank im Voraus


    Antwort schreiben


Antworten:

Re: Probleme mit der Interruptroutine (von Martin Binder - 25.06.2004 18:18)