- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 173

Thema: Portbelegung auf ATMega für LCD1602

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Hab auch noch ein wenig gesucht und hab das hier gefunden:

    Anschluss an den Controller
    Jetzt, da wir wissen, welche Anschlüsse das LCD benötigt, können wir das LCD mit dem Mikrocontroller verbinden:
    Pinnummer
    LCD Bezeichnung Anschluss
    1 VSS GND (beim TC1602E: VCC)
    2 VCC +5 V (beim TC1602E: Gnd)
    3 VEE GND , Poti oder PWM am AVR
    4 RS PD4 am AVR
    5 RW GND
    6 E PD5 am AVR
    7 DB0 nicht angeschlossen
    8 DB1 nicht angeschlossen
    9 DB2 nicht angeschlossen
    10 DB3 nicht angeschlossen
    11 DB4 PD0 am AVR
    12 DB5 PD1 am AVR
    13 DB6 PD2 am AVR
    14 DB7 PD3 am AVR
    15 A Vorsicht! Meistens nicht direkt an +5 V abschließbar,
    sondern nur über einen Vorwiderstand, der an die Daten
    der Hintergrundbeleuchtung angepasst werden muss.
    16 K GND

    Da in obigem Beispiel auch nur ein Port für alle Leitungen zum LDC verwendet wird, hab ich meine Pinbelegung umgedreht:
    ; PC0 / 22 \
    ; PC1 / 23 \ > Datalines for LCD 1602
    ; PC2 / 24 /
    ; PC3 / 25 /
    ; PC4 / 26 > LCD RS (register select)
    ; PC5 / 27 > LCD RW (read/write)
    ; PC6 / 28 > LCD E (enable)
    ; PC7 / 29 > + Transitor VCC to LC

    Somit müsste es funktionieren.

    IDE!? Ich hab keine IDE. Zudem versteh ich nix von C (wo dein link hinführt). Ich programmiere in Assembler.
    Auch wenn es so aussieht, dass ich mehr mit AVRs mache, weil ich seit 2008 im Forum bin ...
    Ich hab bislang nur ganz kleine Sachen mit dem T13 gemacht, 3 kleine mit dem M8 und eine einfache Heizungssteuerung mit dem M16 (ohne LCD!).
    Jetzt möchte ich mit einem M16 einen Solartracker bauen. Der soll mit LCD ausgestattet sein, damit man Parameter, die im EEProm abgelegt werden, jederzeit über LCD anzeigen und anpassen kann.

    Wo ich auch noch grüble ist, wie ich ADC-Werte in Volt umrechne und diese mit zumindest einer Kommastelle ausgeben kann - in Assembler!
    Wie man für die Ausgabe Ziffern in Text umwandelt hab ich schon gefunden - allerdings auch nur in C

    Bis ins Frühjahr, wenn die Sonne wieder kräftiger wird, sollte meine Steuerung - zumindest AVR-mäßig - fertig sein.

    mfg Heinz

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Also,
    nach einer Unmenge an Recherchen, abwägen und vergleichen, bin ich zur Ansicht gekommen, dass meine ursprüngliche Pinbelegung des LCD-Ports ganz normal funktionieren muss. Also kein "Treiber" selbst geschrieben werden muss. Wichtig ist nur die Reihenfolge der nibbles.
    Bitte um Berichtigung, wenn ich falsch liege!

    In einem englisch-sprachigen Forum habe ich (bis auf die Steuerpins) die gleiche Pinbelegung gefunden.
    In meinem Fall ganz wichtig: solange mit dem Display gearbeitet wird, MUSS der Pin für die Stromversorgung IMMER 1 sein.
    Daher überlege ich gerade, ob ich nicht einen Pin eines anderen Ports dazu verwende, um nicht bei jeder LCD-Routine darauf achten zu müssen.
    Somit bleibt dann halt ein LCD-Port-Pin am µC unbelegt.

    [edit]
    ; PC0 / 22 > LCD RS (register select)
    ; PC1 / 23 > LCD RW (read/write)
    ; PC2 / 24 > LCD E (enable)
    ; PC3 / 25 n/c
    ; PC4 / 26 <> LCD DB4
    ; PC5 / 27 <> LCD DB5
    ; PC6 / 28 <> LCD DB6
    ; PC7 / 29 <> LCD DB7
    [endedit]
    Geändert von HeSt (09.12.2018 um 17:38 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    219
    Hallo HeSt,
    letztendlich musst Du irgendeinen Mittler zwischen Deinem Programm und der Hardware schaffen, ob man das nun Treiber nennt oder Bibliothek oder ...
    Alles in Assembler - Chapeau!
    Auch mit einer IDE (ich nutze AS7.0) kann man alles in Assembler machen.
    Ich hab bei solchen 4-bit-"Sachen" gern die zusammenhängenden Bits (i.d.F. die Daten) ganz "unten" (Bit 0 beginnend), spart Befehle und wenn Du eh alles
    selber schreibst ist es sowieso egal.
    mfg
    Achim

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Hi Achim,
    danke für den "Hut"
    Ich kenne nichts außer Assembler. Hab noch nie was mit IDE, Bibliotheken oder sonstigem was gemacht.
    Weiß gar nicht, wie man damit umgeht und was man alles damit machen kann.
    Ich lese immer wieder was von einer Bibliothek von Fleuri.
    Was kann die, wozu dient sie ...?
    Ich weiß nicht, wozu ich sie brauchen könnte. Hab etwas gestöbert, kann aber damit nix anfangen.
    Sie muss jedoch hilfreich sein, weil sie viele nutzen. Ich bin nur noch nicht drauf gekommen.
    Aber mal weiter sehen.
    LG Heinz

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.255
    Ich weiß nicht, wozu ich sie brauchen könnte. Hab etwas gestöbert, kann aber damit nix anfangen.
    So ein LCD kann eine relativ komplizierte Initialisierung benötigen, die dazu auch noch in einem gewissen Zeitfenster gemacht werden muss.
    Ausserdem müssen bestimmte Grundeinstellungen gemacht werden.
    Alle dafür benötigten Befehle sind dann in so einer Bibliothek enthalten.
    Man braucht also eigentlich nur die gewünschte Funktion z.B. initlcd aufrufen und die Bibliothek initialisiert das Display, damit es verwendet werden kann.

    Ohne solche Bibliotheken müsstest Du alles was zum Funktionieren des LCD's gebraucht wird selbst programmieren, stellenweise auf Bitebene.
    Aber warum was selbst programmieren, wenn es so etwas bereits debuggt zum Download gibt?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Danke für die Unterstützung!

    Dass die Ansteuerung eines LCDs eine mühsame Sache ist, hab ich schon bemerkt.
    Allerdings hab ich die Init-Sequenzen bereits programmiert. Ist gut beschrieben.

    Als ich vor etwa 3 Jahren mit LCD anfangen wollte, hab mir den Schmöker "Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie" von Günter Schmitt gekauft (530 Seiten). Für mich leider nicht wirklich hilfreich, da er "UNI"-mäßig geschrieben ist und viel voraussetzt. Behandelt zwar auch etwas Basis, aber eben sehr wissenschaftlich. Und das ist mir zu hoch und zu umständlich.
    Ich benötige kurze verständliche Beispiele. Zudem sind die Programmbeispiele sehr verschachtelt und greifen immer wieder auf irgendwelche Routinen aus Bibliotheken zu. Es ist einfach zu unübersichtlich und zu mühsam sich da durchzuarbeiten und es zu verstehen.
    Ich finde z.B. nirgendwo einen Hinweis darauf, ob und wie man den "auto cursor" - also die automatische Weiterschaltung des Cursors - während einer Routine ab- und wieder einschalten kann.
    In meinem Gedankengang brauche ich es dazu, wenn ich Ziffern verändern will.
    Also z.B. einen 3-stellig Wert. Diesen will ich mit einer Taste verändern. Da es aber mühsam ist, sich z.B. von 50 auf 210 hoch zu tippen. Da ist es einfacher, immer nur eine Stelle (H,Z,E) verändern zu können. Dazu soll "auto cursor" off sein. Danach wieder ein. Ob das in diese Form sinnvoll ist, weiß ich noch nicht. Derzeit sieht es danach aus.

    So gibt es noch viele Dinge, die ich erst finden und behirnen muss, wie das geht.
    Z.B. wie man Ziffern und Zahlen in Text umwandelt, damit man diese auf dem LCD ausgeben kann. Einige Routinen hab ich gefunden, aber noch nicht kapiert.
    Das braucht halt auch seine Zeit. Und wenn ich nicht weiß, wie die Routinen in den Bibliotheken ticken, wie Werte übergeben werden müssen usw. hab ich einfach ein Problem damit.
    Wenn ich selber codiere, weiß ich wie was funktioniert - und vor allem - dann hab ich's kapiert.

  7. #7
    HaWe
    Gast
    ich will dich ja nicht missionieren, aber gerade als asm Programmierer müsste doch C(99) ideal für dich sein: C wird ja oft als asm mit lesbareren Wrappern beschrieben, welches durch den C Compiler in Maschinencode übersetzt wird, der compiliertem asm Code ebenbürtig ist in Kompaktheit, Effizienz und Schnelligkeit.
    Aber C ist ja noch viel mächtiger als asm:
    Warum wird/wurde das Multiuser-Multitasking-Betriebssystem UNIX nicht weiterhin (wie anfangs versucht) in asm programmiert, und auch nicht in irgendeiner anderen damals verfügbaren Programmiersprache, sondern warum wurde eigens dafür zunächst C entwickelt, um mit diesem "Tool" dann das Unix OS effizient entwickeln zu können?
    Vorteil: Plattformübergreifende Portierbarkeit, und gerade bei MCUs wie AVRs oder ARMs oder sogar auch SoCs: Millionen von Libs, die das Arbeiten damit simplifizieren, wenn man will - oder man erfindet für sich das Rad damit auf effiziente Weise neu, wenn man es so lieber möchte.

  8. #8
    HaWe
    Gast
    es sollte hier keine Diskussion über Arduino-User werden...
    Zitat Zitat von seite5 Beitrag anzeigen
    ich bezweifle, dass auch nur 1% der Arduino-freaks in der Lage ist, z.B. einen ATSAM3X8E (DUE) ohne Arduino-libs zu programmieren.
    mfg
    Achim
    Der Sinn der Arduino-IDE besteht gerade darin, alle von Arduino unterstützten Boards nicht ohne, sondern MIT der Arduino-IDE weitestgehend Plattform-unabhängig v.a. auch von nicht-IT-Profis programmieren zu können, u.a. mit Hilfe der zur Verfügung stehenden Libraries. Genau dafür wurde das Arduino (ursprünglich "Wiring") Konzept entwickelt.
    Auf diese Weise lassen sich z.B. das LCD 1602 oder 2004 oder auch OLEDs oder andere TFTs mit jedem beliebigen Arduino inkl. weiteren 3rd party Boards (Uno, Mega, Nano, Zero, Due, aber auch M4, ESP8266 oder ESP32 u.a.m.), alle grundsätzlich mit identischem Sourcecode programmieren (Arduino verwendet C/C++11), und auch externe Editoren können in diese IDE eingebunden werden.
    Durch Nutzung der Libs vereinfacht sich der nötige eigene Code für verschiedenste Devices erfreulicherweise auf nur sehr wenige Zeilen, und Arduino-Uno-AVR-Code sieht dabei überhaupt nicht anders aus als Arduino-Due-ARM-ATSAM3X8E-Code - und genau das sind die erwünschten Riesen-Vorteile.
    Generell ist aber C/C++ immer Library-basiert, das fängt schon bei libc, stdio, stdlib oder stdint an und ist beliebig endlos erweiterbar, das ist das C-Konzept, das per Sprachdefinition nur rund 20 reservierte keywords oder statements vordefiniert hat: der Rest steht immer in Libs.
    Eine Arduino-Programmierung völlig außerhalb der Arduino IDE samt API Libs entspricht gerade NICHT dem Arduino-Konzept, und dein Arduino-User-Bashing ist also völlig offtopic und irrelevant.
    Geändert von HaWe (04.02.2019 um 10:39 Uhr) Grund: typo

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 11:18
  2. CCPRO M128: Portbelegung
    Von Dirk im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 22.05.2009, 22:26
  3. Portbelegung bei diesem Display [erledigt]
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 18.11.2006, 18:12
  4. Portbelegung ATmega32
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 15.11.2006, 19:59
  5. Antworten: 4
    Letzter Beitrag: 12.11.2006, 16:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test