- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 25

Thema: Wiederauferstehung des RP6? -- Erste Erfahrungen und Aufruf zum Austausch!

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    Also ich hab mich nun dafür entschieden, eine eher simple Hardware Abstraktion auf Basis des Crates 'avrd' selbst zu bauen. Die anderen sind zwar vielleicht genereller, aber haben so komplizierte Build Chains dass ich die Einfachheit des RP6 vermisse. Ich möchte das gerne "schrittweise begreifbar" haben, also erst mal verwenden und wenn man dann doch mal in die Funktionen schaut, sollen die auch nicht gerade über 10 Ecken laufen.

    Prinzipiell, gibt es für das grundlegendste einfach die Funktionen:
    Code:
    port::c4::set_output();
    port::c4::set_high();
    port::c4::set_low();
    Gibt's erste Meinungen hierzu? Ich glaube eine ähnliche Abstraktion mal beim Arduino-C gesehen zu haben... oder?

    Ein Beispiel wie man mit dieser API dann die 'set_leds()' umsetzen könnte gibt's hier:
    https://github.com/Pr0gm4n/rust-rp6l...1a5134edc189fe

    Nun verwende ich also für Register und Pins als Basis mal die Traits 'Pin' und 'Register' vom 'ruduino' Projekt (vermutlich daher die Nähe zur Arduino Abstraktion...), auch wenn ich hier und dort noch etwas daran verändern möchte:
    - Es würde eigentlich Sinn machen, wenn der Rust Compiler genutzt wird um zu überprüfen, dass man nur Pins auf high/low setzt, die in dem Moment auch als Output konfiguriert sind. Sollte eigentlich machbar sein.
    - Ich werde wohl auch über eine Art 'Pingroup' nachdenken, die in der gleichen Port-Gruppe sind (also z.B. PB7, PB1 und PB0 für die LEDs 4-6). Mit dieser Pin-Abstraktion müsste man die sonst alle nacheinander setzen, muss ja eigentlich nicht sein. Und ich würde hoffen dass man dann solchen Code schreiben könnte:

    Code:
    use crate::ports::*;
    
    pub fn set_leds(value: u8) {
        // set LEDs 1-3 connected on PORTC
        let pin_group = PinGroup([c6, c5, c4]);
        pin_group.set_outputs();
        pin_group.set(value);
    
        // set LEDs 4-6 connected on PORTB
        let pin_group = PinGroup([b0, b1, b7]);
        pin_group.set_outputs();
        pin_group.set(value >> 3);
    }
    Dabei müsste die 'set(...)' Funktion halt automatisch anhand der Anzahl vorhandener Pins maskieren, bzw. einfach die unteren x Bits verwenden.


    Liebe Grüße,
    Roland
    Geändert von Pr0gm4n (11.01.2023 um 16:29 Uhr)

Ähnliche Themen

  1. Erste Erfahrungen mit Robomow RL 500 / Umbau
    Von robokalle im Forum Staubsaugerroboter / Reinigungs- und Rasenmähroboter
    Antworten: 76
    Letzter Beitrag: 07.07.2019, 13:30
  2. Antworten: 17
    Letzter Beitrag: 01.09.2016, 18:20
  3. erste erfahrungen mit CSA-1V ... berührungslose strommessung
    Von kolisson im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 14.10.2010, 09:21
  4. Erste Erfahrungen mit dem AmTel - Cocktailmaschine
    Von alex007 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 04.03.2009, 20:41
  5. [ERLEDIGT] Erste Erfahrungen mit dem Conrad Roboter
    Von im Forum Robby CCRP5
    Antworten: 8
    Letzter Beitrag: 22.05.2007, 12:41

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress