mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DOGM128 & ATMEGA88 - Library von Google code


Autor: Studentle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein kleines Projekt mit dem DOGM128. Man muss das Rad ja nicht 
jedes mal neu erfinden. Also habe ich mich dafür entschieden folgende 
Library zu verwenden:

http://code.google.com/p/dogm128/wiki/dogm132_atme...

Ich habe als Hardware einen ATMega88 und das DOGM128.

Nun mein Porblem:

Die Beispiele kann ich mit "make" erstellen und die .hex mit meinem 
Programmer auf meine Hardware programmieren. Und es tut ;)

Gut jetzt möchte ich das ganze mit AvrStudio verwenden. Welche Dateien 
muss ich in meinen Projektordner kopieren und über AvrStudio includen?

Ich habe versucht einfach alle .c und .h zu importieren, allerdings 
lässt scheinen mir immernoch die fonts zu fehlen.

Wie kann ich ohne das makefile die ports  pins  hardware definieren?

Wäre nett wenn mir jemand dazu einwenig weiterhelfen könnte.

THX

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Studentle schrieb:
> Man muss das Rad ja nicht
> jedes mal neu erfinden. Also habe ich mich dafür entschieden folgende
> Library zu verwenden:

Ich will ehrlich sein: Man kann sowas sagen, wenn man versteht was in 
dieser lib passiert. Da du noch nichteinmal derart dezidiertes Wissen 
hast um deine Entwicklungsumgebung korrekt einzurichten, gehe ich mal 
stark davon aus, dass du weder je ein Mikrocontrollerprojekt begonnen 
nocht Kenntniss von AVR hast. Darum linke ich dir an dieser Stelle das 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Hier solltest du einen besseren Einstieg finden, als sinnlos 
irgendwelchen Code zu klauen den du weder verstehen geschweige denn 
debuggen kannst.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> Also habe ich mich dafür entschieden folgende
>Library zu verwenden:

>http://code.google.com/p/dogm128/wiki/dogm132_atme...

Aber hoffentlich nicht diese müllige Schaltung nachgebaut. Elkos sind da 
absolut fehl am Platz.

MfG Spess

Autor: olikraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@spess53
Jaja, mittlerweile benutze ich Kerkos, wobei die Elkos immer noch einen 
guten Dienst tun... vielleicht sollte ich mal die Schaltpläne 
aktualisieren.

@Studentle
Man kann alle Makros für die Port Definitionen auch an den Anfang der 
Datei dogm128.h schreiben:

Aus
-DDOG_SPI_A0_PORT=B -DDOG_SPI_A0_PIN=1
wird
#define DOG_SPI_A0_PORT B
#define DOG_SPI_A0_PIN 1


Grüße
Oliver

Autor: Studentle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

vielen Dank für deine Hilfe, vom Meister persönlich, welch eine Ehre.

