Hallo,
ich bin schon frustriert genug, dass ich einen Pic (PIC18F4550) in einem 
Projekt verwenden muss. Nun benötige ich eine Int.-Routine, die alle 125 
Befehlszyklen (25 µs) ausgelöst wird. Den Timer0 kann ich alle 255 
Befehlszyklen auslösen. So dachte ich mir nun: Setzt du in der 
Int.-Routine einfach den Zähler auf einen höheren Startwert. Denkste! 
Ich lande bei über 400 Zyklen!
1  | // ----- INCLUDES 
  | 
2  | #include <p18f4550.h> 
  | 
3  | #include "delays.h"
  | 
4  | #include "timers.h"
  | 
5  | 
  | 
6  | /* Auf EINEN Interrupt gekürzt */
  | 
7  | #pragma code vector=0x08
  | 
8  | #pragma interrupt interrupt
  | 
9  | void interrupt(void) {
 | 
10  |   INTCONbits.TMR0IF = 0;
  | 
11  |   Nop();
  | 
12  |   WriteTimer0(20); // Zum Beispiel
  | 
13  | }
  | 
14  | 
  | 
15  | void main(void) 
  | 
16  | { 
 | 
17  |     // Interrupts aktivieren
  | 
18  |   OpenTimer0(TIMER_INT_ON & T0_8BIT & T0_SOURCE_INT & T0_PS_1_1);
  | 
19  |   INTCONbits.GIE = 1; // Enables(1)/Disables(0) all unmasked interrupts
  | 
20  |   INTCONbits.PEIE = 0; // Enables(1)/Disables(0) all unmasked peripheral interrupts
  | 
21  |   INTCONbits.INT0IE = 0; // En(1)/Disables(0) the INT0 external interrupt
  | 
22  |   INTCON2bits.INTEDG0 = 1; // rising(1)/falling(0) edge of int0
  | 
23  | 
  | 
24  |   // ----- Hauptschleife --------------------
  | 
25  |   while (1) {
 | 
26  |   }
  | 
27  | }
  | 
Kennt sich hier jemand damit aus wie ich den Timer beschleunigen kann? 
Ich meine 40kHz sollten doch bei 20MHz Betriebsfrequenz nicht zu viel 
sein...
Grüße!