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

Thema: Vorstellung - Xmega Tutorial - Linksammlung - Atmega32U4 Beispiel

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    LunaAVR kannte ich bisher noch nicht.
    Hab das ganze mal ein wenig überfolgen und es schaut sehr interessant aus.
    Mal schauen ob ich mal dazu komm, da ein wenig zu probieren.

    Gruß Flo

  2. #2
    Falls ein paar Tipps hilfreich sind, stehe ich gerne zur Verfügung.
    Einige der Ausdrücke in C existieren auch in luna, beispielsweise BitShift mit << und >>.

    Die Portierung von C-Source ist möglich, zum Großteil wird der geschriebene Code kürzer, beispielsweise beim setzen von Portpins.
    Auch ist es sinnvoll in solchen Fällen eine entsprechende Klasse anzulegen, um den Code modular aufzubauen.
    Ein gutes Beispiel hierfür sind die Klassen zur Ansteuerung von SD-Karten mit FAT32 und langen Dateinamen.

    Zu beachten ist, dass in luna im Unterschied zu C ein anderes Parameterkonzept für Methoden verwendet wird. D.h. Variablen/Arrays und Strukturen befinden sich in einem geschlossenen Namensraum, sodass die Übergabe von referenzierten Variablen oder Arrays in der Regel nicht notwendig ist. Die Implementation ist jedoch zusätzlich geplant.

    Beispiel:

    in vielen C-Funktionen werden Buffer-Arrays als Referenz/Zeiger übergeben:
    Code:
    uint8_t recv_str(char *buf, uint8_t size) { .. }
    in luna erstellt man für die meisten Anwendungen bestenfalls eine Klasse, in welcher globale Arrays Klassenweit verfügbar sind. Hierdurch ist eine Referenzübergabe nicht notwendig, da es auf das Selbe hinausläuft:
    Code:
    class USB
    
      dim buf(31) as byte
    
      function recv_str(size as byte) as byte
        dim i as byte
        if size then
          for i=0 to size
            buf(i) = readByte()
          next
          return 1 ' success
        endif
        return 0 ' failed
      endfunc
    
      function readByte() as byte
        return [...]
      endfunc
    
    endclass
    aus dem Hautprogramm ist der Buffer ebenfalls über die Klasse erreichbar:

    Code:
    a = usb.buf(0)
    Einfacher ist es jedoch, man nutzt die dynamische Speicherverwaltung in luna und damit die Möglichkeit dynamische Datenlängen einzulesen:
    Code:
    class USB
    
      function recv_str(size as byte) as string
        dim i as byte
        dim s as string
        if size then
          s = spc(size) ' buffer erzeugen (schneller wenn Speicherbereich bereits angelegt)
          for i=1 to size
            s.ByteValue(i) = readByte()
          next
        endif
        return s
      endfunc
    
      function readByte() as byte
        return [...]
      endfunc
    
    endclass
    Man benötigt prinzipiell also keinen Byte-Buffer für das Einlesen von Strings, sondern überlässt das der Speicherverwaltung.
    Bei großen, festen Blöcken wie im Beispiel der SD-Karten-Sektoren und -Daten ist es demgegenüber dann natürlich sinnvoller und schneller einen innerhalb der Klasse globalen Speicherbereich zu allozieren. Hierfür gibt es die MemoryBlocks, auf die dann alle möglichen Zugriffe vorgenommen werden können.

    Gruß, rgf
    Geändert von rgf (02.05.2012 um 14:45 Uhr)

Ähnliche Themen

  1. Vorstellung
    Von Patroclus im Forum Offtopic und Community Tratsch
    Antworten: 1
    Letzter Beitrag: 23.11.2011, 08:04
  2. Xmega auf MAC?
    Von Snow Wolf im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 1
    Letzter Beitrag: 18.09.2011, 01:18
  3. Vorstellung SPR-VI
    Von BlueNature im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 15
    Letzter Beitrag: 05.06.2010, 09:52
  4. Vorstellung InTra
    Von JollyJumper8 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 4
    Letzter Beitrag: 03.10.2009, 23:47
  5. 2D-, 3D ...Echtzeit - Bahnverfolgung Ideen- und Linksammlung
    Von sigo im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 09.02.2006, 21:53

Berechtigungen

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

Solar Speicher und Akkus Tests