- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 34

Thema: Für lange Winterabende....

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Behörden, Ämter und sonstige Bremsen...im Sept. 14 die Zusage und ab Sept. 15 konnten wir in die Wohnung, eben der Osten, da braucht keiner Miete da stehen die Wohnungen leer... Na ja nun füllt man sie mit Asylanten auf...

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Da ich grad Ernst mache...ist es normal, das Em::Blocks jetzt EmBitz heißt?

    Mal noch was anderes...hat jemand ne Ahnung, wie ich die Bibliotheken von ST für den F446 in EmBitz einbinden kann? Nicht nur in einem einzelnen Projekt, sondern so daß ich die gleich in einem neun Projekt zur Verfügung habe?
    Geändert von White_Fox (25.03.2016 um 18:00 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Also das weiss ich nicht , vielleicht mal Tante Google befragen. Ich arbeite fast nur noch unter Linux und Geany, macht sich einigermaßen gut, solange man keine eigenen Libraries mit einbinden möchte, ins projekt. Das habe ich noch nicht geschnallt wie es geht...

    Nun ist bald wieder gartenarbeit, dann ist der Spass bald zu ende mit dem Basteln Programmieren, jedenfalls im grossen Umfange...

    Frohe Ostern und einen fleissigen Osterhasen wünsche

    Gerhard

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Danke, dir auch ein schönes Osterfest.

    Google hat mir noch nichts brauchbares ausgespuckt. Ich hab jetzt ein Nucleo mit nem STM32-F446 mit diversen Zusatzboards. Es gibt unzählige Möglichkeiten den STM32 zu programmieren. Die meisten beruhen auf irgendeinem Eclipse-Verschnitt mit irgend einem Plug-In und allerhand Konfigurationsarbeit. Mit ebenso viel negativen Kommentaren mit diesen Eclipse-Verschnitten. Wenn ich daran denke daß ich schon einen halben Nachmittag gebraucht habe um bloß die Firmware vom ST-Link zu aktualisieren halte ich mich davon lieber fern. Ich will programmieren, nicht konfigurieren.

    Die Cube von ST wollte ich auch vermeiden...zuviel Klickibunti, ich will auch etwas davon verstehen wie der STM32 arbeitet.

    Ich kann die EDU-Version vom J-Link (und damit das Embedded Studio von Segger) nutzen, aber ich kann keine Schnittstelle für einen externen Debugger am Nucleo finden.

    Ich hab jetzt EmBlitz installiert, das scheint mir recht ordentlich zu sein. Die Oberfläche erinnert ich an die vom Visual Studio, aber wie gesagt, obige Frage steht immer noch im Raum...

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Also...ich hab meinen ersten STM32-Erfolg eingefahren. Die grüne LED auf dem Nucleo-Board leuchtet.

    Als IDE hab ich das Embedded Studio von Segger verwendet, ich programmiere mit dem J-Link- Für den nucleo-eigenen STLink gibts was zum draufflashen, damit der auch als J-Link dient. Die Hardware besteht aus einem Nucleo-64-Board mit einem STM32-F446RE.

    Zuerst hab ich das entsprechende Package (STM32-F4xx) installiert. Embedded Studio hat einen sog. Package-Manager, der das bewerkstelligt. Im Package sind die notwendigen Bibliotheken enthalten. Danach war erstmal Datenblattlesen dran. Wichtig ist die "STM32F446 Reference". Dort werden fast alle notwendigen Register erklärt die benötigt werden, um die Ports zu konfigurieren. Hier lauern auch schon die ersten Fallen. Die Peripherie (dazu zählen auch die Ports) müssen noch an die Taktversorgung angeschlossen werden, sonst tut sich nix. Dies muß übrigens auch noch VOR der eigentlichen Registerkonfiguration geschehen. Die zweite Falle ist: Das Bit für die LED soll, wie ich von einem freundlichen USer erfahren habe, besser NICHT über das output-Data-Register (ODR) geschehen, sondern über BSRR.

    Der entsprechende Thread ist hier:
    https://www.roboternetz.de/community...e-zur-C-Syntax

    Noch ein Tip zur Entwirrung:
    Embedded Studio erstellt sofort ein kleines "Hello-World-Projekt zum Einstieg für euch. Im Prinzip ist das eine Schleife, in der eine Variable n 100-mal hochgezählt und zusammen mit einem "Hello World" ausgegeben wird. Die Ausgabe geschieht mit einer Funktion printf();
    Nun ist das Nucleo-Board ja nur mit ner lumpigen LED und nem Taster ausgerüstet und nicht mit einem LCD oder so. Die printf()-Funktion sendet die Daten über den J-Link an den Debugger. Der gesendete Inhalt wird in einem kleinen Fenster unten in der Mitte angezeigt. Zum Fehlersuchen wird das später bestimmt sehr nützlich.

    Das ist der Code von meinem ersten Programm:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <stm32f446xx.h>
    
    void main(void) {
      RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;      //Taktversorgung Port A
      GPIOA->MODER |= (GPIO_MODER_MODER5_0);    //A5 => Ausgang
      GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_5);     //A5 0> Push-Pull
      GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR5);     //A5 ohne Pullup-Pulldown
    
      printf("Einstellung fertig\n");
    
      GPIOA->BSRR |= GPIO_BSRR_BS_5;            //Ausgang A5 setzen
     
      printf("LED gesetzt\n");
    
      while(1){
      }
    }

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Mein zweites Programm. Dieses Mal wird noch der Button mit einbezogen.
    Die LED wid eingeschaltet, solange der Knopf gedrückt ist.

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <stm32f446xx.h>
    
    void configLed(){
      RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;      //Taktversorgung Port A
      GPIOA->MODER |= (GPIO_MODER_MODER5_0);    //A5 => Ausgang
      GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_5);     //A5 0> Push-Pull
      GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR5);     //A5 ohne Pullup-Pulldown
    }
    
    void configButton(){
      RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;      //Taktversorgung Port C
      GPIOC->MODER |= GPIO_MODER_MODER0_0;      //C13 => Eingang
      GPIOC->PUPDR |= GPIO_PUPDR_PUPDR13_1;     //C13 => Pulldown einschalten
    }
    
    void main(void) {
      configLed();
      configButton();
      printf("Einstellung fertig\n");
    
      while(1){
        if(!(GPIOC->IDR & GPIO_IDR_IDR_13)){
          GPIOA->BSRR |= GPIO_BSRR_BS_5;            //Ausgang A5 setzen
          printf("Knopf gedrückt\n");
        }
        else{
          GPIOA->BSRR |= (GPIO_BSRR_BR_5);          //Ausgang A5 zurücksetzen
          printf("Knopf nicht gedrückt\n");
        }
      }
    }

    Edit:
    Noch eine Frage...gibt es in C eigentlich die Möglichkeit, ein Bit direkt zu kopieren? In Pseudocode ausgedrückt:
    Code:
    PA5 == PC13;
    Sodaß ich mir das If-Statement sparen könnte.
    Geändert von White_Fox (19.06.2016 um 14:19 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo,

    Code:
    GPIOA->BSRR |= (GPIO_BSRR_BR_5);          //Ausgang A5 zurücksetzen
    Müsste lauten:

    Code:
    GPIOA->BSRR &= ~(GPIO_BSRR_BR_5);          //Ausgang A5 zurücksetzen
    Noch eine Frage...gibt es in C eigentlich die Möglichkeit, ein Bit direkt zu kopieren?
    Nur wenn du die Ports als Bitfelder definierst.
    Allerdings spielen dann noch einige compilerspezifische Dinge mit rein.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Zeichenroutine dauert zu lange
    Von avrrobot im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 08.03.2012, 19:33
  2. Lange Leitung - oder was?
    Von manu418 im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 13.10.2010, 15:09
  3. Lange Leiterbahn abschliessen ?
    Von Mandi Nice im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 21.06.2008, 22:35
  4. Lange Leitung!
    Von waste im Forum Kopfnüsse / Wissensquiz
    Antworten: 20
    Letzter Beitrag: 10.02.2007, 22:09
  5. Timer für lange Laufzeiten
    Von toetzel im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 20.11.2006, 17:58

Berechtigungen

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

12V Akku bauen