Gast
#1899208
Hallo zusammen, ich bin gerade am grübeln wie ich am besten einen Interrupt manuel auslöse/in die Interruptroutine springe. Programmiert in C, ausgeführt auf einem Mega88. Hintergrund: Zum Senden von Daten per UART gedenke ich ein globales Array und eine globale Zählvariable anzulegen. Sollen Daten gesendet werden, füllt eine Funktion das geprüft leere Array und setzt die Zählvariable auf die Anzahl an Einträgen im Array. Anschließend soll der TX-complete-Interrupt anlaufen. Dieser lädt in seiner Interruptroutine ein Byte aus dem Array in UDR0 und zählt den globalen Zähler um eins zurück. In den nächsten Interrupts wiederholt sich der Spaß, bis der Zähler auf null steht, dann soll der Interrupt disabled werden. Was ich mich nun frage: Wenn ich im Register UCSR0A TXC0 (TX-Complete) setze und anschließend im UCSR0B mit TXCIE0 Interrupts aktiviere, dann müsste doch sofort die Interruptroutine anspringen oder? In etwa ist das so gemeint:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
Sollte doch so funktionieren, oder? ich kann das gerade nicht Testen, mein Programmiergerät ist noch im Postauto. Ausserdem interessiert mich eure Meinung dazu. Müll, oder brauchbar? Verbesserungsvorschläge? Vielen Dank Grüße Martin