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 | ||
| ||
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) |