- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: GPIO-Register Ansprechen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Benutzer Stammmitglied
    Registriert seit
    07.07.2011
    Beiträge
    35
    Hallo,

    Ich habe die Links und andere auch gelesen, und habe ich das Thema bis 80 % verstanden.

    Bei praktischer Umsetzung ergibt sich paar sachen, die ich nicht Verstehe und die mich durcheinander bringen.

    Ich habe folgendes Code geschrieben:
    Code:
    #include "stm32f10x.h"
    /*--------------------------------------------------------------------------*/
    
    void delayLoop()
    {
        volatile uint32_t delayCount = 1000000;
        while (delayCount > 0)
        {
            delayCount--;
        }
    }
    
    void GPIO_Setup ()
    {
        GPIO_InitTypeDef GPIO_Inity; // Struktur um PortPins zu initialisieren, die Variable heisst: GPIO_Inity
    
         // PortPin als Ausgang configurieren
    GPIO_Inity.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; // mit Oder_Verknupfung (|) wählt man mehrere Pins
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //Damit wird das Port C mit Takt versorgt ansonst ist dieser Port ausgechaltet
        GPIO_Inity.GPIO_Mode = GPIO_Mode_Out_PP; // Betriebsmodus
        GPIO_Inity.GPIO_Speed = GPIO_Speed_50MHz; // Schaltgeschwindigkeit der Pins
        GPIO_Init(GPIOC, &GPIO_Inity); // Tatsächliche der Pins
    
         // PortPin als Eingang configurieren
        GPIO_Inity.GPIO_Pin = GPIO_Pin_0;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_Inity.GPIO_Mode = GPIO_Mode_IPD;
        GPIO_Inity.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_Inity);
    
    }
    
    
    
    int main (void)
    {
         uint8_t read_A0 = 0; Das ist die Variable, in der ich den Wert von PA0 speicher
    
         SystemInit(); // Die Std. Peripherie nun Clocks, PLLs usw. einrichten
         GPIO_Setup();
    
    
         read_A0 = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); somit kopiere ich den Wert
         read_A0 |= 0xE1; und heir maskiere mit Oder ??????
    
    
    
                if (read_A0 == 0xE1)
                {
                    GPIOC->BSRR = GPIO_Pin_8; // LED On
             delayLoop();
    
             GPIOC->BRR = GPIO_Pin_8; // LED Off
             delayLoop();
    
             GPIOC->BSRR = GPIO_Pin_9; // LED On
                    delayLoop();
    
                    GPIOC->BRR = GPIO_Pin_9; // LED Off
             delayLoop();
                }
                return 0;
    }
    Code-Tags verwenden (PicNIck, Mod)

    Ich wollte mit diesem Code den Pin 0 von Poart A Auslesen.
    Wenn der Bush-Button (der an PORT A, pin0 angeschlossen ) gedruckt, dann ist der Wert des Pins 0 logisch 1.
    Im umgekehrten Fall wäre 0.
    Eines der Werte (je nach dem Zustand des Buttons) wird in der Variable read_A0 kopiert.

    Durch if-Schleife frage ich nach den Wert der Variable, ist die Bedingung erfüllt dann leuchtet die Leds ansonst nicht.

    Nun das Ergebnis ist anders, und zwar die LEDS Leuchten, wenn anderen Button (RESET-Button) gedruckt wird.
    Am Anfang dachte ich mir, ich habe die GPIO falsch kunfiguriert, aber nach zwei mal Überprüfung bin ich sicher, es wurde richtig eingestellt.
    dann bin iach aud diese Idee gekommen, dass ich den Wert maskiere, hilft auch nicht.

    Kann jemand mir sagen, so liegt der Fehler???? ich hae das Code mehr mals durchgeprüft, ich verstehe nicht was habe ich faslch eingestellt.

    Danke
    Geändert von PicNick (13.07.2011 um 07:42 Uhr)

Ähnliche Themen

  1. Register ansprechen ->
    Von peterbauer im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 3
    Letzter Beitrag: 03.03.2009, 18:49
  2. Servo über GPIO mit PWM an RN-Control ansteuern (Frequenz ?)
    Von Chattychan im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 23.07.2007, 10:53
  3. Register
    Von Exodus im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 10.07.2006, 11:09
  4. Interne Register und Register in SRAM
    Von FoCus im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 27.07.2005, 12:06
  5. Register von einem PIC mit einem Atmel direkt ansprechen ...
    Von klucky im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 12.06.2005, 22:20

Berechtigungen

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

Solar Speicher und Akkus Tests