Forum: Mikrocontroller und Digitale Elektronik Hilfe für einen Kompletten Anfänger


von Sebastian (Gast)


Lesenswert?

Hallo,

ich möchte jetzt damit beginnen, mich mit ATMega Prozessoren 
ausseinanderzusetzen. Hierzu habe ich mir das

AMTEL Evalutionsboard von Pollin

und das

Addon Board mit Display von Pollin

gekauft.

Dazu habe ich mir ATMeage 8, 16 und 32 Prozessorgen gekauft.

Nun habe ich alledings keine Ahnung wie man das ganze überhaupt 
programmiert.

Könnte mit jemand eventuell einen Link zu einem Toturial schicken?

Mit welcher Software programmiert man die Microprozessoren, mit welcher 
Flasht man sie?

Welche Schnitstelle auf dem Evalutionsboard soll ich nehmen (die RS232 
oder die ISP)?

Kann mir jemand ein Testprogramm zum Testen des ganzen Evalutionboardes 
und des Addonboardes (DISPLAY) schicken, damit ich sehe ob das alles 
überhaupt funktioniert?

Mit welchen der Microprozessoren (ATMega 8, 16 oder 32) soll ich meine 
ersten Versuche wagen=



Ja ich weiß das sind eine Menge fragen. Würde mich sehr über schnelle 
Antworten und Hilfe freuen.


Grüße
Sebastian

von GastABC (Gast)


Lesenswert?

Hast du schon irgendwelche Programmiererfahrung?

Es gibt verschiedene Programmiersprachen, mit denen Du deinen Controller 
programmieren kannst:

Die 3 beliebtesten für ATmel-Controller sind wohl:

C: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Assembler: http://www.mikrocontroller.net/articles/AVR-Tutorial
Basic: http://www.roboternetz.de/wissen/index.php/Bascom

Programmieren tust du den Controller am besten mit einem ISP-Adapter.

Mit welchem Controller du Anfängst ist ziemlich egal, für die 
Einstiegsprojekte (LED leuchten lassen, ...) sind alle drei geeignet.

ATMega16 und 32 sind, bis auf die Speichergröße, identisch.

Eine gute Anlaufstelle für den Anfang hast du hier gefunden, aber bitte 
versuche auch mal, selbst ein paar Dinge herauszufinden. Anfangen zu 
lesen kannst du hier:
http://www.mikrocontroller.net/articles/Kategorie:AVR-Tutorial
und natürlich bei Google. ;)

von Sebastian (Gast)


Lesenswert?

Gut erstmal Danke für die Links.

Ich werde mich erstmal einlesen und mich dann nochmal melden :)

von Sebastian (Gast)


Lesenswert?

