Hallo zusammen, Ich habe diverse Beiträge durchsucht aber nicht das richtige Gefunden. Ich habe das Problem, dass ich die JTAG Schnittstelle im Program deaktivieren möchte. Ich nutze dazu C-Code Problem ist, dass innerhalb von 4 Taktzyklen 2x in das MCUCSR Register geschrieben werden muss. Wenn ich das ohne Optimierung in C mache ist das allerdings zu langsam und dauer bei mir 5 Zyklen. Weiss jmd wie ich in C das deaktivieren in Assembler machen kann? Oder auch gerne andere Lösungen. MfG Felix
Nun, das einfachste wäre es natürlich, die Optimierung einzuschalten. ;-)
1 | #include <avr/io.h> |
2 | |
3 | void jtd(void) |
4 | {
|
5 | uint8_t tempreg; |
6 | |
7 | asm volatile("in %[tmp], %[mcucsr]" "\n\t" |
8 | "ori %[tmp], %[mask]" "\n\t" |
9 | "out %[mcucsr], %[mask]" "\n\t" |
10 | "out %[mcucsr], %[mask]"
|
11 | :/* no outputs */ |
12 | : [tmp] "d" (tempreg), [mcucsr] "I" (_SFR_IO_ADDR(MCUCSR)), |
13 | [mask] "M" (1 << JTD)); |
14 | }
|
Sinnvoll wäre es natürlich noch, das Teil static inline zu deklarieren, denn im Allgemeinen ruft man die Funktion ja nur ein einziges Mal pro Applikation auf.
Felix schrieb: > Wenn ich das ohne Optimierung in C mache ist das allerdings zu langsam > und dauer bei mir 5 Zyklen. Wenn Dir das Programm mit Optimierung zu schnell ist, nimm einfach nen kleineren Quarz, dann kannst Du die Optimierung an lassen. Peter
Hallo, Peter Dannegger schrieb: > Felix schrieb: >> Wenn ich das ohne Optimierung in C mache ist das allerdings zu langsam >> und dauer bei mir 5 Zyklen. > > Wenn Dir das Programm mit Optimierung zu schnell ist, nimm einfach nen > kleineren Quarz, dann kannst Du die Optimierung an lassen. Hmmm, habe jetzt statt eines 4MHz HC49/U einen ganz kleinen 4MHz SMD-Quarz genommen. Läuft aber noch genauso schnell...... [Duck und wech] Gruß aus Berlin Michael
Michael U. schrieb:
> Läuft aber noch genauso schnell.
Musste ihn öfter mal schlafen legen -- die kleinen Quarze schwingen
langsamer an. ;-)
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.