ubuntuusers.de

AVR-Programmierung - Programm kompilieren

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Starback

Anmeldungsdatum:
28. November 2019

Beiträge: 13

Hallo, ich bitte um Hilfe im Bereich AVR-Programmierung.

Ich bin blutiger Anfänger und auf ein schönes Tutorial gestoßen: https://wiki.ubuntuusers.de/AVR/#Links

Soweit so gut.

Text "main.c" getippt und als Anfänger natürlich Kommentarzeilen eingefügt.

makefile runtergeladen und entsprechende Änderungen für Mikrocontroller "ATtiny13A" gemacht.

Zur Programmier-Umgebung:

  • Betriebssystem: Ubuntu 18.04.2 LTS

  • Entwicklungsumgebung lt. Tutorial "Geany 1.32" (Einstellungen gemacht)

Als erstes musste ich die Zeile "#define F_CPU 1200000" für Attiny13a in "main.c" als erste Zeile eintragen. Eine Fehlermeldung behoben.

Nach wie vor macht das compilieren Probleme!

Wenn der MCU-Name im makefile klein geschrieben ist (MCU = attiny13a) kommen folgende Meldungen:

Fehler 1

main.c:68:2: Fehler: >>DDRA<< nicht deklariert (erste Verwendung in dieser Funktion) DDRA = 0b00000001;

Fehler 2

main.c:88:22: Fehler: >>PortA<< nicht deklariert (erste Verwendung in dieser Funktion) zwischenspeicher = PORTA;

Fehler 3

makefile:392: recipe for Target 'main.o' failed
make: *** [main.o] Error 1

Kompilierung fehlgeschlagen

Wenn der MCU-Name im makefile wie folgt geschrieben wird, "MCU = Attiny13a" kommt folgende Fehler-Meldung:

Fehler 1

avr-gcc: Fehler: device-specs/specs-ATtiny13a: Datei oder Verzeichnis nicht gefunden

Fehler 2

makefile:392: recipe for target 'main.o' failed
make: *** [main.o] Error 1

Kompilierung fehlgeschlagen

Die Spezifikationsdatei ist vorhanden: usr/lib/gcc/avr/5.4.0/device-specs/specs-attiny13a

Die Header-Dateien sind in folgenden Pfaden vorhanden:

  • usr/lib/avr/include/avr/io.h

  • usr/lib/avr/include/util/delay.h

Lasse ich das Programm mit dem Mikrocontroller des Tutorials (MCU = atmega16) kompilieren, wird das ohne Probleme durchgeführt.

Ich würde mich freuen wenn jemand eine Idee für mich hätte.

Bei Bedarf kann ich gerne meine Dateien eingeben.

Schon mal Dank im Vorraus!

Bearbeitet von rklm:

Formatierung. Bitte beachte Forum/Syntax

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

So ganz sehe ich nicht durch, was Du wann und wo wie schreibst (groß/klein).

  • ATtiny13A

  • Attiny13a

  • attiny13a

  • ATtiny13a

Ich zähle 4 unterschiedliche Schreibweisen.

DDRA<< nicht deklariert (erste Verwendung in dieser Funktion) DDRA = 0b00000001;

Deklaration ist ja die Typfestlegung sowas wie

1
int DDRA;

Mit Microcontrollern und AVR kenne ich mich aber nicht aus.

PortA<< nicht deklariert (erste Verwendung in dieser Funktion) zwischenspeicher = PORTA;

Auch wieder 2 unterschiedliche Schreibweisen.

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

@rklm

Hallo ich habe deinen Hinweis gelesen betreffend Formatierung. Da ich zur Zeit nur mit Handy on kommen kann und mir keine Formatierungsmaske (wie Aufzählungspunkte) angezeigt werden, versuche ich es so gut es geht. Ich hoffe das ist ok.

Hallo user_unknown,

du hast recht, auf die Schreibweise sollte ich besser achten. Die Zeile "#define F_CPU 1200000" //für Attiny13a in "main.c" sollte so lauten: "#define F_CPU 1200000" //für ATtiny13A in "main.c"

Die Schrägstriche habe ich vergessen. Ab diesen Schrägstrichen ist es ein Kommentar.

Der MCU-Name im "makefile" ist im Tutorial auch klein geschrieben (MCU = attiny13a). Ich habe verschiedenes ausprobiert mit Groß-/Kleinschreibung und nicht auf die Schreibweise geachtet.

DDRA bedeutet "DatenRichtungsRegister mit Namen A", hier wird festgelegt, daß erste Bit soll ein Ausgang am Controller sein, daher die 1,alle anderen Bits sind Eingänge, daher die 0.

DDRA = 0b00000001;

Der Inhalt vom "Register" mit Namen PORTA soll in die Variable mit Namen "zwischenspeicher" geschrieben werden,wo der Inhalt anschließend bearbeitet werden soll.

zwischenspeicher = PORTA;

Die Pfeile bei ">>PortA<< nicht deklariert" hat der Compiler bei seiner Fehlermeldung angefügt.

Ich bin weiterhin für jeden Tip dankbar.

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

@Starback: Der ATtiny13A hat laut Datenblatt keinen PORTA und damit auch kein DDRA. Der erste (bzw. einzige Port) heißt Port B.

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

@Neral:

Ich danke für die Info.

Jetzt mein erkannter Fehler: Ich habe im makefile meinen Mikrocontroller (ATtiny13a) eingetragen, habe aber nicht daran gedacht den Port in Datei "main.c" zu ändern.

Ich hatte gestern abend das Datenblatt angeschaut und das da gemerkt.

Dennoch möchte ich mich bedanken!

Sobald ich das geändert und getestet habe, melde ich hier das Ergebnis.

Viele Grüße!

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

Kurze Anmerkung: Ursprünglich war das Programm für einen ATmega16 geschrieben. Daher der angegebene PORTA.

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

Habe den fälschlicher Weise eingetragenen PORTA bzw. DDRA geändert in PORTB bzw. DDRB und schon klappts mit dem compilieren.

Nochmals danke!

Nächste Aufgabe:

das Programm in den Controller schieben und starten.

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

Dieser Thread wurde erfolgreich abgearbeitet und kann geschlossen werden. Nochmals vielen Dank!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13189

Starback schrieb:

Dieser Thread wurde erfolgreich abgearbeitet und kann geschlossen werden.

Bitte selber machen. Danke!

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

@rklm

Hallo,selber machen ok, aber wie mache ich das?

Muss ich auf den Button "Abbestellen" gehen, ansonsten bitte ich um Info.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13189

Starback schrieb:

Muss ich auf den Button "Abbestellen" gehen, ansonsten bitte ich um Info.

"Als gelöst markieren"

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

rklm schrieb:

Starback schrieb:

Muss ich auf den Button "Abbestellen" gehen, ansonsten bitte ich um Info.

"Als gelöst markieren"

Es tut mir leid, ich bin zur Zeit nur mit Handy on und finde nichts mit "als gelöst markieren".

Habe nur 3 Buttons: "Antworten", "Abbestellen" und "Melden".

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13189

Starback schrieb:

rklm schrieb:

"Als gelöst markieren"

Es tut mir leid, ich bin zur Zeit nur mit Handy on und finde nichts mit "als gelöst markieren".

Uff! Ich muss zu meiner Schande gestehen, dass ich mir nie die Mobile-Version angeschaut habe. Da gibt es den Knopf tatsächlich nicht.

Habe nur 3 Buttons: "Antworten", "Abbestellen" und "Melden".

Ja, in der Vollversion gibt es das nur. Ich mach dann mal.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Vielleicht bist Du nicht eingeloggt.

Starback

(Themenstarter)

Anmeldungsdatum:
28. November 2019

Beiträge: 13

@rklm:

Ich danke dir für die Unterstützung.

@user_unknown:

Auch wenn ich eingeloggt bin finde ich das nicht. Aber Versuch wars wert, danke.

Antworten |