Als Hardware verwende ich ATMega88 @ Pollin Eval-Board.
Display ist fliegend verkabelt und tut einwandfrei. Nur die Software 
macht mir Sorgen :(

Wie schon gesagt in der Lib, Make ausführen klappt, .hex wird erzeugt 
und tut einwandfrei:
avr-size fonts.elf
   text    data     bss     dec     hex filename
   7078      12     131    7221    1c35 fonts.elf


Soweit sogut, dank deinem Tip habe ich jetzt die Defines in der 
DOGM128.h angepasst:
#define DOG_SPI_ATMEGA

#define DOG_SPI_SS_PORT    B
#define DOG_SPI_SS_PIN    2

#define DOG_SPI_SCL_PORT   B
#define DOG_SPI_SCL_PIN   5

#define DOG_SPI_MOSI_PORT   B
#define DOG_SPI_MOSI_PIN  3

#define DOG_SPI_A0_PORT    B 
#define DOG_SPI_A0_PIN    1

#define DOGM128_HW

Ich habe jetzt unter Source Files alle *.h Files zum Projekt hinzugefügt 
und das selbe mit den *.h Files

Außerdem habe ich mit das Makefile nochmal genauer angesehen und 
Versucht sie im AVRStudio anzupassen:

"Project" -> "Configuration Options" -> "Custom Settings"

Die "Custom Compilation Options" angepasst, dem Make File entsprechend:

AVRStudio Build:
avr-gcc  -mmcu=atmega88 -Wall -std=gnu99 -g -I.   -I ../../lib/        -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wstrict-prototypes  -MD -MP -MT dogm128.o -MF dep/dogm128.o.d  -c  ../lib/dogm128.c

Make
avr-gcc -DF_CPU=8000000 -mmcu=atmega88 -DDOGM128_HW -DDOG_SPI_ATMEGA -DDOG_SPI_S S_PORT=B -DDOG_SPI_SS_PIN=2 -DDOG_SPI_SCL_PORT=B -DDOG_SPI_SCL_PIN=5 -DDOG_SPI_M OSI_PORT=B -DDOG_SPI_MOSI_PIN=3 -DDOG_SPI_A0_PORT=B -DDOG_SPI_A0_PIN=1 -g -Os -Wall -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -I. -I../.. /lib/ -std=gnu99 -Wstrict-prototypes -c -o ../../lib/dogmsh.o ../../lib/dogmsh.c

Der Build läuft soweit.

Allerdings bekomme ich 2 Errors:
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: fonts.elf section .text will not fit in region text
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: region text overflowed by 1162 bytes

Was mache ich falsch dass der Code nicht mehr in die text region passt?

Autor: olikraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Nun, das Makefile benutzt ein Feature des Linkers nur diejenigen Dateien 
einzubinden, die auch tatsächlich benötigt werden. Das funktioniert so, 
dass nur zuerst eine Lib erzeugt wird und dannach die Lib als ganzes 
gegen das main() Programm gelinked wird.

Leider kenne ich mich mit dem AVR STUDIO nicht aus und kann Dir deshalb 
nicht sagen welche Möglichkeiten es gibt, aber eines geht immer: Du 
kannst per Hand die Arbeit des Linkers machen.

Nehmen wir mal das "font" Beispiel Programm.
Du beginnst damit nur die eine .c datei aus dem example-Ordner 
dazuzunehmen, versuchst zu linken und bekommst dadurch eine 
Fehlermeldung (Symbol fehlt). Die nimmst eine weitere .c Datei dazu in 
der das Symbol definiert ist. Das machst Du so lange, bis alles 
durchläuft.

Man könnte das auch umgekehrt machen, mit allen Dateien anfangen und 
solange Dateien wegnehmen, bis ein Linkerfehler auftritt, dass ein 
Symbol nicht aufgelöst werden konnte.

Sofern das AVR Studio das zulässt, kann man auch - wie im Makefile - 
eine Lib erstellen. D.h. alles was nicht in den Example Ordner ist, 
kommt in die Lib. Dann wird das Beispielprogramm und die Lib gelinkt. 
Wie gesagt, ich weiss nicht, ob und wie das im AVR Studio geht.

Weiteres gerne auch per e-mail

Oliver

Autor: Studentle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

okey... das erklärt einiges.

Also das AVRStudio nutzt WinAVR also den GCC als Compiler. Mit Hilfe der 
GUI kann ich dort auch Parameter übergeben.

Wenn ich das auf die schnelle gesehen habe auch dem Linker. Auf der 
anderen Seite habe ich auch die Möglichkeit die Makefile von dir zu 
verwenden. Allerdings hat das bisher noch nicht zum Erfolg geführt...

Wie lautet denn die Linkeroption? Das würde ich gerne als erstes testen.

Vielen Dank

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was mache ich falsch dass der Code nicht mehr in die text region passt?

Größeren AVR nehmen. Das Flash ist voll.

Autor: Studentle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
>>Was mache ich falsch dass der Code nicht mehr in die text region passt?
>
> Größeren AVR nehmen. Das Flash ist voll.

haha, 2 makes beim einen passts in µC und beim anderen nicht.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Größeren AVR nehmen. Das Flash ist voll.

>haha, 2 makes beim einen passts in µC und beim anderen nicht.

Du kannst gerne weiterlachen. Poste dein komplettes AVStudio
Projekt, dann kann man mal nachsehen was schief läuft.
Irgend ein doppeltes include vermute ich.

Autor: Studentle (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Holger,

so anbei "mein Code"

das ist der Orginalsource von Oliver:

http://code.google.com/p/dogm128/downloads/detail?...

Ich habe nur den Ordner ATMega88 und lib gezippt.

Modifziert habe ich:
 dogm128.h

Unter "Project" -> "Configuration Options" -> "Custom Settings"
Habe ich nur den Include Pfad hinzugefügt.

Die oben erwähnten Compileroptionen sind in diesem Projket nicht mehr 
vorhanden.

Ich versuch das Beispiel ATMega88/fonts zu kompilieren, dort befindet 
sich auch die AVRStudio Projektdatei!

LG

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ha, ha. Das hat er ja echt tricky gemacht.
Source als Library compilieren und dann beim linken
ne Hex Datei draus machen und alles wegwerfen was nicht benutzt wird.

Da wird aber einiges als Einstellung beim Studio nötig;)
Falls es überhaupt geht. Keine Ahnung wie man das jetzt
hinkriegt.

Autor: Studentle (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Soooo,

ich habe von den entsprechenden Fensteren im AVRStudio Screenshots 
gemacht.

Hier kann ich beliebige Compiler / Linkeroptionen eintragen (wenn ich 
das richtig verstehe)

Mit was muss ich den Linker füttern damit er nur die wirklich genutzten 
Funktionen einbindet.

LG

Autor: olikraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi All

Zum AVRStudio kann ich wohl nichts beitragen, werde aber die Diskussion 
interessiert verfolgen.

Ich meinte aber verstanden zu haben, dass bei uns beiden zumindest das 
Makefile funktioniert und ein Hex-File liefert, dass flashbar ist.

Beste Grüße,
Oliver

Autor: Studentle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So,
ich habe nun ein Workaround.

Für die Entwicklung nutze ich AVRStudio, um das Hexfile zu erzeugen 
nutze ich die Makefile von Oliver.

Diese lässt sich in AVRStudio einbinden und muss nicht extern gestartet 
werden.

Eine Frage könnte ich noch: Kann ich in einem Makefile mehrere include 
Pfade angeben?

Autor: olikraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Im Makefile gibt es eine Zeile die lautet etwa so:
COMMON_FLAGS += -I. -I$(DOGDIR)
Hier können eigene Pfade hinzugenommen werden:
COMMON_FLAGS += -I. -I$(DOGDIR) -I/home/my_path

Grüße,
Oliver

Autor: Franc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

ist in dieser Lib von Oli Kraus auch dieses Beispiel:
http://schmelle2.de/wp/wp-content/uploads/2010/10/...
enthalten? Das würde ich gerne mal testen auf meinem mega328 mit 
DOGM128. Weis aber nicht wie die Quelldateien benannt sind.

Autor: Franc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weis jemand wo man für dieses Beispiel den Code herbekommt?

Autor: Franc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.