- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: LPC1768 RSID-Register

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076

    LPC1768 RSID-Register

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ursprunglicher Title war : Bit setzen wenn es gesetzt ist um es zu löschen ?

    Wer sich diesen Code ohne Hintergrundwissen ansieht, wird wahrscheinlich denken, der Programmierer tickte nicht mehr richtig.


    Code:
      if (LPC_RSID.bits.POR == 1)    /* wenn das Bit High ist */
      {
        LPC_RSID.bits.POR = 1;       /* dann setze das Bit High ?????? */
        set_standby();               /* Gerät nun in den Standbymode setzen */
      }
    Nun die Erklärung:
    Wenn das Netzkabel in das Gerät gesteckt wird, soll es noch nicht eingeschaltet werden sondern zunächst in den Standbymodus gehen.
    Erst durch Drücken einer Taste soll es anlaufen. Normalerweise lief mein Gerät gleich an, wenn man das Netkabel steckte.
    Dies war aber vom Kunden unewünscht. Also benötigte ich eine Information, ob das Gerät das erste mal mit Spannung versorgt wurde.
    Dafür stellt der Controller LPC1768 ein Register zur Verfügung, das RSID-Register. Hier kann ermittelt werden,
    wer der Verursacher des Resets war. Wenn das Bit "POR" im RSID-Register High ist, gab es einen PowerOn-Reset.
    Die Software sollte dieses Bit nun löschen, damit bei einem nächsten Reset erkannt werden kann, dass es kein PowerOn Reset war.
    Zunächst setzte ich also das Bit auf 0, leider ohne Erfolg. Wenn man das Datenblatt "genauer" liest , steht dort,
    dass dieses Bit auf "1" gesetzt werden muss um es zu löschen. Daraus resultiert dann der etwas merkwürdig aussehende Code.

    Damit hat sich meine Frage zwar erledig, aber ich fand es dennoch würdig mal hier zu offenbaren.
    Nicht immer ist augenscheinlich, blödsinniger Code wirklich so unsinnig....
    Ein schönes Wochenende
    Siro

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Jetzt fällt mir aber doch noch eine hoffentlich sinnvolle Frage zu diesem Thema ein:
    Dürfte der Comp0iler das eigentlich wegoptimieren ? Wenn das Bit schon gesetzt ist, braucht er es doch nicht nochmal zu setzen....
    natürlich nur wenn ich vergessen würde die Register als "volatile" zu declarieren.
    Siro

Ähnliche Themen

  1. LPC1768 in Code:Blocks
    Von pete1612 im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 5
    Letzter Beitrag: 03.12.2013, 15:47
  2. LPC1768 ADU Burst Mode Problem
    Von Siro im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 0
    Letzter Beitrag: 20.02.2012, 15:25
  3. LPC1768 internal Pullup
    Von Siro im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 16.03.2011, 15:28
  4. Register
    Von Exodus im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 10.07.2006, 11:09
  5. Interne Register und Register in SRAM
    Von FoCus im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 27.07.2005, 12:06

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad