- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Verstehe Programmcode vom Prof nicht

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Anzeige

    Powerstation Test
    Hey xAmp,

    schau dir nochmal die Aufgabenstellung an und stell dir die Frage, WANN das Bit durch Port C wandert?
    *Trommelwirbel*
    Richtig, wenn du einen der Taster S1-3 "drückst", was man auch dadurch lösen kann, dass man das entsprechende Bit in PINx setzt.
    Dazu ist es aber sinnvoll, den Debugger im Einzelschrittmodus zu fahren und das Bit nach der Zeile "step = (PINA & 0x06) | ((PIND>>2)&0x01);" wieder zu löschen, sonst rauscht dir deine LED davon.

    ACHTUNG: Es gibt noch einen kleinen Fehler - durch die Pullups sind die ganzen Pins erst einmal High, also 1 und werden als Low (0) gelesen, wenn der Taster gedrückt wird. Du musst also den eingelesenen Wert von PINA/PIND noch invertieren!

    mfG
    Markus

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    14.09.2009
    Beiträge
    5
    Vielen Dank ihr zwei für eure Antworten!

    Ohje das raubt mir noch den letzten Nerv.
    Um die Pull-Up zu invertieren, könnte ich doch die beiden Befehle
    PINA &=~(1<<0x06);
    PIND &=~(1<<0x04);
    vor der while-Schleife verwenden. Ist das soweit korrekt?

    Kann ich die Taster nicht irgendwie Simulieren? Muss ich da jetzt jedes mal nach einem Schleifendurchlauf händisch die davor gesetzten Pins wieder invertieren?

    So ganz ist der Groschen bei mir noch nicht gefallen. Vor allem finde ich es sehr schwer so etwas auch aus einem Tutorial zu "erkennen".

    Gruß und Dank!

  3. #13
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von xAmp
    ... Kann ich die Taster nicht irgendwie Simulieren ...
    Doch, kannst Du. Dazu musst Du nur
    Zitat Zitat von xAmp
    ... jedes mal nach einem Schleifendurchlauf händisch die davor gesetzten Pins wieder invertieren ...
    Denn die Taster werden ja auch händisch betätigt. Du kannst allenfalls den Simulator in solchen oder ähnlichen Fällen betrügen, indem Du den Zähler für den Schleifendurchlauf händisch hochsetzt. Beides gehört zu den Problemen, durch die ich auch sehr zähhhh gekommen bin.
    Ciao sagt der JoeamBerg

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von xAmp
    Um die Pull-Up zu invertieren, könnte ich doch die beiden Befehle
    PINA &=~(1<<0x06);
    PIND &=~(1<<0x04);
    Nein, damit würdest du entweder die Pullups der gedrückten Taster toggeln (also ein/aus), oder aber gar nichts bewirken - wie sich schreibende Zugriffe auf das PINx-Register auswirken findest du im Datasheet deines AVR.
    Du musst den eingelesenen Wert invertieren, nicht den Wert des Eingangsregisters manipulieren.

    Wenn du damit die Pullups aktivieren wolltest (und ich dich falsch verstanden habe), musst du die entsprechenden Bits von PORTA und PORTD setzen. Genaueres verrät dir auch hier das Datasheet.

    AVR-Studio bietet übrigens sogenannte Stimuli mit denen man sich theoretisch das manuelle Toggeln sparen kann, ich habe damit aber noch nicht gearbeitet und mir hat bisher das manuelle rumgeklicke gereicht.

    mfG
    Markus

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad