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
Musst Du eine Nuklearraketensteuerung programmieren? ;-)
Welchen Prozessor sollst du da beackern? Und macht da Ada überhaupt Sinn? Ansonsten: mein Beileid Zur Sache kann ich leider nichts beitragen. Ada kenn ich nur dem Namen nach .-)
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.
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.
>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
<mecker> von Ada keine Ahnung, aber das Vertrauen, dass jeder Ada Code automatisch fehlerfrei ist ... soweit ist man nun in der Automobilindustrie ... interessant. </mecker>
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.