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
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 ?
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 ?
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
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
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
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
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.
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
voidlcd_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.
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?
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.
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.
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.
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.
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.