Forum: Mikrocontroller und Digitale Elektronik MyAvr LCD Quellcode in C


von Tom (Gast)


Lesenswert?

Hallo,

ich bin am verzweifeln ! Ich habe das MyAvr Usb Lcd Board und weiss 
nicht wie ich Daten ausgeben kann. Die lcdtest.hex funktioniert. Ich 
komme bloß mit dem umprogrammieren der Ausgangsports nicht klar. Ich 
bräuchte mal   einen funktionierenden Quellcode in C den ich dann 
benutzen kann.

MfG

von Frank L. (franklink)


Angehängte Dateien:

Lesenswert?

Hallo,
in der Anlage findest Du die von mir verwendete Bibliothek für den 
Anschluss an das myAVR-Board.

Gruß
Frank

von Tom (Gast)


Lesenswert?

Danke, genau das Habe ich gesucht ! eine Frage noch, wenn ich beim AVR 
Studio auf Build gehe um den hex-code zu aktualisieren sagt er immer:gcc 
plug-in: Error: Object file not found on expected location C:\Users\Tom 
Oehrke\Desktop\test\spannung\df\default\df.elf

und erstellt ja dann die hex datei nicht, wie löse ich das problem ?

von Tom (Gast)


Lesenswert?

Fehler meinerseits, den obigen Beitrag einfach ignorieren. Aber andere 
Frage warum kann ich wenn eine Projektdatei öffne nicht auf Build 
Schaltfläche klicken um einen neuen hex-code zu erstellen ?

von gast (Gast)


Lesenswert?

mal so ganz nebenbei

wie wäre es wenn du versucht  seber draufzukommen
auch LCD  routinen selbst zu schreiben

der lerneffekt is verdammt riesig ...
musst ich selbst feststellen

von gast (Gast)


Lesenswert?

sicherlich ist es einfacher fertigen code zu nehmen oder fetige projekte 
einfach nachzubauen
wenn man aber mal vor einem problem steht was kein anderer hat .. ist 
die frage groß


und schwer ist es nicht fertigen C code herrumzukopieren das dieser im 
eigenen projket läuft

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich weiß dieser Thread ist schon etwas älter, aber ich finde den für 
mich am passendsten.

Wie es hier schon kurz angesprochen wurde, lernt man am besten wenn man 
es selber macht. Also habe versucht ich einen Code zur Initialisierung 
selber zu schreiben mit dem MyAVR Board MK2 USB und dem myAVR LCD v2.5. 
Und, man kann es schon erahnen, es funktioniert nicht so recht bis gar 
nicht. Bin ein neuling in C und habe eigentlich nur die Grundsachen 
drauf.
Bin mir beim Ablauf nicht so 100% sicher. Habe mich an das PAP von der 
technischen Beschreibung gehalten. (Seite 11)
http://www.myavr.info/download/produkte/lcd/techb_lcd_de_en.pdf

Kann aber mit dem LCD_cmd nichts anfangen bzw. weiß nicht die Funktion 
und und den Sinn und hab es deswegen auch nicht eingebaut.


Programmiere mit dem neusten AVR-Studio.

Wäre schön, wenn mir jmd helfen könnte.

Gruß
Christian

von Konrad (Gast)


Lesenswert?


von Christian (Gast)


Lesenswert?

Hey danke für den Link.

Werde mir das Programm mal in Ruhe anschauen. Allerdings schaffe ich das 
heute nicht mehr.

Hatte einen ähnlichen Code verwendet (vllt das Original?), und der hat 
auch funktioniert. Nur konnte ich diesen Code zu meinem eigenen 
Verständnis nicht nachvollziehen. Auch war er für mich als Anfänger und 
für mein Empfinden, doch sehr unübersichtlich und manche Befehle sagen 
mir auch gar nichts.
Außerdem ist doch ein eigener Code, wenn auch mit etwas Hilfe, doch 
immer am schönsten und für den Lerneffekt durchaus nützlich.

Aber wie gesagt, ich werde mir den Code morgen früh mal in aller Ruhe 
anschauen, vllt kann ich da was nachvollziehen und anwenden.

