Datum:
Hallo, ich glaube es nicht. Jetzt habe ich meinen Code soweit zusammengestrickt, dass er nur noch aus wenigen Zeilen besteht. Das Problem: Wenn ich den ext. Interrupt INT0 mit ISC1=1, ISC0=0 auf eine fallende Flanke konfiguriere, dann löst der Interrupt trotzdem auf eine steigende Flanke aus? Was mache ich falsch? Wenn man einen Breakpoint an die ISR setzt, dann springt er in Zyklus 2007 hinein, obwohl PINB von 0 auf 4 springt (steigende Flanke). Ich weiss mir nicht mehr zu helfen... Code: ----------------------
#define PIN_v_ist PB2 /* local prototypes */ int main(void); void init_all(void); void init_Port(void); void init_PWM(void); #include <avr/io.h> #include <avr/interrupt.h> #define sbi(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT))) #define _NOP() do { __asm__ __volatile__ ("nop"); } while (0) /* -------------------------------------------------- */ int main(void) { init_all(); /* Lösche den erzeugten Interrupt */ sbi(GIFR,PCIF); sbi(GIFR,INTF0); /* Schaltet den Interrupt frei */ sei(); while(1) { _NOP(); } } void init_all(void) { init_Port(); /* The falling edge of INT0 generates an interrupt request */ sbi(MCUCR,ISC01); /* Interrupt Freischaltung INT0 -> Speed */ sbi(GIMSK,INT0); } void init_Port(void) { /* Eingänge und nicht benutzte PINs mit Pullup abschliessen */ PORTB = (1<<PIN_v_ist); } ISR(INT0_vect) { _NOP(); } |
---------------------------------- Stimulidatei:
#1 PINB = 0 #2000 PINB = 4 |
Datum:
Hi
>Ich weiss mir nicht mehr zu helfen...
Dann mach es wie alle anderen auch und nimm einen realen Controller, ein
paar Leds, Taster ... . Den Simulator benutze ich eigentlich nur um
hardware unabhängige Routinen zu testen.
MfG Spess
Datum:
Hi Hab das gerade mal getestet. Ist ein Fehler im Simulator2. Mit dem anderen Simulator werden die Interrpts korrekt ausgelöst. MfG Spess
Datum:
Vielen vielen Dank. Welchen Simulator hast Du denn verwendet? Den könnte ich ja dann auch nehmen, wenn der besser ist...
Datum:
Hi >Welchen Simulator hast Du denn verwendet? Einfach unter Debug->Select Platfom and Device den AVR Simulator auswählen. MfG Spess
Datum:
dost0011 schrieb: > wenn der besser ist... Der ist nicht "besser", der hat nur andere Fehler... ...
Datum:
Und irgendwann ist mit dem Simulator, jedem Simulator, sowieso Schluss und es führt kein Weg mehr an realer Hardware vorbei. Denn reale Hardware hat nun mal ein paar Eigenheiten, die man nur mit sehr sehr viel Aufwand simuliert bekommt. Zb Kontaktprellen, zb Spannungspegel die eben nicht genau 5V sind, zb Beeinflussung der Versorgungsspannung, zb minmale Schaltzeiten (Relais), zb .... Den Simulator kannst du benutzen um die grundsätzlichen Programmlogiken zu testen, ob Berechnungen stimmen, ob du dich wo mit den Datentypen verhaupt hast, .... Aber alles was in die Rubrik 'sitzt mehr oder weniger direkt an den I/O Pins' fällt, da ist dir der Simulator nicht sehr hilfreich.