www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD-Routine aus dem AVR-Tutorial anpassen


Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich versuche mich gerade vom bequemen BASCOM zum Assembler zu bewegen. 
Jetzt habe ich versucht ein LCD anzusteuern allerdings ist die 
Pinbelegung anders als im Beispiel. Ich habe alles geändert was ich 
dachte dass es das sein könnte aber kein Erfolg. Ich habe mal die Datei 
angehängt. Darin ist alles orginal aus dem Tutorial bis auf der 
Kommentar ganz oben und die .equ Anweisungen die ich bereits auf meine 
Belegung umgeschrieben habe. Aber ich finde nicht heraus wo ich von 
PORTD.0 - PORTD.3 nach PORTD.3 - PORTD.6 umstellen kann.


Danke für jedgliche Hilfe.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anhang vergessen

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robin,

das kann aber nicht Dein ganzes Programm sein.....

Gruss Otto

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein das ist nur die Routine zum initialisieren des LCD's das Programm 
selbst ist wesentlich kürzer und es sollte auch funktionieren. Nur das 
Anpassen auf meine Pinbelegung ist nicht so einfach (für mich).

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Robin Tönniges (rotoe)

>Anpassen auf meine Pinbelegung ist nicht so einfach (für mich).

So einfach ist das nicht. Die Daten sollte man auf 0..3 lassen, nur E 
und RS sind frei auf 4..7 verteilbar. Sonst wird die Änderung zu gross. 
Wenn du eine vollkommen freie Pinzuordnung machen willst, nimm den 
vielzitierten Code von Peter Fleury.

MFG
Falk

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
> Wenn du eine vollkommen freie Pinzuordnung machen willst, nimm den
> vielzitierten Code von Peter Fleury.

Ok dann mach ich das, weil ich nämlich ein eigenes Testboard entwickelt 
habe und da kann ich die Pinbelegung nicht mehr ändern.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab gerade gesehen dass dieses Beispiel von Peter Fleury in C 
geschrieben ist. Nützt mir also leider nicht viel.

Autor: Falk Brunner (falk)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Robin Tönniges (rotoe)

>Hab gerade gesehen dass dieses Beispiel von Peter Fleury in C
>geschrieben ist. Nützt mir also leider nicht viel.

Dann musst du wohl in den sauren Apfel beissen und die Grundfunktionen 
init, data und command überarbeiten. Im Prizip müssen "nur" ein paar 
Shifts eingebaut werden. im Original liegen die Daten auf PD0..3, du 
willst sie auf PD3..6 haben. Also müssen drei lsl rein, an die richtige 
Stelle.

Siehe Anhang, sollte klappen.

MfG
Falk

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klappt leider nicht :(

Ich hatte es schonmal so ähnlich versucht aber nicht mit einem Befehl 
sonder am Anfang habe ich 3 Nullen weggenommen und am Ende wieder 
angehängt. Aber Da scheinen noch mehr Befehle zu sein die man ändern 
muss wo das aber leider nicht so einfach zu sein scheint.

Autor: Falk Brunner (falk)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
UUps, kleiner Fehler. Jetzt aber.

MfG
Falk

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JUHU! Es funktioniert.

Vielen Dank.


Jetzt analysiere ich mal was du da nu gemacht hast :)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin Tönniges wrote:

> PORTD.0 - PORTD.3 nach PORTD.3 - PORTD.6 umstellen kann.

Wer macht den sowas?
Ein Datennibble legt man nicht so saublöd in einen Port hinein.
Das bedeutet immer unnötige und blödsinne Shift Operationen.

> Ok dann mach ich das, weil ich nämlich ein eigenes Testboard entwickelt
> habe und da kann ich die Pinbelegung nicht mehr ändern.

Das solltest du dir noch mal gründlich überlegen.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Layout kann ich ändern aber es ist schon geätzt, bestückt und 
funktionsbereit :)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz Buchegger (kbuchegg) (Moderator)