Wäre froh wenn sich morgen vllt jmd wieder um meine Fragen kümmern 
könnte.

Schönen Abend noch!

Gruß
Christian

von Karl H. (kbuchegg)


Lesenswert?

Christian schrieb:

> Außerdem ist doch ein eigener Code, wenn auch mit etwas Hilfe, doch
> immer am schönsten und für den Lerneffekt durchaus nützlich.

Im Prinzip schon.
Nur ist die Ansteuerung eines LCD nicht unbedingt trivial wenn man das 
noch nie gemacht hat. Von daher macht es Sinn zunächst vorhandenen, 
funktionierenden Code im Detail zu studieren.

von Christian (Gast)


Lesenswert?

Guten Morgen,

habe mir den Code jetzt mal angeschaut und wirklich nachvollziehen kann 
ich ihn im Detail nicht. Die grobe Struktur habe ich rauslesen können. 
Nur er ist meiner Meinung nach, sehr komliziert mit den vielen 
Unterprogrammen.

Habe zum Verstaändnis aber ein paar Fragen, vllt blicke ich dann da 
besser durch.

Die erste ist, dass ich gelesen habe, dass man das Display nach der 
Selbstinitialisierung 3-mal in den 8-Bit-Modus setzen soll, bevor man es 
in den 4-Bit-Modus setzt. Ist das hier weggelassen oder habe ich das 
übersehen?
1
void lcd_init(void)
2
{
3
    // Port D = Ausgang
4
    DDRD=0xff;
5
    PORTD=0;
6
    // warten bist LCD-Controller gebootet
7
    wait_ms(200);        
8
    // 4-BitModus einschalten
9
    PORTD=0x20;            
10
    // Schreibsignal
11
    PORTD |= (1<<3);  //sbi(PORTD,3);
12
    PORTD &= ~(1<<3);  //cbi(PORTD,3);
13
    wait_ms(5);            // Zeit zum Umschalten lassen
14
    // ab hier im 4-Bit-Modus
15
    lcd_cmd(0x28);        // Funktions-Set: 2 Zeilen, 5x7 Matrix, 4 Bit
16
    //lcd_off();
17
    lcd_cmd(0x06);        // Entry Mode
18
    lcd_on();
19
    lcd_clear();
20
}
Hier wird doch dirket in den 4-Bit-Modus geschaltet, nach dem das 
Dispaly sich selbst initialisiert hat.

Weitere Fräge wäre was den |= und &= bedeuten. Kommen in meinen Blättern 
über die Grundbefehle in C, welche ich mir besorgt habe nicht vor.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Christian schrieb:

> Weitere Fräge wäre was den |= und &= bedeuten. Kommen in meinen Blättern
> über die Grundbefehle in C, welche ich mir besorgt habe nicht vor.

Besorg dir andere "Blätter über die Grundbefehle in C". Die 
Bitoperatoren und kombinierte Zuweisungen sollten drin erklärt sein. 
Alternativ: Bitmanipulation und 
http://de.wikibooks.org/wiki/C-Programmierung:_Ausdr%C3%BCcke_und_Operatoren#Kombinierte_Zuweisungen

von Oliver (Gast)


Lesenswert?


von Christian (Gast)


Lesenswert?

Danke Steffan für den Link. Hat etwas Licht ins dunkle gebracht. 
Allerdings sind mir viele Sachen weiterhin unklar bzw nicht 
nachvollziehbar wie in dem Programm gesprungen wird. Hab es mal versucht 
mit dem AVR-STudio debugger nachzuverfolgen aber helfen kann der mir 
auch nur begrenzt. Langsam weiß ich nicht ob ich das Displayzeug jemals 
verstehen werden

Mal eine kleine Frage außerhalb von dem myAVR-Ding, aber trotzdem zum 
Display. Das myAVR-Display soll ja nur eine Übung für ien weiteres 
Projekt sein. Da hab ich allerdings den Enable und den RS auf PORTB 
gelegt die DB's aber auf PORTD. Könnte das ein Problem werden bzw. kann 
ich den fertigen Code auch nicht mehr verwenden?

von Karl H. (kbuchegg)


