-         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Programmierung in Arduino vs. RepberryPi

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    07.06.2019
    Beiträge
    73
    Anzeige

    Zitat Zitat von Mxt Beitrag anzeigen
    dann würde ich eher den Teensy LC oder 3.2 empfehlen. Das Problem beim USB ist, wenn man den vermurkst, dann hat man keine .
    Wenn ich das richtig verstanden habe, ist die Teensy-Serie ein Clone der Arduinos.
    https://www.pjrc.com/teensy/
    Werden die Teensy´s genau so programmiert wie Arduino? Oder gibt es hier andere Bibliotheken und veränderte C-Syntax?
    ___________________________

    Damit ich in der Qual der Wahl nicht versinke, noch folgende Frage;

    Welche Literatur (Papierform) würdet ihr mir für Arduino-C empfehlen?
    Meine Schwerpunkte sind;
    Display-Ansteuerung,
    analoge/binäre IO,
    Tastenentprellung via Interrupt,
    Timer, Zähler,
    Eingangs- und Timer-Interrupts,
    PWM.

    Bücher über C habe ich genug - Arduino sieht hier etwas anders (einfacher/schlanker) aus - vermutlich Bibliotheken im Hintergrund.

    - - - Aktualisiert - - -

    Ich sehe gerade, dass es für Teensy unterschiedliche Hersteller gibt; PJRC, Adafruit, Joy-It.
    Die 3 werden zB. bei Conrad und Distrelec angeboten. Sind euch zw. diesen Herstellern Qualitätsunterschiede bekannt?
    Sollte man(n) von bestimmeten Herstellern die Finger lassen?
    PS:
    Bei Qualität kommt´s mir nicht auf ein paar Euro an.
    Geändert von frabe (30.08.2019 um 15:04 Uhr)
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Status: EwigerAnfaenger |

  2. #22
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.044
    .. Das Problem beim USB ist, wenn man den vermurkst, dann hat man keine Verbindung mehr zum PC ..
    Das klingt jetzt drastisch nach Henne-Ei-Geschichten: ich clone mir (wann immer es geht) einen mit Firmware ausgelieferten Controller "bare metal", zumindest Download der Firmware vom Chip. Ist aber keine wirkliche Lösung, weil es eben aufs Programmierverfahen OHNE Bootloader zurückgreift. Lohnte sich für mich fast immer. Ich habe so schon Bootloader vom asuro, arduino-clone, STM32F4DISCOVERY, usw.

    PS/OT: uuups, der achte Tausender ist voll :.-.)
    Ciao sagt der JoeamBerg

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    688
    Also erstmal ein paar Punkte zur Software:

    Auch wenn im Hintergrund verschiedene Compiler werkeln (normalerweise entweder avr-gcc oder gcc-arm-none-eabi) ist die Programmiersprache in Arduino normalerweise C++, derzeit meist in Form von C++14, bei einigen ältern Boards C++11. Einige speicherfressende Teile der Standardbibliothek und an ein Betriebssystem gebundene Teile von C++ wie Threading oder Filesystem fehlen.

    Dazu kommen dann die normalen Prozessor Bibliotheken für den Low Level Registerzugriff usw.

    Dazu kommt dann die Standard Arduino Funktionalität, wie in der Doku beschrieben
    https://www.arduino.cc/reference/en/

    Projekte wie der Teensy, erweitern die Arduino Bibliotheken um zusätzliche Funktionen. Die normalen Arduino Entwickler sind da eher konservativ.

    Literatur: Z.B. Arduino Kochbuch bzw. Cookbook ist ganz nützlich. Natürlich auch die Datenblätter. Beim Teensy auch das Forum. Webseiten wie die von Adafruit.


    Hardware kann man in drei Kategorien einteilen:

    - Originale Arduinos. Etwas teuer, aber es fliesst auch Geld an die Entwickler der IDE, die Webseite usw.

    - Firmen mit eigenenen selbst entwickelten Arduino kompatiblen Produkten und Zubehör, Webseiten mit Informationen usw. z.B. Adafruit, Sparkfun, Seeed, PJRC, Watterott

    - Klone, meist aus China, billig von da, oder mit Logo von Importeuren, MakerFactory, JoyIt usw. Das sind dann meist nur Nachbauten von existierenen Boards. Solange man einen Arduino nicht als solchen (originalen) verkauft, ist der Nachbau ja ausdrücklich erlaubt.


    Teensys sind von PJRC das andere sind Reseller, siehe
    https://forum.pjrc.com/threads/23601...l-Distributors
    (da gibt es in D auch günstigere als Conrad ...)
    Geändert von Mxt (30.08.2019 um 16:54 Uhr)

  4. #24
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.715
    Zitat Zitat von frabe Beitrag anzeigen
    DANKE!Das Prinzip und die Schreibweise des C99 scheint gleich zu sein.
    Zitat Zitat von frabe Beitrag anzeigen
    Werden die Teensy´s genau so programmiert wie Arduino? Oder gibt es hier andere Bibliotheken und veränderte C-Syntax?
    Welche Literatur (Papierform) würdet ihr mir für Arduino-C empfehlen?
    Bücher über C habe ich genug - Arduino sieht hier etwas anders (einfacher/schlanker) aus - vermutlich Bibliotheken im Hintergrund.
    Das zieht sich durch diesen ganzen Thread. C ist C. Und das unabhängig vom Prozessor, auf dem es läuft: AVR oder Mainframe. Die Sprache hat sich von der ursprünglichen Form (C ohne Zahl oder auch K&R genannt) über C99 usw weiterentwickelt. Die Syntax hat sich eigentlich nicht verändert. Es gibt Dokumente, die den Standard beschreiben. Eine Sprache, die sich nicht an den C99 Standard hält, darf sich nicht so nennen.

    Arduino ist eine C++ Umgebung. C++ ist mitnichten einfacher oder schlanker als C. Auch dazu gibt es einen Standard.

    Hardware kommt im C-Standard ncht vor, auch Interrupte nicht. Also: Display-Ansteuerung, analoge/binäre IO, Tastenentprellung via Interrupt, Timer, Zähler, Eingangs- und Timer-Interrupts, PWM haben mit C primär nichts zu tun. C kennt nichts, außer einigen reservierten Worten wie if, else, while, for ... , Variable verschiedener Typen und Funktionen.

    Wenn man die Hardware seines Systems kennt, von Neuman/Harvard, Memory mapped I/O oder verschiedene Busse oder Adressräume, Interruptvektoren etc, kann man in C und/oder Assembler von C aufrufbare Funktionen schreiben, die sich um die Hardware kümmern. Manches muß auch der Linker erledigen, wie SFRs auf feste Adressen mappen. Wie die Hardware selbst funktioniert, steht in ihrer Doku, dem Datenblatt oder Users Manual. Das gilt natürlich auch für C++. Man kann auch Methoden schreiben und sie von C++ benutzen. Wenn man Glück hat, hat schon einer das Passende geschrieben. Im Arduino Bereich ist das oft der Fall, wobei man immer berücksichtigen muß, daß nicht jeder Code wirklich gut und brauchbar ist.

    MfG Klebwax

    P.S. avr-GCC oder GCC-arm-none-eabi ist der gleiche Compiler, der gcc. Er erzeugt nur Code für verschiedene Hardware. Unter dem Namen GCC erzeugt er auf einem Linux-PC auch Code für diesen. Der Langname ist nur nötig, wenn Crosscopiliert werden muß.
    Geändert von Klebwax (30.08.2019 um 17:29 Uhr)
    Strom fließt auch durch krumme Drähte !

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    688
    Hier kann man sich C und C++ in der Übersicht ansehen
    https://en.cppreference.com/w/
    das ist quasi der "unabhängige Teil", der auf Arduino, Raspberry Pi und eigentlich überall sonst, verfügbar ist

    (*) Wie gesagt, minus Dinge wie std::thread, Filesystem, auf den 8-Bittern auch std::vector usw.


    Ach ja, wo wir bei Büchern sind
    http://www.cppbuch.de/

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    433
    Blog-Einträge
    3
    Zitat Zitat von oberallgeier Beitrag anzeigen
    ps/ot: Uuups, der achte tausender ist voll :.-.)

  7. #27
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.770
    Zitat Zitat von Sisor Beitrag anzeigen
    Das hast du falsch verstanden: millis()

    Natürlich hat eine allgemeine Bibliothek / Framework seine Grenzen. Aber das heißt nicht, dass es nicht geht [Beispiel], sondern vielmehr, dass man für spezielle Anwendungen wieder LowLevel gehen kann / muss, falls das nicht jemand anderes z.B. in Form einer Bibliothek entwickelt hat.


    Das würde ich eher der Qualitätssicherung eines Unternehmens zuschreiben als einer sehr gut getesteten HighLevel-Bibliothek, mit der man viele Fehler gar nicht erst machen kann. Auch hier das [obige Beispiel]. Im ersten Fall sieht das Setup der Analogsignalmessung so aus:
    Code:
      pinMode(A0, INPUT);
    im zeitoptimierten so:
    Code:
     ADCSRA = 0;             // clear ADCSRA register
      ADCSRB = 0;             // clear ADCSRB register
      ADMUX |= (0 & 0x07);    // set A0 analog input pin
      ADMUX |= (1 << REFS0);  // set reference voltage
      ADMUX |= (1 << ADLAR);  // left align ADC value to 8 bits from ADCH register
    
      // sampling rate is [ADC clock] / [prescaler] / [conversion clock cycles]
      // for Arduino Uno ADC clock is 16 MHz and a conversion takes 13 clock cycles
      //ADCSRA |= (1 << ADPS2) | (1 << ADPS0);    // 32 prescaler for 38.5 KHz
      ADCSRA |= (1 << ADPS2);                     // 16 prescaler for 76.9 KHz
      //ADCSRA |= (1 << ADPS1) | (1 << ADPS0);    // 8 prescaler for 153.8 KHz
    
      ADCSRA |= (1 << ADATE); // enable auto trigger
      ADCSRA |= (1 << ADIE);  // enable interrupts when measurement complete
      ADCSRA |= (1 << ADEN);  // enable ADC
      ADCSRA |= (1 << ADSC);  // start ADC measurements
    Falls ein Fehler vorliegt, wo finde ich ihn schneller?


    Zitat Zitat von frabe Beitrag anzeigen
    Danke für eure reichhaltigen Einblicke !-)

    In der Tat brauche ich keinen Ersatz für delay(), sonder um Timer-Interrupt gesteuertes Zeitmanagement in [ms].
    Wenn millis() Interruptbasiert arbeitet, kann ich damit auch eine saubere Statemaschine aufbauen.
    Bei Respberry Pi könnte ich mir ein "Anzapfen" der internen Linux-Uhr vorstellen - ist aber ein anderes Thema.

    An den beiden Bsp von @Sisor ist der Unterschied zum herkömmlichen C im AVR-uC gut zu erkennen.
    Mit dem 2ten Code kann der ADC natürlich viel genauer und sauberer eingestellt werden.
    Wichtig ist mM nach nur die Kenntnis um die Grenzen des Arduino-C und um die eigene Anforderung - "brauche ich (im akt.Projekt) diese Präzision überhaupt?" - ich nicht!
    noch was anderes hierzu:
    bei AVR-Studio gelten diese Registerdinger natürlich nur für AVRs.
    Willst du einen ARM Cortex M0, M3, M4 oder ESPs damit programmieren, funktionieren sie natürlich nicht mehr, weil die Register dort ganz andere sind - da musst du dann einzeln wieder ganz neue Registerbefehle lernen, mit anderern Entwicklungsumgebungen.
    Auch bei Arduino kannst du die AVR-Registerbefehle genau so verwenden, musst es aber nicht - stattdessen gehen AUCH die highLevel Befehle pinMode, digitalRead, digitalWrite, analogRead, AnalogWrite.
    Weieterer Vorteil:
    sie sind Interrupt-safe programmiert (dadurch sind sie zwar etwas länger und zeitintensiver, aber runtime-sicherer).
    Weiterer Vorteil:
    pinMode, digitalRead, digitalWrite, analogRead, AnalogWrite funktionieren auch genau so bei ARM Cortex M0, M3, M4 oder ESP, in der selben Arduino IDE.

    Und das wäre für mich der wichtigste Grund, jetzt von AVR-Studio zu Arduino zu wechseln, und sofort mit leistungsfähigen ARM Cortex oder ESP Boards zu arbeiten.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. [ERLEDIGT] Pin-Programmierung mit Arduino
    Von Moppi im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 01.10.2018, 14:37
  2. STM32 contra ARM Cortex M3 (Arduino Due, Teensy): Performance per Arduino vs. nativ C
    Von HaWe im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 14
    Letzter Beitrag: 22.11.2017, 12:53
  3. Arduino Interrupt Programmierung
    Von Jeko im Forum Arduino -Plattform
    Antworten: 5
    Letzter Beitrag: 01.02.2017, 11:53
  4. Antworten: 13
    Letzter Beitrag: 07.11.2015, 02:21
  5. Erfahrungen/Tutorial: Programmierung von Arduino Due + entspr. IDE?
    Von Ford Prefect im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 18.06.2014, 11:07

Berechtigungen

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