Hi!
Nachdem ich jetzt über die Tastergeschichte ungefähr weiß, wie die externen Interrupts funktionieren bin ich mittlerweile dazu übergegangen, jetzt mal den Drehgeber zu testen. Also einen Ausgang an den INT0 und den anderen an Portd.3 als beliebigen Eingang. Entprellen habe ich mit 100nF probiert, die ich jeweils nach Izasebas Aussage zwischen Pin und GND geschaltet habe.
Ergebnis: Mit dem folgenden Code prellt das ganze wie Sau und außerdem habe ich keine Ahnung, was der Drehgeber da macht. Egal in welche Richtung ich drehe, zählt die Variable "zaehler" ohne System rauf und runter. Interessanterweise zählt die Variable immernoch, wenn ich eines der beiden if(bzw. else)-Statements auskommentiere und in die dazugehörige Richtung drehe. Komisch.
Achja, mit "Reihenfolge" meinte ich, ob es einen Unterschied macht, in welches Register ich zuerst schreibe. Sprich ob es egal istCode:#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <stdio.h> #include "wintek2704.h" #include "wintek2704.c" int zaehler; char zaehler_s[2]; //in char konvertierte zaehler-Variable void ioinit( void ) { DDRB = 0xff; DDRD = 0x00; PORTD = 0xff; //Pullups ein kann ja nicht schaden... } int main( void ) { zaehler = 0; ioinit(); lcd_init( LCD_DISP_ON ); lcd_gotoxy( 0, 0 ); lcd_puts( "Initialisiert" ); //Display geht GIMSK |= ( 1 << INT0 ); MCUCR |= ( 1 << ISC01 ) | ( 1 << ISC00 ); //INT0 auf steigende Flanke konfigurieren sei(); for( ;; ) { } return 0; } SIGNAL( SIG_INTERRUPT0 ) { if( PIND & ( 1 << PIND3 ) ) zaehler++; //Abfrage der Drehrichtung else zaehler--; sprintf( zaehler_s, "%d", zaehler ); //zur Ausgabe auf's Display wird zaehler zu einem char-Array konvertiert lcd_clrscr(); lcd_gotoxy( 0, 0 ); lcd_puts( zaehler_s ); }
oderCode:GIMSK |= blablabla; MCUCR |= blubblubblub;
zu schreiben, weil sich vielleicht ein Register automatisch ändert, wenn in ein verwandtes Register geschrieben wird?!Code:MCUCR |= blubblubblub; GIMSK |= blablabla;
Ich hoffe, ich hab meine Probleme verständlich beschrieben.
Gute Nacht dann endlich, Manni







Zitieren

Lesezeichen