Lesenswert?

Christian schrieb:
> Danke Steffan für den Link. Hat etwas Licht ins dunkle gebracht.
> Allerdings sind mir viele Sachen weiterhin unklar bzw nicht
> nachvollziehbar wie in dem Programm gesprungen wird. Hab es mal versucht
> mit dem AVR-STudio debugger nachzuverfolgen aber helfen kann der mir
> auch nur begrenzt. Langsam weiß ich nicht ob ich das Displayzeug jemals
> verstehen werden

Dein Problem ist eher nicht das DIsplay an sich, sondern programmieren 
im Allgemeinen.
Wenn dir die Bitoperationen bisher noch nichts gesagt haben, dann fehlen 
dir noch ein paar Vorübungen (mit zb ein paar LED an einem Port, die 
gezielt ein/aus geschaltet werden, ein Lauflicht etc.)

> Mal eine kleine Frage außerhalb von dem myAVR-Ding, aber trotzdem zum
> Display. Das myAVR-Display soll ja nur eine Übung für ien weiteres
> Projekt sein. Da hab ich allerdings den Enable und den RS auf PORTB
> gelegt die DB's aber auf PORTD. Könnte das ein Problem werden bzw. kann
> ich den fertigen Code auch nicht mehr verwenden?

WEnn der Code so geschrieben ist, dass man die Portbelegung einzelner 
Signale leicht ändern kann, dann ist es kein wirkliches Problem. 
Normalerweise ist es kein Problem.

von Karl H. (kbuchegg)


Lesenswert?

Christian schrieb:

> Die erste ist, dass ich gelesen habe, dass man das Display nach der
> Selbstinitialisierung 3-mal in den 8-Bit-Modus setzen soll, bevor man es
> in den 4-Bit-Modus setzt. Ist das hier weggelassen oder habe ich das
> übersehen?

Nein. Das hats du schon richtig erkannt.

von Christian (Gast)


Lesenswert?

Natürlich ist das Programmieren in C ein Problem, bin ja auch Anfänger 
und mache das erst seit 2 Wochen so richtig. Nur ist es eben so, dass 
ich mein Projekt für das ich das Display brauche nicht ewig hinauszögern 
kann bzw sollte. Und da dachte ich eben ok, die Übungen werden erst mal 
reichen. War wohl nicht so.
Ein Lauflicht habe ich ja z.B. schon gemacht aber eben nicht mit 
Bitoperationen sondern über eine for-Schleife. Und für einen Würfel habe 
ich auch schon Maskierungen verwendet. Nur sagte mir eben die 
kombinierte Zuweisungen nichts.

Dann muss ich eben wieder bei null anfangen. Und verbinde damit die 
Frage wer kennt ein gutes Buch wo C für den AVR bzw für einen µC erklärt 
wird. Gerne auch mit Erfahrungsberichten. Habe schon viele Bücher für 
die PC-Anwendung gesehen aber das sagt mir nicht so zu.

Zudem hat es sich mit dem programmieren die nächstgen Tage eh erledigt, 
weil mein Programmer gestern, aus unerklärlichen Gründen, angefangen hat 
zu rauchen. Muss jetzt erstmal nen Transistor und ne neue Diode 
auftreiben.

von Karl H. (kbuchegg)


Lesenswert?

Christian schrieb:

> Dann muss ich eben wieder bei null anfangen. Und verbinde damit die
> Frage wer kennt ein gutes Buch wo C für den AVR bzw für einen µC erklärt
> wird.

Das wird schwer.
Solche Bücher sind rar ...

> Gerne auch mit Erfahrungsberichten. Habe schon viele Bücher für
> die PC-Anwendung gesehen aber das sagt mir nicht so zu.

...
und damit sind wir beim nächsten Punkt.
Du solltest deine 'Abneigung' gegen Programmieren am PC ablegen. Ein 
hier immer wieder geäußerter Vorschlag, der durchaus etwas für sich hat, 
ist es nämlich, sich seine ersten Sporen in der C-Progammierung auf dem 
PC zu verdienen.

