Hallo, ich bekomme einfach keinen TIMER0 Interrupt zustande. Nach der Lektüre diverser Beispiele, des UM und des Datenblattes habe ich den Code im Anhang geschrieben. Was habe ich da übersehen? Der Int kommt nicht durch, die Startup Files sind die Originale von Rowley. Besten Dank Fried
Werden die Interrupt-Flags des Prozessors im Startup-Code von Rowley bereits freigegeben?
Wozu ist das gut, vor allem in dieser Reihenfolge?
1 | return( TRUE ); |
2 | VICVectAddr = (unsigned long) HandlerAddr; |
Funkioniert das?
1 | void wait(unsigned long zeit) { |
2 | while (zeit > 0) zeit--; |
3 | }
|
GCC neigt ja dazu, solchen Code komplett wegzuoptimieren.
@Andreas Ja, das tut, ist GCC v4.1.1 Aber die Optimierung des GCC kann manchmal schon zu bösen Überraschungen führen.
Wenn du dem Timer nicht über den Weg traust: Bit in VICSoftInt setzen (und im Handler wieder löschen). Wenn dann immer noch nichts durchkommt, sind die Interrupts nicht freigegeben. Ich kenne Rowleys Startup Code nicht.
Andreas Kaiser wrote: > Werden die Interrupt-Flags des Prozessors im Startup-Code von Rowley > bereits freigegeben? Welche Flags meinst Du? Ich habe in den Startups so nichts gesehen?
Fried Vissel wrote:
> Welche Flags meinst Du? Ich habe in den Startups so nichts gesehen?
Das "I" Flag im Statusregister.
Andreas Kaiser wrote: > Fried Vissel wrote: > >> Welche Flags meinst Du? Ich habe in den Startups so nichts gesehen? > > Das "I" Flag im Statusregister. Vielen Dank, das war's! Bei den vielen VIC Regs übersieht man halt einfach den Wald vor lauter Bäumen! Auch nach mehrmaligem intensiven Lesen der VIC Doku habe ich noch ordentlich Knoten im Hirn und die Vorteile dieses zumindest "unübersichtlichen" Konstrukts VIC sehe ich auch noch nicht ganz.
Fried Vissel wrote: > noch ordentlich Knoten im Hirn und die Vorteile dieses zumindest > "unübersichtlichen" Konstrukts VIC sehe ich auch noch nicht ganz. Musst du nicht verwenden. Wenn du ohne separate Vektoren gut leben kannst, dann hängt dir einen eigenen Handler in die Sprungleiste und sortiere die Quellen dort aus. PIC-Fans ist das sehr vertraut. Vorteil des VIC ist halt die Vektorisierung und die Priorisierung von verschachtelten Interrupts. Letzteres ist allerdings noch ein bischen komplizierter, weil ARM diesen Aspekt bei Design der Architektur schlichtweg vergessen hatte.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.