Ada auf Mikrocontrollern (Ports, adressierung)

Gast #1601742
Guten Tag,

ich soll auf einen Avr programmieren und das mit Ada.Dazu nur ein paar 
fragen.
Unter C hab ich ein Char anleget und dort Ports reingelesen weils ja 8 
Bit werte sind. Wie mache ich das unter Ada? muss ich dort auch ein 
Caracter anlegen? Zudem die nächste Frage Bitoperationen wie logisches 
Oder und UNd um Bitmasken zuvergleichen gibt es doch unter Ada nicht 
oder?
Und wie Adressiere ich binär? Laut Lehrbuch mit 2#10000001# das 
funktioniert bei Integer aber bei charakter murmelt er rum kein 
Standart.char etc.
Als Compiler verwende ich das gps von Adacore. Ada und der Compiler sind 
vorgegeben, da kann ich nicht eben mal leider auf C runter.

mfg
Gast #1601820
Ich benutze einen ATMEGA 644 und ja habe einen Compiler der das 
mitmachen sollte, is alles erstma Testphase. Nutz halt das Gnatgp von 
Adacore also das GPS tool. NAcher wirds per Jtag rübergepresst 
(JtagICEmkII).

UNd naja Ada von daher sicherheitskritsche Anwendung auf Fahrzeug 
elektronik, ist halt alles bissle Forschungsfaktor drinne.
Gast #1601889
Ich wuerd mal das Ada Reference Manual (teuer!) hervorziehen und mir da 
die Datentypen reinziehen. Irgendwas mit Byte wuerd ich erwarten, kann 
aber auch smallint sein.
Gast #1601927
>Ada Reference Manual (teuer!)

EXTREM teuer. Kostet tatsächlich eine google-Suche...

http://lmgtfy.com/?q=ada+reference+manual

Um zu widerlegen, daß ADA keine Bitoperatoren kennt, muß man das noch 
nicht einmal lesen. Dazu reicht eine einfache google-Anfrage.

Und auch in C ist es sehr sinnvoll, einen char nur als character 
(Buchstaben) zu verwenden, und sonst für nix. In ADA mit der strengen 
Typprüfung ist das dann wohl erst recht unabdingbar.

Oliver
Gast #1601950
<mecker>
von Ada keine Ahnung, aber das Vertrauen, dass jeder Ada Code 
automatisch fehlerfrei ist ... soweit ist man nun in der 
Automobilindustrie ... interessant.
</mecker>
Gast #1602171
Es gibt derzeit zwei Ada Compiler mit Support-Routinen für die AVR 
8-Bitter. Der eine ist AVR-Ada, frei verfügbar auf Sourceforge.  Dort 
findet man auch einigen Code, der die Fragen ausreichend beantworten 
sollte.

AdaCore vertreibt seine eigene Portierung des GNAT auf AVR-Architektur. 
Dazu kommt idR sehr guter und umfangreicher Support durch 
AdaCore-Mitarbeiter.  Der AdaCore Support sollte die Fragen ebenfalls im 
Handumdrehen beantwortet haben.

Wenn Du in Ada einen 8-bit breiten Wert nutzen möchtest, gibt es die 
beiden Typen Interfaces.Integer_8 und Interfaces.Unsigned_8.  Der 
Standard-Typ Character ist, wie der Name schon sagt, für Textzeichen, 
nicht für Berechnungen.  Ein beliebiges Ada-Tutorial zeigt, wie man eine 
Typkonvertierung (in C ein cast) vornimmt.

In der Regel sollten Typen aus dem Problembereich definiert werden, 
nicht nach der Datenbreite.  Der Compiler macht daraus schon das 
richtige Format.

z. B.

    type Temperature is delta 0.5 range -55.0 .. 120.0;

definiert einen (fixed point) Typ mit dem Wertebereich von -55°C bis 
+120°C und einer Auflösung von einem halben Grad.


Wenn alle Bits von Port B auf Ausgang geschaltet werden sollen, tut's 
folgender Code

   MCU.DDRB_Bits := (0 .. 7 => DD_Output);


Du willst dann Bits 3 und 5 auf high und die anderen auf low setzen:

   MCU.PortB_Bits := (3 => True,
                      5 => True,
                      others => False);

oder

   MCU.PortB := 2#0001_0100#;

in beiden Fällen wird äquivalenter Code erzeugt
Gast #1604698
Hallo Manuel,

die meisten Fragen sollte Lady Ada beantwortet haben. Falls dennoch 
Fragen offen sind, gibt es eine Mailing-Liste für AVR-Ada unter

avr-ada-devel@lists.sourceforge.net

Du kannt mir auch gerne persönlich eine Nachricht schicken an

rolf   ebert   gcc         gmx    de
   punkt   punkt klammeraffe  punkt


Viel Erfolg
    Rolf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.