Hallo!
Folgendes Problem. Ich habe einen PIN der EXTERN auf HIGH geht. Wenn
dieser PIN mehrere Sekunden auf HIGH ist, dann soll alle z.B. 4ms Daten
durch die EXT_INT_FUNC ausglesen werden.
Ich möchte allerdings nicht in der Funktion drinbleiben solange der PIN
auf HIGH ist. Ich möchte den EXT per Hand resetten (durch z.B. einen
Timer) und wenn der PIN dann noch auf HIGH ist, dann soll er gleich
wieder in meine Interruptfunktion reinspringen. Ist das verständlich??
1 | /* deaktivierte Timerfunktion
|
2 | void Timer0(void)
|
3 | {
|
4 | if(FIO0PIN & PIN0_30)
|
5 | {
|
6 | EXTINT = 0x03; // clearen, damit der Interrupt wieder ausgelöst wird
|
7 | }
|
8 | }*/
|
1 | void EXT3_INT_Func(void) //__irq
|
2 | {
|
3 |
|
4 | // clear EXTINT; muss gemacht werden laut Handbuch
|
5 | EXTINT = 0x03;
|
6 |
|
7 | // some code
|
8 | ...;
|
9 |
|
10 | // clear Interrupt
|
11 |
|
12 | VICAdress = 0x0;
|
13 |
|
14 | }
|
der ExtInt geht, habe ihn getestet.
die TimerInt geht auch. Also an den Funktionen liegt es nicht. Es ist
ein programmierlogisches Problem.
Wäre nett, wenn es Ratschläge gibt!
Gruss
Krugman