-         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Programmierung in Arduino vs. RepberryPi

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.06.2019
    Beiträge
    70

    Programmierung in Arduino vs. RepberryPi

    Anzeige

    Hallo Zusammen.

    Zukünftig möchte ich meine Programmieraktivitäten in C auf AVR uCs (Bsp:ATTiny) umstellen.
    Hierbei liebäugel ich aus Hardwaregründen, mit Arduino oder RespberryPi. Beide Systeme sind auf einer kompakten LP voll ausgebaut und recht günstig.

    Vorwiegend beschäftige ich mich in kleine Codes von 50-100 Zeilen, mit binären/analogen IO-Ports und zeitbasierten Interrups im [ms]-Bereich.

    Wo seht ihr die grundlegenden Vorteile eines Arduino?
    Mit welchen Programmier-Hochsprachen kann man hier arbeiten?
    Mit der dauernden Register-Schieberei in C tuhe ich mich immer noch schwer. Gibt es Vereinfachungen unter Arduino?
    __________________________________________________ _____________________________
    | Sprache: C | AtmelStudio 7.x | Atmel-ICE | Favorit-uC: ATtiny84 | Status: Anfänger |

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.526
    Arduino ist zunächst ein IDE- und API-Konzept zur Programmierung.
    "Arduino-Boards" haben verschiedenste MCUs, von 8-bit AVR über 32-bit ARM Cortex M0, M3, M4 und ESP8266 bis zum dualcore ESP32 und noch einige andere mehr.
    Der Vorteil: Alle MCUs können mit fast identischem Code programmiert und gesteuert werden (außer low-level Hardware-Register Code, aber dafür gibt es universelle high-Level API Funktionen). Außerdem gibt es irrsinnig viele Libs für alle mögliche Hardware und Softwareprojekte.

    Original- Arduino-Boards: https://store.arduino.cc/ - die gibt es auch teilw. billiger als China-Klone;
    daneben noch weitere von 3rd parties, wie Adafruit, Teensy, ESP

    Arduinos werden üblicherweise per IDE in C++ programmiert, daneben gbt es noch z.B. Scratch und Java.
    Geändert von HaWe (27.08.2019 um 20:23 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    433
    Blog-Einträge
    3
    Raspberry Pi's haben ein oder mehrkernige Prozessoren mit 32 oder 64 Bit und Gigahertz Taktraten. Also weit weg von 8 Bit AVR. Man kann die Hardware-IO aber mit C/C++, Python und eigentlich allen Sprachen, die über ein C-Interface verfügen, ansprechen.


    Die Idee von Arduino war immer dem Interessierten möglichst viele Hürden des Einstiegs in die Microcontrollerwelt zu nehmen.
    Man muss keine Datenblätter lesen, nicht wissen, wie und mit welchem Kompiler man ausführbare Programme baut und wie man die auf einem Microcontroller zur Ausführung bringt.

    Wenn du mit Microcontrollern arbeiten willst, ist ein gewisses Verständnis vom deren Aufbau / Funktion aber immer gut. Arduino ist quelloffen, sodass man immer 'unter die Haube' schauen kann und so Stück für Stück dazu lernt.
    Geändert von Sisor (27.08.2019 um 18:53 Uhr) Grund: Typo

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.06.2019
    Beiträge
    70
    Zitat Zitat von Sisor Beitrag anzeigen
    Man muss keine Datenblätter lesen, nicht wissen, wie und mit welchem Kompiler man ausführbare Programme baut und wie man die auf einem Microcontroller zur Ausführung bringt.
    Das Datenblatt ist der heilige Gral der AVR uCs. Ich selber wurschtel bis quäle mich oft dort hinein und durch.
    Wie kann ich solche Mühen mit Arduino umgehen?
    Vermtlich legt man sich auf ein Arduino-Modell fest. Verlutlich gibt es hierbei reichlich deutsche "Datenblätter".

    Noch etwas;
    Bei welchem Arduino kann man sehr einfach ein Digitalanzeige oder Monitor zur visuellen Ausgabe, Bsp. von Zeiten, etc. anschließen?
    Bei meinem akt. uC muss ich erst eine aufwendige Code-Routine schreiben. Ich denke da eher an Plug&Play...
    __________________________________________________ _____________________________
    | Sprache: C | AtmelStudio 7.x | Atmel-ICE | Favorit-uC: ATtiny84 | Status: Anfänger |

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    433
    Blog-Einträge
    3
    Das Datenblatt ist der heilige Gral der AVR uCs. Ich selber wurschtel bis quäle mich oft dort hinein und durch.
    Wie kann ich solche Mühen mit Arduino umgehen?
    Vermtlich legt man sich auf ein Arduino-Modell fest. Verlutlich gibt es hierbei reichlich deutsche "Datenblätter".
    Beispiel: Ich will Zeit messen: In Arduino gibt's millis(). Keine Timerregister initialisieren und dann lesen (das wird automatisch gemacht).
    Beispiel: Interrupt bei Flanke von Low auf High am Pin 2 soll Funktion ISR aufrufen: attachInterrupt(2, ISR, RISING)
    Beispiel LCD
    Ansonsten haben viele Arduino-Boards USB mit einer seriellen Schnittstelle, über die man Daten aus- bzw. eingeben kann.
    Hier gibt's ne gute Übersicht über Arduino.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.06.2019
    Beiträge
    70
    Habe mir einige kleine Codes angeschaut - hier scheint gegenüber AVR uCs eine Vereinfachung mit C möglich zu sein.
    Alleine die analogen Eingänge auszulesen ist beim AVR wesentlich aufwendiger/komplizierter.
    Auch die I/O-Interrupt-Routine scheint einfacher. Wie sieht es mit Timer-Interrupts aus?

    Auch habe ich noch nicht den Unterschied zw. Micro und Nano gefunden.
    __________________________________________________ _____________________________
    | Sprache: C | AtmelStudio 7.x | Atmel-ICE | Favorit-uC: ATtiny84 | Status: Anfänger |

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    679
    Zitat Zitat von frabe Beitrag anzeigen
    Wie sieht es mit Timer-Interrupts aus?
    Die Standard Arduino API umfasst keine Timer Funktion. Es gibt aber Libraries wie Timer1 und Timer3, die einfachen Zugriff auf Timer bieten, selbst auf einigen Controllern anderer Chipfamilien, wo die Timer eigentlich ganz anders heißen.

    Einige entferntere Verwandte der Arduino Familie haben relativ guten einfachen Timer Support, z.B. die Teensy Boards
    https://www.pjrc.com/teensy/td_timin...rvalTimer.html


    Zitat Zitat von frabe Beitrag anzeigen
    Auch habe ich noch nicht den Unterschied zw. Micro und Nano gefunden.
    Was den USB angeht, kann man die Arduinos in zwei Gruppen aufteilen, die wo ein USB-seriell Wandler verbaut ist (als spezielle Chip-Lösung oder als entsprechend programmierter zweiter Controller), sowie die, wo der mit Arduino programmierte Controller die USB-Anbindung selbst macht.

    Ein Nano gehört zur ersten Gruppe. Beim Micro macht der Controller den USB-Verkehr selbst, er kann als USB-Verbundgerät arbeiten und neben der seriellen Verbindung Maus, Tastatur usw. simulieren. Manche ARM basieren Arduinos beherschen komplexe USB-Protokolle wie USB-Audio.

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.296
    Zitat Zitat von frabe Beitrag anzeigen
    Wo seht ihr die grundlegenden Vorteile eines Arduino?
    Der Vorteil ist, daß du ohne irgendetwas zu wissen schon allerhand erreichen kannst. Und da bin ich auch schon bei den Nachteilen: Ich hatte bisher zwei Berührungspunkte mit Arduino. Einmal wollten wir u.a. mit dem AD-Wandler eine Sprungantwort aufnehmen. Ein Komilitone zeigte mir begeistert, wie schnell und fix man mit dem Arduino-Zeugs einen Analogwert auslesen kann (war nur ein simpler Funktionsaufruf).
    Die Begeisterung war genauso schnell wieder weg als ich ihn fragte, wie man mit dieser Bibliothek denn jetzt eine Samplerate einstellen kann. Oder ob überhaupt sichergestellt ist, daß man nicht zweimal hintereinander denselben Wert im Speicher ausliest.

    Und das oben erwähnte millis() ist, wenn ich das richtig verstanden habe, keine Zeitmessung. Sondern man wartet eine Zeitspanne ab. Beides ist nicht dasselbe, auch wenn es manche für dasselbe halten.

    Für die Zielgruppe, Leute, deren Ziel eben nicht die Technik ist wie z.B. Künstler, ist es natürlich super. Auch für Prototypen kann man es mal verwenden, wenn man schnell etwas zusammenkleistern muß. Ansonsten: Arduino ist dafür gemacht daß jeder Idiot etwas programmieren kann. Und daraus folgt, daß auch in der Industrie jeder Idiot programmiert, auch solche, die davon definitiv besser die Finger gelassen hätten. Das Ergebnis ist in vielen Alltagsprodukten zu beklag...bewundern.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    679
    Zitat Zitat von White_Fox Beitrag anzeigen
    Und das oben erwähnte millis() ist, wenn ich das richtig verstanden habe, keine Zeitmessung. Sondern man wartet eine Zeitspanne ab. Beides ist nicht dasselbe, auch wenn es manche für dasselbe halten.
    Kann es sein, dass du millis() mit delay(x) verwechselst ? millis() wird meines Wissens nach per Timer Interrupt hochgezähllt, beim Uno glaube ich von Timer0, beim Teensy von SysTick.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    433
    Blog-Einträge
    3
    Zitat Zitat von White_Fox Beitrag anzeigen
    ...Und das oben erwähnte millis() ist, wenn ich das richtig verstanden habe, keine Zeitmessung. Sondern man wartet eine Zeitspanne ab. Beides ist nicht dasselbe, auch wenn es manche für dasselbe halten.
    Das hast du falsch verstanden: millis()
    Die Begeisterung war genauso schnell wieder weg als ich ihn fragte, wie man mit dieser Bibliothek denn jetzt eine Samplerate einstellen kann. Oder ob überhaupt sichergestellt ist, daß man nicht zweimal hintereinander denselben Wert im Speicher ausliest.
    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.

    Ansonsten: Arduino ist dafür gemacht daß jeder Idiot etwas programmieren kann. Und daraus folgt, daß auch in der Industrie jeder Idiot programmiert, auch solche, die davon definitiv besser die Finger gelassen hätten. Das Ergebnis ist in vielen Alltagsprodukten zu beklag...bewundern.
    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?

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Pin-Programmierung mit Arduino
    Von Moppi im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 01.10.2018, 13: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, 11:53
  3. Arduino Interrupt Programmierung
    Von Jeko im Forum Arduino -Plattform
    Antworten: 5
    Letzter Beitrag: 01.02.2017, 10:53
  4. Antworten: 13
    Letzter Beitrag: 07.11.2015, 01:21
  5. Erfahrungen/Tutorial: Programmierung von Arduino Due + entspr. IDE?
    Von Ford Prefect im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 18.06.2014, 10:07

Berechtigungen

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