so ich hab jetzt bissler rumprobiert und habe das Evulationsboard zum 
laufen bekommen (hab das Testprogramm von pollin draufgeflasht.

jetzt habe ich allerdings eine Frage:

Wie initialisiere ich das Display auf dem Addon Board.

Es ist folgendes: LCD-Modul TC1602A-08

gibte es auch auf der pollin Seite.


Danke schonmal für euere Hilfe.

Grüße
Sebastian

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Lade Dir mal das Datenblatt zum HD44780 herunter. Da steht alles drin.

von die ??? (Gast)


Lesenswert?

Das Beste ist, wenn du erstmal ein paar LED's zum blinken bringst und 
etwas mit den Tastern anstellst. Erst der nächste Schritt (wenn nicht 
gar der übernächste) Schritt wäre dann das Display. Als Literatur würde 
ich auch die Tutorials dieser Seite empfehlen. (Ohne jetzt eine neue 
Debatte über ASM vs. C vs. Basic lostreten zu wollen, ) Eine Liste der 
benötigten Software:

 - AVR Studio, Programmierumgebung.
     http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.13SP2.exe

 - AVR-GCC. Compiler, wenn du in C programmieren willst.
     http://downloads.sourceforge.net/winavr/WinAVR-20070525-install.exe?modtime=1180099243&big_mirror=0

 - Datenblatt des gewählten Controllers.
     http://www.atmel.com/dyn/products/datasheets.asp?family_id=607

Hab' ich was vergessen?

von Sebastian (Gast)


Lesenswert?

Cool Danke

also ist da dieser HD44780 drin in meinem Display (darf ich fragen wo 
das steht damit ich das bei anderen Displays auch finden kann)?

OK ich werde euren Ratschlägen folgen und erstmal mit LEDs und Schaltern 
Spielen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>also ist da dieser HD44780 drin in meinem Display (darf ich fragen wo
>das steht damit ich das bei anderen Displays auch finden kann)?

98% der üblichen Dot-Matrix-Displays arbeiten mit dem oder einem 
kompatiblen Controller. Da will sich die Industrie nicht selbst ein Bein 
stellen.

von Sebastian (Gast)


Lesenswert?

Ah gut.


So jetzt hab ich das erste Problem:

NIch habe jetzt folgendes Programm aus dem Toturial rauskpiert und 
möchte es nun Assemblieren:

.include "m16def.inc"

ldi r16, 0xFF
out DDRB, r16

ldi R16, 0B11111100
out PORTB, r16

ende: rjmp ende


Wenn ich es nun versuche mit wavrasm zu Assemblieren kommt folgender 
Fehler:

m16def.inc(39) : error : Illegal Device Name


Ich habe die Datei aber aus dem AVR Ordner da reinkopiert.
Kann mir jemand helfen?

von jack (Gast)


Lesenswert?

"m16def.inc" ist für das AVR-Studio bestimmt.
Wahrscheinlich muß die .inc-Datei für wavrasm angepaßt werden.
Näheres dazu hier:

Beitrag "Wavrasm und Atmel mega 8"

von Sebastian (Gast)


Lesenswert?

Kann man denn auch mit AVR Studio Assemblieren und wenn ja wie?

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

Ja, mit der Schaltfläche "Build". Dann kannst du dein programm auch 
simulieren, bevor du es auf den controller brennst. Das geht mit "Run".

Wenn du "Build + Run" betätigst, dann kannst du es gleich nach dem 
Assemblieren testen!

MFG Mixer

von Sebastian (Gast)


Lesenswert?

Danke schön :)

Hat hier schonmal jemand für das Addon Board vom Pollin eine 
Displayansteuerung geschrieben?

Wenn ja wo finde ich diese?


Grüße
Sebastian

von R. B. (Firma: FHFB) (littleroyb)


Lesenswert?

Hi!

Hab das Pollin Board auch mal zusammengelötet.
Warum benutzt du nicht WinAvr?
Da ist ein Programmers Notepad dabei, mit dem ich z.B. code.
Und ein Makefile-Tool womit man dann ein Makefile generiert
und es in das Verzeichnis speichert, wo auch deine c-datei abgespeichert 
ist.

Da gibts auch gleich ne Einstellungsmöglichkeit für AVR_DUDE und für den 
COM-Port usw..
Ich habs auf Ponyser eingestellt.

 So damit lässt sich das Programm aus dem Programmer Notepad
über den Menüeintrag Tool->Make all compilieren und dann über Tool->Make 
Program auf das Board bringen. Ich verwende den ISP-Eingang, du 
wahrscheinlich auch.

Für WinAvr kann ich das Tut von dieser seite hier nur empfehlen. Damit 
bin ich auch in AVR-Welt eingestiegen.

Gruß

von Sebastian (Gast)


Lesenswert?

Hab das flashen jetzt hinbekommen.

Folgendes mach der Folgende Code:

.include "m16def.inc"

ldi r16, 0x00
out DDRA, r16

ldi r16, 0b11111100
out PORTA, r16

ende: rjmp ende


8 LEDs sind an PA1 - PA8 angeschlossen

Die ersten zwei Leuchten nicht. Die restlichen leuchten. Wenn ich das 
also richtig verstehe liest man das ganze von rechts nach links UND 1 
bedeutet HIGH, also 5V und 0 Bedeutet LOW also 0V.

Wenn da was Falsch ist bitte sagen :)

Mein Alte Frage bleibt trotzdem bestehen:
Gibt es hier irgendwo schon das Ganze Programm um mit dem ATMega 16 das 
LCD Display vom Pollin Board anzusteuern. (Kontakte am Chip sind egal da 
man die ja passend umstecken kann).