Warum das?
Weil man auf dem PC aus dem Stand heraus ein System hat, das sich so 
verhält, wie es in der Literatur beschrieben ist. Dazu kommt, dass man 
auf dem PC ein System vor sich hat, bei dem man um mindestens 
3-Zehnerpotenzen einfacher debuggen kann, als auf einem µC bei dem das 
Programm halt einfach nicht geht und keiner weiß warum.
Auf dem PC hast du einen Monitor, einen Debugger und ein 
funktionierendes stdout zur Verfügung, das du benutzen kannst um deinem 
Programm während der Arbeit zuzusehen. Der für deinen AVR vorhandene 
Simulator zusammen mit dem Debugger ist da nur ein müder Abklatsch 
dagegen. Wenn auf deiner PC-Konsole saubere Statusmeldungen, die über 
printf ausgegeben werden durchlaufen und du diese in Detail studieren 
kannst um herauszufinden wo du dich vertan hast, so hat das eine ganz 
andere Qualität als die diversen Krücken, die man mit einem AVR 
akzeptieren muss. Bis man auf dem AVR sein Programm mit printf für 
Debugausaben spicken kann, ist es ein weiter Weg. Auf dem PC 
funktioniert das aus dem Stand heraus.

Dazu kommt, dass C an sich auf dem PC völlig gleich funktioniert, wie 
auf dem AVR. Es ist lediglich die speziellen Dinge, wie: welches 
Register bewirkt was, wo muss welches Timing eingehalten werden; die auf 
dem PC schwer zu verwirklichen und zu kontrollieren sind. Aber all das 
hat zunächst nichts mit der Sprache C zu tun, sondern mit der Anwendung 
dieser Sprache in einem speziellen Umfeld.
Die Sprache C, in ihren Grundlagen, lernt sich auf einem PC mit seiner 
viel besseren Umgebung wesentlich einfacher als wenn du im AVR im Nebel 
stochern musst.

von Christian (Gast)


Lesenswert?

Mhm ok, dass klang überzeugent. Dann werde ich mich doch an den PC 
machen müssen und C von klein auf neu erlernen.

Ich könnte da ein Buch haben, von nem Kumpel:
http://www.amazon.de/Programmieren-von-Anfang-Helmut-Erlenk%C3%B6tter/dp/3499600749/ref=sr_1_fkmr0_1?ie=UTF8&qid=1265966431&sr=8-1-fkmr0

Ist das gut für einen Anfänger? Was würdest du mir empfehlen?
Mit welcher Software, möglicht für wenig Geld, programmier ich dann auf 
dem PC?

von Karl H. (kbuchegg)


Lesenswert?

Christian schrieb:
> Mhm ok, dass klang überzeugent. Dann werde ich mich doch an den PC
> machen müssen und C von klein auf neu erlernen.
>
> Ich könnte da ein Buch haben, von nem Kumpel:
> 
http://www.amazon.de/Programmieren-von-Anfang-Helmut-Erlenk%C3%B6tter/dp/3499600749/ref=sr_1_fkmr0_1?ie=UTF8&qid=1265966431&sr=8-1-fkmr0
>
> Ist das gut für einen Anfänger? Was würdest du mir empfehlen?

Empfehlenswert ist immer der 'Klassiker'
"Kernighan & Ritchie   Programmieren in C"

Aber ich denke, dein Buch wird dich auch durch die ersten Schritte 
bringen und dir die vielen kleinen Stolpersteine und Fallen ausführlich 
darlegen :-)

In deinem Buch ist (für erste) alles interessant, bis hin zum Kapitel 
"Kommandozeilenparameter". Die nachfolgenden Kapitel, die mit Datein zu 
tun haben, wirst du so auf dem AVR nicht brauchen, schadet aber auch 
nicht, wenn man die auf dem PC durcharbeitet. Die Teile die sich nach 
dem Dateihandling mit Strukturen beschäftigen, sind dagegen wieder sehr 
wichtig.
Aber fang erst mal von vorne an :-)

> Mit welcher Software, möglicht für wenig Geld, programmier ich dann auf
> dem PC?

Freie Entwicklungsumgebungen für C gibt es wie Sand am Meer.

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.