- Labornetzteil AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Menü mit Drehgeber

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.02.2006
    Ort
    München
    Alter
    35
    Beiträge
    161
    Anzeige

    Praxistest und DIY Projekte
    Hallo sast,
    Das was Du in deinem Post beschreibst, ist doch nur der Greycode. Das werte ich ja genau in meinem Code aus.
    Deinen Edit-Absatz verstehe ich ehrlich gesagt nicht ganz. Heißt das, dass ich für Phase B einen zweiten externen Interrupt bräuchte, damit ich bei jeder "Raste" ein Ergebnis erhalte?

    @Izaseba: Kein Thema. Du hast mir so gut es ging geholfen! Und mit mikrokontroller.net habe ich eine gigantische Quelle für diese Menü-Programmiererei. Auch wenn ich bei dem wenigsten sofort durchsteige .

    MfG, Manni

  2. #22
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Wenn ich deine Aussagen richtig verstehe, hattest du geschrieben, dass du den einen Ausgang über die fallende oder steigende Flanke auswertest. Dadurch ergibt sich natürlich der Sachverhalt, dass du nur jeden vierten Impuls misst.
    Ob du das nun Greycode nennst oder nicht ändert nichts daran, dass du alle 4 Zustände verarbeiten musst um die komplette Auflösung zu nutzen.

    sast

    雅思特史特芬
    开发及研究

  3. #23
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.02.2006
    Ort
    München
    Alter
    35
    Beiträge
    161
    Ok, verstanden. Ein Lösungsansatz dafür wäre also, den Pinchange-Interrupt auf steigende und fallende Flanke zu stellen und in der ISR beide Pins auf ihren Zustand abzufragen? Somit müsste man doch schonmal die doppelte Auflösung erlangen, oder?
    Wenn ich dann noch die volle Auflösung nutzen möchte, dann müsste ich das ganze Verfahren noch auf einen zweiten ext. Interrupt ausweiten, richtig?

    Übrigens: "Greycode" nenne nicht ICH das, sondern so heißt dieses Signal, wo sich immer nur ein Bit ändert.

    Gruß, Manni

  4. #24
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Ja, genau das wollte ich damit zum Ausdruck bringen. Eigentlich wollte ich dir nur erklären, warum gerade jeder 4. Impuls etwas gemacht hat.

    sast

    雅思特史特芬
    开发及研究

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.02.2006
    Ort
    München
    Alter
    35
    Beiträge
    161
    So, nach einigem Ausprobieren und rumgetüftle, sieht meine ISR jetzt so aus:
    Code:
    	_delay_ms( 1 );
    	
    	if( ( PIND & ( 1 << PIND2 ) ) && ( PIND & ( 1 << PIND3 ) ) ) zaehler--;
    	if( ( !( PIND & ( 1 << PIND2 ) ) ) && ( !( PIND & ( 1 << PIND3 ) ) ) ) zaehler--;
    	if( ( !( PIND & ( 1 << PIND2 ) ) ) && ( PIND & ( 1 << PIND3 ) ) ) zaehler++;
    	if( ( PIND & ( 1 << PIND2 ) ) && ( !( PIND & ( 1 << PIND3 ) ) ) ) zaehler++;
    Der Interrupt wird bei jeder Zustandsänderung ausgelöst. Somit wird jetzt jeder zweite Tick erkannt.
    Ausweiten könnte man das ganze jetzt noch, indem man wie oben schon gesagt, einen zweiten ext. Interrupt-Pin auf die zweite Phase ansetzt. Die Auflösung von 50% reicht mir, weil ich keinen weiteren externen Interrupt opfern möchte. Das Drehgefühl ist jetzt auch ganz angenehm.
    Entprellt habe ich das ganze noch weiter mit dieser Mini-Pause. Die Pause habe ich schon runteroptimiert soweit es ging. Da geht nicht viel Rechenzeit drauf und es ist sowohl einfach als auch funktionell, weil jetzt gar nix mehr prellt.

    Dann muss ich mich jetzt wirklich nur noch um das Coden des Menüs kümmern.

    Gute Nacht, (euer für heute sehr zufriedener ) Manni

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests