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