- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
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
    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

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    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?

  3. #3
    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.

  4. #4
    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.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Zitat Zitat von HaWe Beitrag anzeigen
    Aber C ist ja noch viel mächtiger als asm
    Du hast schon recht!
    Tatsächlich ist es bei mir aber so, dass ich immer nur dann an diese "Käfer" denke, wenn Bedarf besteht. Eine Problemlösung, die mit µC am einfachsten bewerkstelligt werden kann.
    Und das kommt bei mir sehr selten vor.
    Ich will mir C (noch) nicht antun, nur weil ich mit LCD grad auf Neuland gestoßen bin. Es geht nurmehr ums Display - Anzeigen und Ändern von Parametern. Alles andere (die gesamte Steuerung des Solartrackers) ist bereits soweit fertig. Somit müsste ich das in C auch neu codieren.

  6. #6
    HaWe
    Gast
    Somit müsste ich das in C auch neu codieren.
    jein -
    du kannst in C sogar auch asm Code inkludieren
    Aber ich verstehe deinen Standpunkt ntl-
    mir ging es als C-Hobbyprogrammierer genau so in Bezug auf C++ , doch auch da bin ich gerade dabei, mich zu "überwinden"

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    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.
    Ich halte diese Vorgehensweise nicht für Zielführend.
    Mit den veränderten Werten willst Du ja sicher auch rechnen.
    Also müssen die Zahlenwerte als Integer oder Float vorhanden sein.
    Ich mach das immer so, das ich immer komplette Zeilen eines LCD beschreibe.
    Ich bin auch der Meinung, das man komplexere Projekte eigentlich nur noch mit viel Aufwand in Assembler schreiben kann.
    C ist da wirklich besser. Was mich am Anfang bei C immer gestört hat sind tatsächlich die Bibliotheken.
    Gerade bei AVR - GCC ( ist im Prinzip in AVR Studio 7 implementiert ) ist das schon etwas Gerödel.
    Um einen AVR mit Interrupts und direkten Flash und EEProm Zugriffen anzusprechen bindet man schon mal 4 Standard Bibliotheken ein.
    Sind die dann aber mal eingebunden wird das Ganze dann sehr einfach.
    Gut ist, das der Compiler von Studio 7 schon gleich meckert, was er denn für eine Library gerne hätte.
    Ausserdem ist AVR - GCC im Internet super dokumentiert auch aus verschiedenen Quellen.
    Ein weiterer " Schwachpunkt " von C ist, das Quasi jedes verfügbare Sonderzeichen der Tastatur für die Syntax genutzt wird.

    Wenn man mal verstanden hat, das ein C-Compiler von oben nach unten arbeitet und keine defines bzw. Variablen benutzt werden können, die nicht vorher definiert wurden hat man schon viele potetielle Fehlerquellen ausgemerzt.

    Fertige Bibliotheken für C gibt's da fast für jedes IC und jedes Display, das so ein Controller ansteuern kann.
    Sogar eine FAT Library für SD Karten gibt's.

    Ich hab als letztes Projekt gerade ein MiDi Clock Metronom mit Soundausgabe gebastelt.
    Das Erstellen und Debuggen hat in C gerade mal 1 1/2 Tage gedauert. Das hätte Ich in Assembler nicht machen wollen.

    Das Einbinden von Assembler Code in ein C-Programm ist nicht gerade trivial und auch stark vom verwendeten Compiler abhängig.
    Ich hab früher immer mit CodeVision AVR gearbeitet. Da war die Assembler Einbindung und die Grundeinstellungen für den Controller relativ einfach.
    Das Prog würde Ich als Einstieg in C durchaus empfehlen ( Version mit beschränkten Optionen ist kostenlos ) weil wesentlich einfacher zu handeln als AVR Studio.
    Ich nutze heute noch den Automatic Programm Generator um die Grundeinstellungen für den verwendeten Chip zu generieren.
    Den erzeugten Code kopiere Ich dann einfach in AVR - Studio.

    Meine Empfehlung ist einfach mal ausprobieren und nicht von den ersten Hürden abschrecken lassen.
    Geändert von wkrug (11.12.2018 um 10:39 Uhr)

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Zitat Zitat von wkrug Beitrag anzeigen
    Mit den veränderten Werten willst Du ja sicher auch rechnen.
    Nein. Die Werte werden ins EEPROM gesichert und dienen nur als Vergleichswert für verschiedene Aufgaben.

    Zitat Zitat von wkrug Beitrag anzeigen
    Also müssen die Zahlenwerte als Integer oder Float vorhanden sein.
    Ich mach das immer so, das ich immer komplette Zeilen eines LCD beschreibe.
    Wie kann ich "Zahlen" in das LCD schreiben? Ein LCD kennt ja keine "Ziffern" oder "Zahlen". Das sind alles nur "Zeichen". Oder liege ich mit dieser Annahme falsch?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Bei den Assemblern MASM und TASM konnte man schon immer gut Makros einsetzen. Damit kann man so einiges anstellen. Ich habe in den 90gern für jemanden Basic in Makros umgesetzt. Der Quelltext sah nachher aus wie GW-Basic, konnte aber assembliert werden. Allerdings waren das schon fortgeschrittene Assembler. Das C wurde ja bereits in den 70gern entwickelt. Das Problem an den Assemblern war immer, dass man damit nicht sehr schnell voran kam. Programmentwicklungen dauerten wirklich sehr lange. Von daher hatte C sicher seine Berechtigung. Mittlerweile halte ich persönlich C/C++ aber für etwas rückschrittlich. Wie Du ja selbst siehst HaWe, ist es manchmal echt schwierig damit und die Sprache ist "kryptisch" gestaltet - nicht wirklich einfach zu erlernen. Für jemanden, der auf einem System Assembler beherrscht, gibt es eigentlich nichts Besseres, weil man mit Assembler wirklich alles machen kann - keine Grenze. Da ich selber 10 Jahre fast nur Assembler benutzt habe, finde ich auch, dass es für jemanden der C nicht kann / C++, es einfacher ist, sich in die Assemblerprogrammierung - bei den ATmegas zum Beispiel - einzuarbeiten.

    MfG

  10. #10
    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

Seite 1 von 2 12 LetzteLetzte

Ä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
  •  

Solar Speicher und Akkus Tests