von Sebastian (Gast)


Lesenswert?

gibt ja leider keine EDIT:

Ich will das Display Prog deswegen, damit ich testen kann ob alles 
funktioniert. Im moment zeigt das Display nur einen Schwarzen Strcik an 
(aufgeteilt in die einzelnen Zeichen). Aber nur in der ersten Zeile. 
Habe bereits das Script getestet das ich hier gefunden habe. Es 
funktioniert aber leider nicht :(


Please Help :)

von Otto (Gast)


Lesenswert?

hast Du dies schon gelesen: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

Gruss Otto

von Sebastian (Gast)


Lesenswert?

Ja genau.

Davon habe ich den Quelltext komplett übernommen und das Display so 
angeschlossen wie er.

Aber leider bleibt es bei dem Strich ??


Hilfe :)?

von Otto (Gast)


Lesenswert?

Hallo Sebastian,

hast Du 4-Bit oder 8-Bit Modus angeschlossen und passt das Programm dazu 
- läuft der Controller und stimmt der Takt ?

Notfalls lass zusätzlich eine LED blinken.

Gruss Otto

von Sebastian (Gast)


Lesenswert?

Also ich habe den Quelltext der 4 Bit variante übernommen... Nichts.

Ich hab gerade so eine Testsoftware gefunden. Jetzt verschwindet sogar 
der Balken. Bringt mir so aber nichts :(

Was bringt das eine LED Blinken zu lassen? Woran soll ich die 
anschließen?

Kann mir mal jemand den gesammten Quelltext schicken um das Display zu 
initialisieren und das etwas draufsteht`?

von Otto (Gast)


Lesenswert?

Hallo Sebastian,

so wird das nichts.....

> Ich hab gerade so eine Testsoftware gefunden. Jetzt verschwindet sogar
> der Balken. Bringt mir so aber nichts :(

Da wurde das Display wahrscheinlich richtig initialisiert und Du hättest 
Zeichen anzeigen können

> Was bringt das eine LED Blinken zu lassen? Woran soll ich die
> anschließen?

Es bringt, dass Du weisst, ob der Controller läuft oder sich aufgehangen 
hat - ausserdem kannst Du abschätzen, ob der Takt ungefähr dem 
erwarteten entspricht.

Du kannst später zum Debuggen bei Aufruf einer Funktion die LED 
anschalten und anschliessend wieder aus.

Wenn Du nichts siehst, kannst Du keine Fehler finden.

Gruss Otto

von Sebastian (Gast)


Lesenswert?

Hab grad die Testsoftware nochmal gestartet und gesehen das ich einen 
PIN vergessen hatte. Jetzt erscheint sogar ein Text :):)


Jetzt müsste ich das nur noch selber schaffen.

Könnte mir mal jemand einen initalisierungs code schicken der dann 
irgendwas anzeigt (damit ich damit rumprobieren kann). Fände ich sehr 
gut ^^

also das Display funzt :)

von Sebastian (Gast)


Lesenswert?

Achja,

am besten wäre in AVR-GCC  :)

Hab mich jetzt für diese Sprache entschieden.

von Sebastian (Gast)


Lesenswert?

Oder noch besser in normalen Assembler.

Das versteh ich momentan am meisten und es hat einen besseren Editor 
finde ich :)

Wäre sehr nett wenn sich jemand die Mühe machen könnte und mir den 
weiter oben genannten Code machen könnte, damit ich damit ein wenig 
spielen könnte.

Sorry wegen so vielen Posts aber es gibt leider keinen Edit Button :(

Habe mich jetzt entgültig für Assembler entschieden (besseres Toturial)

von Sebastian (Gast)


Lesenswert?

Ach verdammt wiso gibt es hier keinen Edit Button

Hab grad nen totalen schmarn zusammen geschrieben. Ich meinte natürlich 
AVR-GCC.

Sorry wenn das jetzt für verwirrung sorgt :(



Ich habe bereits erfarhungen in C und deswegen eigenet sich das am 
Besten.


Also:

Wenn sich jemand dazu bereiterklären würde mir eine TEstprogramm für das 
genannte Display zu schicken, indem es initialisiert wird und 
www.sebimax.de ausgibt wäre ich sehr dankbar. Damit kann ich mich dann 
erstmal austoben.

Natürlich in AVR-GCC.

Ein EditButton wäre echt cool :)

Grüße
Sebastian

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

es gibt schon einen edit-button...aber dafür musst du dich anmelden ;)

Gruß, Marc

von Sebastian (Gast)


Lesenswert?

Würde mir dann jemand den Code schreiben oder mir dabei Helfen ihn 
selber zu schreiben in AVR - GCC??

von Sebastian H. (sebimax)


Lesenswert?

So habe mich nun angemeldet :)

von Chris K. (chrisk86)


Angehängte Dateien:

Lesenswert?

Hi!
Also, ich habe einmal eine C-Library geschrieben, die mit einem 8051er 
solche Displays ansteuert.

Du müsstest nur die Portpins anpassen, dann läuft's auch bei dir. Meine 
Version ist für 4bit-anschgeschlossene Displays gedacht...

Wenn du ein Beispiel für die Anwendung davon willst, lade ich dir das 
gerne auch noch hoch ;)

Chris

Edit: Die Idee ist nicht zu 100% von mir. Ich habe mal eine ähnliche 
Bibliothek irgendwo im Internet gefunden und mir das ganze selbst nach 
meinen Wünschen nachprogrammiert...

von Sebastian H. (sebimax)


Lesenswert?

wie gesagt, Über ein Testprogramm würde ich mich sehr freuen.

Das mit den Pins umstecken ist ja kein Problem, dam an ja auf dem Board 
alles so umstecken kann wie man will.

Würde mich sehr darüber freuen :)

Edit: hab grad gesehen das du sie schon hochgelade hast :)

Danke schonmal. Werd ich mir jetzt mal ansehen

Edit2: Da wird eine reg52.h eingefügt. Wo finde ich diese? Was bringt 
diese Dattei?
Kannst du mir es komplett geben, so das ich es nur noch Flashen brauch 
und es funzt und dann weiterprogrammieren kann ? Kannste mir sagen wie 
ich das ganze am ATMega 16 anschließe?

von SteffenUl (Gast)


Lesenswert?

Warum arbeitest du nicht einfach das Tutorial durch? Durch das flashen 
von fertigen Programmen in den Flash wirst du nicht viel lernen ...

von Chris K. (chrisk86)


Lesenswert?

Die reg52.h ist die Definitionsdatei von meinem Mikrocontroller. Diese 
Dateien werden von den meisten Compilern für die kompatiblen Controller 
mitgeliefert. Du müsstest also eine passende für deinen finden.
Ich habe hier leider keine Möglichkeit für AVR zu kompilieren, aber 
folgendes Programm müsstest du auch selbst kompilieren können:
1
#include <reg52.h> //Hier musst du die passende Datei für deinen Controller angeben
2
#include <LCD_Lib.c> //Ist meine vorhin hochgeladene Datei
3
4
code char z1[21]={"*LCD-DISPLAY - TEST*"}; //Beliebiger Text in Zeile 1
5
code char z2[21]={"********************"}; //Beliebiger Text in Zeile 2
6
/* Die Texte dürfen nicht länger als eine Display-Zeile sein.
7
Die Länge ist hier "21", da dadurch automatisch am Ende "\0" angehängt
8
wird, was meine Prozeduren als Ende erkennen.
9
Also 20 Zeichen -> Array der Länge 21 */
10
11
lcd_ini(); //Initialisieren
12
zeit_l(); //Kurze Verarbeitungszeit
13
14
goto_z(1); //Zu Zeile 1 springen
15
print_text(z1); //Zeile 1 ausgeben
16
17
goto_z(2); //...
18
print_text(z2); //...
19
20
21
while (1); //Endlosschleife... ;)

So müsste das erstmal klappen...

Chris

von Sebastian H. (sebimax)


Lesenswert?

Okay dann werd ich das ganze mal in AVR - GCC anpassen :)

ICh melde mich wenn es funktioniert oder auch wenn es nicht funzt :)

Edit: @SeffenU1: Ich habe bisher jede Programmiersprache durch anschauen 
von fertigen Quelltexten gerlernt. Und bisher immer erfolg gehabt. Ich 
nutze diese Quelltexte ja auch nur für die ersten Tests. Im Endefekt 
werde ich dann eh meine eigenen Texte schreiben (sobald ich es kann)

von Chris K. (chrisk86)


Lesenswert?

Also, nochmal zum Anschließen:
Du musst die Stelle lcd_lib.c anpassen:
1
sfr  LCD    = 0x80;    //Port 0 als Display-Ausgang
2
sbit  LCD_E    = LCD^4;    //Portpin P0.4 ist "Enable"
3
sbit  LCD_RS  = LCD^5;    //Portpin P0.5 ist "Register - Select"
4
sbit  LCD_RW  = LCD^6;    //Portpin P0.6 ist "READ - WRITE"
5
sbit  LCD_BG  = LCD^7;    //Portpin P0.7 ist Hintergrundbeleuchtung
Die 0x80 ist bei mir die Addresse von Port0. In deinen Datenblättern 
müsste die passende für deinen Controller stehen.

> LCD^4 bedeutet, dass Pin5 für den Enable-Pin des Displays verwendet wird
> LCD^5 bedeutet, dass Pin6 für den RS-Pin des Displays genutzt wird
> LCD^6 ist Pin7 und mit R/W des Displays verbunden
> LCD^7 ins Pin8 und muss bei dir nicht beschaltet werden. Ich habe ihn zur 
Steuerung der Hintergrundbeleuchtung verwendet.
Pins1-4 sind mit den Datenpins 4-7 vom Display verbunden...

Chris

PS: Das ganze funktioniert übrigens mit dem "RIDE"-Compiler (von 
Raisonance) und einem AT89S52 (8051er) von Atmel perfekt ;)

von Sebastian H. (sebimax)


Lesenswert?

" sfr  LCD    = 0x80;    //Port 0 als Display-Ausgang
sbit  LCD_E    = LCD^4;    //Portpin P0.4 ist "Enable"
sbit  LCD_RS  = LCD^5;    //Portpin P0.5 ist "Register - Select"
sbit  LCD_RW  = LCD^6;    //Portpin P0.6 ist "READ - WRITE"
sbit  LCD_BG  = LCD^7;    //Portpin P0.7 ist Hintergrundbeleuchtung
sbit  LCD_BF  = LCD^3;    //Portpin P0.3 ist DatenPin7, enthält aber bei 
LCD_RS=0 und LCD_RW=1 den "Busy-Flag"

"


Woran soll ich das Display nun anschließen?? PA, PB, PC, .... ????

von Chris K. (chrisk86)


Lesenswert?

An einen beliebigen Port. Du musst nur die Addresse des Ports 
herausfinden (hab' ich vorhin was zu geschrieben)

Chris

von Sebastian H. (sebimax)


Angehängte Dateien:

Lesenswert?

Oh mann ich komm mit dem Blöden Makefiles überhaupt nicht zurecht. Da 
kommen immer beschissene Fehlermeldungen. Aus dem Grund werde ich 
wahrscheinlich doch bei Assembler bleiben. Da funzt wenigstens der 
Compiler ^^. Also nochmal ein neuer Aufruf:

Hat jemand eine Initialisierung in Assembler die das Display 
initialisiert und etwas anzeigt (Text)?

Wäre nett wenn den jemand posten könnte.

Alternativ: Erklärt mir jemand warum meine Makefile immer den selben 
Fehler bringt:
> "make.exe" all
      0 [main] sh 2868 sync_with_child: child 1436(0x11C) died before 
initialization with status code 0x0
   9661 [main] sh 2868 sync_with_child: *** child state waiting for 
longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
      0 [main] sh 1308 sync_with_child: child 3876(0x11C) died before 
initialization with status code 0x0
  27558 [main] sh 1308 sync_with_child: *** child state waiting for 
longjmp
/usr/bin/sh: fork: Resource temporarily unavailable

-------- begin --------
avr-gcc (WinAVR 20080402rc1) 4.3.0
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Compiling C: lcd-routines.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=./lcd-routines.lst  -std=gnu99 -Wundef 
-MMD -MP -MF .dep/lcd-routines.o.d lcd-routines.c -o lcd-routines.o
In file included from lcd-routines.c:2:
lcd-routines.h:15:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition
lcd-routines.c: In function 'set_cursor':
lcd-routines.c:121: warning: 'tmp' may be used uninitialized in this 
function
lcd-routines.c: At top level:
lcd-routines.c:160: fatal error: opening dependency file 
.dep/lcd-routines.o.d: No such file or directory
compilation terminated.
make.exe: *** [lcd-routines.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

Makefile im Anhang.

In den 2 weiteren Files kommt mein Quellcode (eimal als .c und die 
andere als .h)

von Sebastian H. (sebimax)


Angehängte Dateien:

Lesenswert?

.c Datei

von Sebastian H. (sebimax)


Angehängte Dateien:

Lesenswert?

.h Datei

Bitte helft mir beim suchen der Fehler ^^

von Sebastian H. (sebimax)


Lesenswert?

keiner da der mit mit meinen problemen helfen kann?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Sebastian H. wrote:
> Oh mann ich komm mit dem Blöden Makefiles überhaupt nicht zurecht. Da
> kommen immer beschissene Fehlermeldungen.

Eigentlich antworte ich nicht auf Postings mit dieser Ausdrucksweise.

Warum doch, hat nur mit dieser Zeile zu tun:

> avr-gcc (WinAVR 20080402rc1) 4.3.0

Anscheinend gibt es einen Versuchsballon für ein neues WinAVR. Diese 
Zeilen sehen allerdings nicht gut aus:

>> "make.exe" all
>       0 [main] sh 2868 sync_with_child: child 1436(0x11C) died before
> initialization with status code 0x0
>    9661 [main] sh 2868 sync_with_child: *** child state waiting for
> longjmp
> ...

Das sind Probleme, die früher schon unter MingGW bzw. Cygwin übersetzten 
Programmen aufgetaucht sind.

Edit: 
http://www.google.de/search?hl=de&q=sh+sync_with_child&btnG=Suche&meta=

Hier gibt es eindeutig Probleme mit den WiNAVR-Programmen, die von Make 
aufgerufen wurden, um den Sourcecode zu übersetzen.

Letztendlich führt das dazu, dass die Übersetzung nicht abgeschlossen 
werden konnte und deshalb auch keine Objektdatei erstellt wurde. Das 
führt dann zuerst zu einer Linker-Fehlermeldung (kann keine Ojektdatei 
finden) und dann zu einer Make-Fehlermeldung (Linker hat sich 
beschwert).

> lcd-routines.c: At top level:
> lcd-routines.c:160: fatal error: opening dependency file
> .dep/lcd-routines.o.d: No such file or directory
> compilation terminated.
> make.exe: *** [lcd-routines.o] Error 1
>
>> Process Exit Code: 2
>> Time Taken: 00:00

Mit der WinAVR Version 20071221 (GCC 4.2.2) kann dein Projekt mit 
obigem Makefile, lcd-routines.c und lcd-routines.h problemlos übersetzt 
werden.

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

Add: Die Übersetzung genau dieses Projekts ist als HEX-Datei im Anhang.

von Sebastian H. (sebimax)


Lesenswert?

Sry wegen den Ausdrucksweise (war bisserl stinkig weil ich 2 Stunden 
davor probiert hab und rein gar nix ging.

Ich lad mir jetzt mal die andere Version und teste es erneut. :)

Danke auch für das umwandeln. Werde ich auch testen und bescheid geben.


Danke (ich mag dieses Forum. Da wird einem sehr gut geholfen)


Edit: Leider funktioniert mein Code nicht. Es bleibt ein Schwarzer 
streife. Also stimmt in der initialisierung irgendwas nicht. Weiß da 
jemand weiter?

Grüße
Sebastian

von Sebastian H. (sebimax)


Angehängte Dateien:

Lesenswert?

So habe das ganze nochmal Probiert:


------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.

Compiling C: lcd-routines.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=./lcd-routines.lst  -std=gnu99 -Wundef 
-MMD -MP -MF .dep/lcd-routines.o.d lcd-routines.c -o lcd-routines.o
In file included from lcd-routines.c:2:
lcd-routines.h:15:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition
lcd-routines.c: In function 'lcd_enable':
lcd-routines.c:55: error: called object '_delay_us(5.0e+1)' is not a 
function
lcd-routines.c:60: error: called object '_delay_us(5.0e+1)' is not a 
function
lcd-routines.c:162:2: warning: no newline at end of file
lcd-routines.c: At top level:
lcd-routines.c:162: fatal error: opening dependency file 
.dep/lcd-routines.o.d: No such file or directory
compilation terminated.
make.exe: *** [lcd-routines.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

kommt mit der Makefile im Anhang.

Habe mir jetzt die oben genannte Version geladen. Woher kommt diese 
Datei?

lcd-routines.c:162: fatal error: opening dependency file 
.dep/lcd-routines.o.d: No such file or directory
compilation terminated.

Wäre dankbar für weitere unterstützung bei diesem Problem und bei dem 
oben genannten Problem.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Zwei Stunden Fehlersuche sind Peanuts. Da musst du noch dickfelliger 
werden oder fruher sinnvoll fragen ;-)

Gut ist, dass das ältere WinAVR auf deinem Rechner nicht abstürzt. 
Schlecht ist, dass du jetzt Änderungen im Sourcecode gemacht hast, die 
neue Übersetzungsfehler hervorrufen:

> lcd-routines.c:55: error: called object '_delay_us(5.0e+1)' is not a
> function
> lcd-routines.c:60: error: called object '_delay_us(5.0e+1)' is not a
> function

Du könntest mal statt _delay_us(5.0e+1) schreiben _delay_us(50). 
_delay_us(50) geht bei meinen Programmierexperimenten.

Und bitte angewöhnen, bei Fragen genau den Sourcecode anzugeben, der den 
Fehler oder die Probleme verursacht. Anders wird das Antworten zum 
Ratespiel, auf das sich nicht viele potenzielle Helfer einlassen.

ADD: Ein schwarzer Streifen im LCD kann mehrere Ursachen haben. Die 
banalste Ursache kann ein falsch eingestellter Kontrast sein. Eine 
dffizilere Ursache kann eine falsche Initialisierung des LCD-Controllers 
des LCDs sein.

von Sebastian H. (sebimax)


Lesenswert?

OK also hab das geändert.

Folgender Fehler tritt mit der oben geschickten Makefile immer noch auf:

lcd-routines.c:162: fatal error: opening dependency file 
.dep/lcd-routines.o.d: No such file or directory

Aber die Datei gibt es ja gar net ^^ Die steht auch nirgendwo in der 
Makefile wenn ich mich net täusche.

Der oben genannte fehler:

> lcd-routines.c:55: error: called object '_delay_us(5.0e+1)' is not a
> function
> lcd-routines.c:60: error: called object '_delay_us(5.0e+1)' is not a
> function

lag daran das ich den Strichpunkt vergessen hatte ^^

Hier dann der gesammte Auszug:

------ begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Compiling C: lcd-routines.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=./lcd-routines.lst  -std=gnu99 -Wundef 
-MMD -MP -MF .dep/lcd-routines.o.d lcd-routines.c -o lcd-routines.o
In file included from lcd-routines.c:2:
lcd-routines.h:15:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition
lcd-routines.c:162:2: warning: no newline at end of file
lcd-routines.c: In function 'set_cursor':
lcd-routines.c:123: warning: 'tmp' may be used uninitialized in this 
function
lcd-routines.c: At top level:
lcd-routines.c:162: fatal error: opening dependency file 
.dep/lcd-routines.o.d: No such file or directory
compilation terminated.
make.exe: *** [lcd-routines.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

von Sebastian H. (sebimax)


Lesenswert?

Help?

von Sebastian H. (sebimax)


Lesenswert?

Könnte mir jemand vielleicht seine makefile schicken, von der er weiß 
das sie funktioniert ?

Vielleicht hab ich ja irgendwo in der Makefile einen Fehler reingemacht 
^^

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Sebastian H. wrote:

> Folgender Fehler tritt mit der oben geschickten Makefile immer noch auf:
>
> lcd-routines.c:162: fatal error: opening dependency file
> .dep/lcd-routines.o.d: No such file or directory
>
> Aber die Datei gibt es ja gar net ^^
> Die steht auch nirgendwo in der Makefile wenn ich mich net täusche.

Die Datei lcd-routines.o.d und der Ordner .dep werden vom AVR-GCC 
automatisch erstellt (s. Optionen -MMD -MP -MF .dep/lcd-routines.o.d im 
Makefile).

Es bringt nichts, dir ein anderes Makefile zu suchen. Das Makefile oben 
funktioniert und alle anderen Makefiles sind ähnlich aufgebaut.

Die Probleme liegen anderswo. Leider habe ich derzeit keine Idee wo, 
weil die Probleme hier nicht auftreten und mir deine Fehlermitschnitte 
nichts sagen.

Ich schlage vor, dass du mal die Programmierumgebung säuberst, indem du 
von Make die automatisch erzeugten Zwischendateien löschen lässt:

make clean

Dann startest du einen neuen Übersetzungsversuch

make all

Dann nachsehen, ob es das Verzeichnis .dep gibt (Probleme beim Erzeugen 
des Ordners?). Und ob eine Datei drin steht (Probleme beim Erzeugen der 
Datei?).

von Sebastian H. (sebimax)


Lesenswert?

OK habe das gemacht.

Wenn ich make clean mache kommt folgendes:

> "make.exe" clean
      0 [main] sh 4600 sync_with_child: child 5048(0x11C) died before 
initialization with status code 0x0
    195 [main] sh 4600 sync_with_child: *** child state waiting for 
longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
      0 [main] sh 4560 sync_with_child: child 2792(0x11C) died before 
initialization with status code 0x0
  27966 [main] sh 4560 sync_with_child: *** child state waiting for 
longjmp
/usr/bin/sh: fork: Resource temporarily unavailable

-------- begin --------

Cleaning project:
rm -f lcd-routines.hex
rm -f lcd-routines.eep
rm -f lcd-routines.cof
rm -f lcd-routines.elf
rm -f lcd-routines.map
rm -f lcd-routines.sym
rm -f lcd-routines.lss
rm -f ./lcd-routines.o
rm -f ./lcd-routines.lst
rm -f lcd-routines.s
rm -f lcd-routines.d
rm -f lcd-routines.i
rm -rf .dep
-------- end --------


> Process Exit Code: 0
> Time Taken: 00:01


Habe auch dannach Make All gemacht und es ging nichts.

Könnte es am Betriebssytem liegen?? Ich hab das ganze im Moment auf 
Vista laufen. Flashen tu ich mit meinem zweitrechner?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Läuft ein Windows VISTA mit 64-Bit auf deinem Rechner?

Damit gibt es ähnliche Fehlerberichte
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=44251&start=100

Dort und auf der folgenden Seite gibt es auch Hinweise vom User 
Madwizard zum "sync_with_child" Problem, wie man versuchen kann, das 
Problem zu lösen.

http://www.madwizard.org/electronics/articles/winavrvista

von Sebastian H. (sebimax)


Lesenswert?

jo läuft mit 64 Bit

Ich probiers mal auf meinem XP Rechner. Daran hätte ich denken sollen.

Edit: Tatsächlich, das wars. Auf dem XP Rechner läuft es einwandfrei :)

DANKE DANKE DANKE

von Sebastian H. (sebimax)


Lesenswert?

Display initialisert aber leider trotzdem nicht :(

Wieso initialisiert das Display nicht ??

Ich versteh das einfach nicht :(

von Sebastian H. (sebimax)


Angehängte Dateien:

Lesenswert?

Display initialisiert. Also der Balken verschwindet. Allerdings mit 
einem Anderen Code.

Dieser ist im Anhang. Allerdings habe ich das Problem, das das Display 
keinen Text anzeigt.

Woran könnte das liegen?

Angeschlossen ist es wie in der Anleitung beschrieben.

DB0 - DB3 sind nicht angeschlossen

Der Rest wie beschrieben.


Ist da ein Fehler im Script oder ein Fehler meiner Seite?

von Sebastian H. (sebimax)


Lesenswert?

hat sich erledigt

hab selber ein Prog geschrieben und nun Funktioniert es :)

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
Noch kein Account? Hier anmelden.