>Ein Datennibble legt man nicht so saublöd in einen Port hinein.
>Das bedeutet immer unnötige und blödsinne Shift Operationen.

Sei froh dass er das Datennibble nicht wild zerplückt auf mehrere Ports 
verteilt hat ;-)

MfG
Falk

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
> @ Karl heinz Buchegger (kbuchegg) (Moderator)
>
>>Ein Datennibble legt man nicht so saublöd in einen Port hinein.
>>Das bedeutet immer unnötige und blödsinne Shift Operationen.
>
> Sei froh dass er das Datennibble nicht wild zerplückt auf mehrere Ports
> verteilt hat ;-)

Auch wieder wahr.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin Tönniges wrote:
> Layout kann ich ändern aber es ist schon geätzt, bestückt und
> funktionsbereit :)

Beim nächsten mal auf solche Dinge achten.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok mache ich.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür ist Software auch da. Damit kann man mit "weichen" Mitteln "harte" 
Fehler umgehen. Ist nicht das erste Mal dass jemand im Programm Fehler 
im Layout/in der Hardware ausbügeln muss. Und sicher nicht das letzte 
mal :'o

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin Tönniges wrote:
> Hallo Leute,
>
> Ich versuche mich gerade vom bequemen BASCOM zum Assembler zu bewegen.

Bewege Dich lieber zu C...

Michael

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber ich habe gelesen und gehört dass das Verständniss eines µC bei 
Assembler viel deutlicher rüberkommt als bei irgendeiner anderen 
Programmiersprache weil
Assembler DIE µC Programmiersprache ist.

Korrigier mich wenn ich falsch liege.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin Tönniges wrote:
> Aber ich habe gelesen und gehört dass das Verständniss eines µC bei
> Assembler viel deutlicher rüberkommt als bei irgendeiner anderen
> Programmiersprache weil
> Assembler DIE µC Programmiersprache ist.
>

Da ist schon was dran.
Auf der anderen Seite musst du in C die Hardware genauso gut
durchschauen wie du es in Assembler müsstest (zumindest mit dem gcc).

Ich schreib zwar ab und an am Assembler Tutorial, aber Hand aufs
Herz: Meine realen Projekte mach ich in C.
Das liegt daran, dass es mir normalerweise nicht auf den letzten
Taktzyklus ankommt, dafür befreit mich aber der Compiler von
Routineaufgaben eines Assembler-Programmierers. Ich schreib halt
lieber
    i = j * 348
als mich darum zu kümmern, in welchem Register jetzt das j schon
wieder rumlungert, wie ich die Multiplikation ausführen muss und
dass ich die Register r0 und r1 für die Hardwaremultiplikation
frei räumen muss.

Hannes Lux (auch ein langjähriger Forumsteilnehmer) sieht die
Sache wieder anders: Der hat lieber Assmembler.

Letztendlich sehe ich das so: Welche Art man bevorzugt, ist
Geschmackssache (auch BASCOM hat durchaus sein Vorzüge), solange
man sie beherrscht. OK, der BASCOM Baukasten ist nicht unbedingt
geeignet, die Funktion der Hardware zu verstehen, allerdings kann
man auch in BASCOM direkt an die Hardware ran.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich sehr überzeigend an. Ich kann C++ ich weiß nur nicht ob sich 
das als Vor- oder Nachteil heraustellen könnte.^^

Autor: robert maucher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo

ich benutze das myavr board2 mit lcd add on

auf dem das lcd auf partd 4-7 liegt, enable auf 2 und rs auf 3

ich hab die routine soweit geändert das ich meine zeichen ausgeben kann
ich wollte jetzt halt noch wissen was machen mir diese zeilen eigentlich
lcd_data:

           ...           

           in    temp3, LCD_PORT
           andi  temp3, 0x05             ; im original 0x80
           or    temp1, temp3
           out   LCD_PORT, temp1         ; ausgeben
           
           ...

           ret

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.