watterott ;title =
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 41

Thema: Atmega8 mit LCD 1602A nur Hieroglyphen

  1. #21
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    47
    Hallo arto,

    So würde ich an die Sache heran gehen.
    1. nur LCD und Takt testen.

    $regfile = "m8def.dat"
    $crystal = 1000000
    $hwstack = 36
    $swstack = 36
    $framesize = 64

    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.1
    Config Lcd = 16 * 2
    Initlcd

    Waitms 10
    Cursor Off Noblink

    Cls
    Dim Z As Byte

    Do
    For Z = 1 To 10
    Locate 1 , 1
    Lcd "Einspeisung 230V" ' Anzeige LCD

    Locate 2 , Z
    Lcd Z
    Wait 1

    If Z = 10 Then CLS
    Next
    Loop

    Kommt Anzeige. Ist Hardware okay. Wird Z in Sekundentakt hochgezählt ist Takt okay.
    Werden Hieroglyphen angezeigt ist LCD nicht HD44870 kompatibel oder defekt.
    Wird falsch getaktet, dann µC Fuse falsch eingestellt.

    2. Wenn soweit alles OK, dann erst den Zählerimpuls abtasten indem du die For Nextschleife und IF löscht und Z z.B. PinB.0 zuweist(ist dann Impuls vom Zähler).
    Einfach mal so.

    Dim Z As Word
    Config PortB.0 = Input
    PortbB.0 =1 ’ Auf H setzen da ja L aktiv
    Z Alias PinB.0 ‘ Pin einen Namen geben.

    Do
    If Z = 0 Then
    Incr Z

    Locate 1 , 1
    Lcd "Einspeisung 230V" ' Anzeige LCD

    Locate 2 , 5
    Lcd Z ; “ “; “Impulse”
    End IF
    Loop

    3. ist dies auch okay, dann beginnt die „Ziel- Programmierung“.

    Mit Abfragen, Berechnungen, Entscheidungen, Rückgaben usw.
    Da nur der Weg zum Ziel führt, muss jeder selber Entscheiden welchen Weg er nimmt.
    Dein Weg wie im Code zu sehen, ist wohl der beschwerlichste. Interrupts im Code einbinden sollten gut betacht sein.
    Vollzieh mal in Ruhe dein Code.
    Hauptschleife ist wohl nur ein Verteiler für nächstem Aktion und in jeder Neuen wird eine „Laufzeitbremse“ aktiviert. Den Sinn verstehe ich einfach nicht.
    Schau mal hier: http://rn-wissen.de/wiki/index.php?t...com_Interrupts
    P.S Weis nicht ob mein Projekt „Energie-Datenlogger“ noch im Forum zu finden ist. Da hatte ich nicht nur Lösungen für Erfassung, Anzeigen, Speicherung sondern auch Auswertungen mit Einbindung von Reaktionen, veröffentlicht. Code war modular Programmiert. Also nur rauspicken was für eigenes Projekt benötigt wird.

    Gruß

  2. #22
    Spaghetti-Coder
    Registriert seit
    10.11.2016
    Beiträge
    57
    Hallo arto,
    ich kann dir auch nur empfehlen, den Elefanten in kleineren Stücken zu vertilgen, so wie es dir fredred gerade und kalle_BMW und Chrissie099 schon vorher geraten haben.
    Dein ursprünglicher Code war schon recht durcheinander, da war es kein Wunder, dass der nicht so funktioniert hat, wie du es dir vorgestellt hattest.
    Und versuche, alle Beiträge durchzulesen und zu verstehen. Hilfsbereite Mitstreiter haben häufig kein Interesse mehr, wenn sie den Eindruck haben, ignoriert zu werden.
    Um deren Ratschläge und Tipps wäre es dann schade.

  3. #23
    Kabelträger
    Registriert seit
    29.12.2016
    Alter
    67
    Beiträge
    17
    Danke erst einmal an Alle, die sich mit meinem Problem beschäftigt haben und auch für die Vorschläge. Natürlich nehme die ernst. Es ging eigendlich alles sehr eifach , im Simulator. Ausgang des ganzen ist das Microcontroler Lehrbuch von Roland Walter. Ich hatte eine Idee und dann einwenig probiert und schwupdiwup lief das Ding, aber eben nur im Simulator. Ich glaubte ich bin auf einen guten Weg. Mir ist schon klar, daß ich keinen Supercode abliefere und habe lange überlegt, ob ich damit in`s Forum gehen soll. Ich war mir aber relativ sicher, daß es nur ein kleiner Fehler sein wird. Aber sei`s drum, ich muß mich eben doch ein wenig Tiefer einarbeiten und erst einmal intensiev mit Euren Vorschlägen auseinander setzen. Aber kann es sein, daß das LCD Modul nicht HD44870 kompatiebel ist? Das Handbuch habe ich aus dem Internet. Es lag keines dabei. ich habe fredred`s Vorschlag probiert, aber auch hier nur ein Durcheinander. Habe auch ein noch kleineres Prgrammchen, aus dem Netz, Wobei ich aber auch kein einfaches "Hallo Welt" zur ordentliche Anzeige bringe. Ich muß mir wohl erst einmal ein Display besorgen wo der Prozessor wirklich ein HD44870 ist. Dann werde ich mich nach Euren Vorschlägen, mit kleinen Schritten, vorwärts hangeln. Wie Basti sagt,den Elefanten in kleineren Stücken zu vertilgen.
    Grüße

  4. #24
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    47
    Hallo arto,

    hatte mein Codeschnipsel bewusst als Zeitschleife erstellt um von dir zu erfahren ob Takt stimmt und bei jedem Durchlauf das gleiche “Durcheinander“ angezeigt wird oder immer ein anderes. Mag für dich belanglos sein aber für mich nicht.
    Lege großen Wert auf Praxiserfahrungen. Hast es ja nun selber erlebt theoretisch müsste es funktioniere aber in der Praxis nicht. Somit liegt die Vermutung nah, es kann nur an den einzelnen Modulen liege. Diese hat der Helfer in deinem Fall nicht (LCD) also Informationen so viel wie möglich.
    Nun währ es nett wenn ich diese Informationen noch bekommen würde. Ja dies ist auch eine Hilfe für mich um den Fehler einzukreisen bis hin zum Schluss Fehlkauf oder defekt.
    Dies währ mein Lerneffekt.

    Gruß

  5. #25
    Kabelträger
    Registriert seit
    29.12.2016
    Alter
    67
    Beiträge
    17
    Hallo fredred,
    also, gestern habe ich ja gleich Dein Testprogramm ausprobiert. Erst nach mehrmaligem brennen war dann etwas zu sehen. Wie ich bereits schrieb, auch ein Durcheinander, aber Fragmente des Textes waren zu sehen und eine Ziffer lief hoch, in der 2. Zeile und an der gleichen Position.
    Das war gestern. Jetzt habe ich mich wieder dran gesetzt, das Display in Betrieb genommen und die oberste Zeile war mit 16 Feldern da. Nach dem brennen waren dann beide Zeilen zu sehen aber ohne Text. Die Verdratung habe ich nun schon, ich weiß nicht mehr wie oft, überprüft . daran kann es nicht liegen. Ich hatte auch schon den AVR in Verdacht und mal ein eifaches Programm, LED leuchtet bei Tastendruck, daß geht. Die Taktfrequenz müßte 1MHz sein. Das ist die Eingestellte Fuses. SUT_CKLSEL:Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; default value. Ich hoffe, Du kannst mit diesem Bericht etwas anfangen.
    Gruß
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	LCD1a (2).jpg 
Hits:	13 
Größe:	47,7 KB 
ID:	382Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	LCD1a (1).jpg 
Hits:	12 
Größe:	43,6 KB 
ID:	383 Noch eine Nachtrag.
    Ich habe das Display eben Spannungslos gemacht, um noch einmal die Verkabelung zu üperprüfen. OB.
    Nun habe ich die Spannung wieder angelegt. Jetzt war das Display mit Zeichen gefüllt. Siehe Bilder. Die in Abständen von ca 10sek. wechseln. Nach etwa 2min., ist dann alles wieder weg. Ein Reset ändert hier nichts.
    Jedoch beim erneuten trennen und wieder Spannung anlegen, war es wieder so wie oben schon erwähnt. Der AVR blieb hierbei immer unter Spannung.Der Cursor, also das Feld außer die unterste Zeile, blinkt abwechselnd an unterschiedlichen Stellen. Das pasierte 2mal hintereinader. Jetzt steigt das Display schon 10 min. nicht mehr aus.
    Geändert von arto (10.01.2017 um 17:31 Uhr)

  6. #26
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    47
    Hi
    Laut Herstellerangabe ist der Chip auf LCD 1602A-Modul 100% HD44870 kompatibel also die ASCII- Tabelle passt und somit kein Fehlkauf.
    Die Anschlusspin sind ja auch eindeutig beschriftet und wie du schreibst richtig mit Mega 8 nach Softwarevorgabe verbunden.

    Nun wird es wirklich Blöd.
    Was hat das mehrmalige Brennen mit Ergebnis zu tun?
    Hast du Resetpin mit ca. 10k auf VCC gelegt und dann mal direkt am Resetpin mehrmals dies auf GND gezogen.
    Als letzten Versuch für Fehlerfindung würde ich Vorschlagen. Die Verbindungen mit M8 neu zu setzen(Port D ist schon etwas eigenwillig)

    Soft- Hardware alle auf Port C umstellen.


    Gruß

  7. #27
    Kabelträger Avatar von daja
    Registriert seit
    15.11.2016
    Ort
    Lauta
    Alter
    52
    Beiträge
    23
    Auf den Bildern ist nicht zu sehen , ob D0 bis D4 auf Masse liegen. Wenn nicht bitte mal nachholen.

  8. #28
    Kabelträger
    Registriert seit
    29.12.2016
    Alter
    67
    Beiträge
    17
    Habe jetzt einen 10Ko Widerstand mit Vcc(+) und Pin1 (Reset) verbunden und 10 mal die Resttaste für ca. 1 Sek. gerückt. Anschließend alles umgefriemelt auf PorC Port (C0:C5). Das Programm neu gebrannt. Nun erscheint mir die Anzeige ruhiger und zeitweilig ist fast alles zu sehen. Die Anzeige verändert sich gleichmäßig etwa im Sek. Takt. Weiterhin zeigt sie immer etwas, nachdem sie Spannungslos war, an. Vorher war das nich immer der Fall. Im Anhang habe ich noch einmal Listing und Bilder. Die Verdrahtung kann man recht gut erkennen. Vielleicht hast Du die Muße mal drüber zu schauen. Auch möchte ich mich schon mal bedanken für Deine Ausdauer. Ich habe noch ein jungfräuliches Display und einen A8a. Ob es Sinn macht, die mal auszuprobieren? Habe bisher davon Abstand genommen, da die Lötleisten immer so schlecht wieder raus gehen. GrußKlicken Sie auf die Grafik für eine größere Ansicht 

Name:	k-LCD3.jpg 
Hits:	14 
Größe:	63,4 KB 
ID:	384Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	k-LCD4.jpg 
Hits:	13 
Größe:	64,1 KB 
ID:	385

    $regfile = "m8def.dat"
    $crystal = 1000000
    $hwstack = 36
    $swstack = 36
    $framesize = 64

    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
    Config Lcd = 16 * 2
    Initlcd
    Waitms 10
    Cursor Off Noblink
    Cls
    Dim Z As Byte
    Do
    For Z = 1 To 10
    Locate 1 , 1
    Lcd "Einspeisung 230V" ' Anzeige LCD
    Locate 2 , Z
    Lcd Z
    Wait 1

    If Z = 10 Then Cls
    Next
    Loop

  9. #29
    Kabelträger
    Registriert seit
    29.12.2016
    Alter
    67
    Beiträge
    17
    Hallo Daja,
    D03 liegen nicht auf Masse. Nur R/W

    Gruß

    Wie kommt das Smily da rein. Das Soll D0 bis D3 heißen.
    Geändert von arto (10.01.2017 um 19:13 Uhr) Grund: Das Smily

  10. #30
    Kabelträger Avatar von daja
    Registriert seit
    15.11.2016
    Ort
    Lauta
    Alter
    52
    Beiträge
    23
    Dann tu sie mal nach Masse schalten.

Lesezeichen

Lesezeichen

Berechtigungen

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