Allgemeines zu Contollermodule mit Farbdisplay (D062 + D072)

Moin zusammen!

Also ich habde den Code nun auf ein Minimum reduziert.....
aber der Effekt ist der Selbe! :mad:

@Thomas: Die Sache mit dem "If _sec = 0 Then" ändern oder löschen hat auch keine Änderung gebracht. ;)

Ich stell den neuen Code hier noch mal ein:

Code:
'
$regfile = "m128def.dat"
$crystal = 16000000

$hwstack = 128
$swstack = 128
$framesize = 128


'###############################################################################
'###############################################################################
' "Displayantseuerung" wurde wieder heraus genommen!
'###############################################################################
'###############################################################################

Dim Bgwt1 As Byte , Bgwt2 As Byte , Bgwt3 As Byte , Ztag As Byte

Dim Ias As String * 10

Dim Puls As Bit
Dim Iz As Byte , Ia As Bit , Z1 As Byte , Z1s As String * 1 ,
Dim Anz As Byte , Anzs As String * 8 , Anza As Byte , Anzas As String * 8
Dim Sig_bit As Byte , Sync_z As Word , Sync_zs As String * 5

' Bestimme die Ein und Ausgänge
Ddrf = &B1100_0000                                          '1 ist Ausgang 0 ist Eingang
Portf = &B0011_1111                                         'auf Hi oder Low setzen


Config Dcf77 = Pinf.0 , Timer = 1 , Timer1sec = 1 , Debug = 1 , Update = 0 , Check = 1 , Inverted = 0 , Gosub = Sectic

Config Date = Dmy , Separator = .

Enable Interrupts

Date$ = "01.01.07"
Time$ = "12:00:00"

Gosub Lcd_init

'###############################################################################
'###############################################################################
'###############################################################################

'-------------------------------------------------------------------------------
'Hauptprogramm
'-------------------------------------------------------------------------------
Gosub Lcd_cls

Do

If _sec = 0 Then
   If Dcf_status.7 = 1 Then
  Sig_bit = 1                                               ' Test LED Sekundenblinken
   Else
   Sig_bit = 0
   End If
Else
End If


If Sig_bit = 1 Then
Portf.7 = Puls
Else
Portf.7 = 1
End If


If Dcf_status.7 = 1 Then
   If _sec > 0 Then
      If Sync_z < 65535 Then
      Incr Sync_z
      Else
      Sync_z = 0
      End If
   Reset Dcf_status.7
   Else
   End If
Else
End If


Lcd_string = Time$
Lx1 = 2
Ly1 = 2
Fontsize = 2
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print

Lcd_string = "Testanzeige"
Lx1 = 1
Ly1 = 4
Fontsize = 2
If Puls = 1 Then
Lcd_fcolor = Blau
Else
Lcd_fcolor = Rot
End If
Lcd_bcolor = Weiss
Gosub Lcd_print

Lx1 = 0
Ly1 = 78
Lx2 = 131
Ly2 = 80
Color = Blau
Gosub Lcd_box

Lcd_string = Date$
Lx1 = 2
Ly1 = 7
Fontsize = 2
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print

Debounce Pinf.2 , 0 , Menu1

Loop



' ##############################################
Sectic:
Toggle Puls
Return
' ##############################################


'###############################################################################

Menu1:
Gosub Lcd_cls
Bitwait Pinf.2 , Set

Do
For Z1 = 0 To 7
Anz = Portf.z1
Anzs = Str(anz)
Z1s = Str(z1)

Anza = Porta.z1
Anzas = Str(anza)

Lcd_string = "PortF."
Lx1 = 1
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print

Lcd_string = "PortA."
Lx1 = 13
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print



Lcd_string = Z1s
Lx1 = 7
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print

Lcd_string = Z1s
Lx1 = 19
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print



Lcd_string = "="
Lx1 = 8
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print

Lcd_string = "="
Lx1 = 20
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Blau
Lcd_bcolor = Weiss
Gosub Lcd_print



Lcd_string = Anzs
Lx1 = 9
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Rot
Lcd_bcolor = Weiss
Gosub Lcd_print

Lcd_string = Anzas
Lx1 = 21
Ly1 = 1 + Z1
Fontsize = 1
Lcd_fcolor = Rot
Lcd_bcolor = Weiss
Gosub Lcd_print


Waitms 1
Next

Loop Until Pinf.2 = 0

Gosub Lcd_cls
Bitwait Pinf.2 , Set
Return


'###############################################################################
' Hier folgen dann die Display-Subroutinen und die Fonts


Am Ende der Subroutine "Menu1" habe ich ja ein BITWAIT für den PINF.2....
Bis dahin funktioniert auch alles!
Das Display wird in weiß gelöscht und das Programm wartet, dass ich den Taster wieder los lasse.......
Wenn ich das mache.... erfolgt der "Reset".

Merkwürdig ist dabei..... Es sieht so aus, als würde sich das Display in rot füllen und dann stürzt er ab.

Diese Sache ist deswegen so merkwürdig, weil ich "früher" ein Programm hatte, dass in einer Subroutine einen komplett roten Hintergrund benötigte.
Mir ist das schon ein paar mal aufgefallen, dass auf dem Display wilde Zeichen auftauchten, wenn ich ein neues Programm eingespielt hatte.

Auch das Löschen beider Speicher hatte keine Änderung gebracht.
Um das Problem zu lösen, musst ich immer das Programm vom "Auslieferungszustand" einspielen....
Danach konnte ich wieder mein Programm übertragen und alles lief normal.

Es hat für mich also den Anschein, als würde im Mega128 nicht alles gelöscht werden und alte Programmteile hängen bleiben.

Ist das überhaupt Möglich.... und wie kann ich den AVR ganz sicher leer machen? :confused:

Hat dazu vielleicht einer eine Idee, oder weiß jemand Rat?

Schöne Grüße,
Cassio
 
Hallo Cassio,

das ist schon ein sehr seltsamer Effekt den Du beschreibst. Ich verwende vor dem Programmieren eines Device immer vorher die Funktion "Erase Device". Dazu gibt es im AVR-Studio unter Program eine eigene Funktion. Außerdem schalte ich die Optionen "Erase device before flash programming" und "Verify device after programming" immer ein.

Bis heute habe ich damit noch nie Probleme gehabt. Unabhängig davon sollten auch nicht vollständig gelöschte Speicherzellen keine Probleme bereiten da ja der Controller nur dort hineingreifen oder "langlaufen" sollte was Dein Programm vorgibt. Es sei denn, durch einen Programmierfehler wird der program counter verbogen usw.

Aber ganz schön dubios finde ich das schon!

Grüße,
Markus
 
Hallo Markus!

Da sagst du was.....
Ich fand das schon immer sehr seltsam und diesen Effekt habe ich auch nur bei dem Modul bis jetzt gehabt.
Allerdings ist es der einzige Mega128 den ich hier habe und kann daher keine Vergleiche ziehen....

Wenn ich bloß diese olle Datei mit dem "Demoprogramm" wieder finden würde, dann könnte ich das Spielchen ja noch mal probieren.

Ich lösche sonst nicht grundsätzlich die Daten vor dem Neuprogrammieren....
Weiß nun allerdings auch nicht, ob BASCOM das beim "automatischen" Programmieren und Prüfen gleich mit durchführt.

Was mir gerade einfällt....
Ich kann ja mal die fertig kompilierten Dateien nehmen und mit PonyProg in das Modul laden. Müsste doch auch funktionieren...


Ich wundere mich da aber nicht weiter drüber, denn wenn es immer nach Plan laufen würde, dann wäre ich nicht Cassio. ;)

Ich halte euch auf dem laufenden.....

Gruß,
Cassio
 
Hallo !

So...... Nun habe ich das ursprüngliche Demoprogramm mal in den Controller geladen und danach wieder mein DCF77-Testprogramm.

Pustekuchen..... !!!

Was mir sonst immer geholfen hatte, erwies sich leider als Fehlschlag. :mad:

Zur Info:
Weil das Demoprogramm auf dem Modul ganz interessant ausgesehen hatte, es aber nicht als BAS-Datei dabei gewesen ist, hatte ich damals den ganzen Speicher (inkl. EEprom) mit Ponyprog ausgelesen.

Wenn ich sonst Probleme mit dem Modul hatte, habe ich nur dieses "Speicherabbild" in den Controller geladen und danach wieder mein Programm........ und auf wundersame Weise lief es danach immer.

Diesmal hat dieser "Trick" leider nicht geholfen. :mad:

Nun bin ich langsam ratlos, was ich noch probieren könnte.


Ich verstehe nicht, warum beim Rücksprung aus der Sub der Controller sich resetet. :banghead:


Gruß,
Cassio
 
Hallo !

Eeeeeendlich habe ich den Verursacher gefunden ! :D :D :D :D :D


Nachdem ich heute einige Stunden gemeinsam mit Grandpa verbracht hatte.... und wir dabei auch über das o.g. Phänomen gesprochen haben kam mir die Idee, den Sprung in die Subroutine nicht mit DEBOUNCE zu realisieren..... sondern mit einem automatischen Aufruf.

Wir haben also kurzer Hand einen Zähler integriert der beim 100ten Do-Loop Durchlauf in die Sub "Menu1" springt und dann selbstständig wieder zurück in die Hauptschleife kommt.
Tja und siehe da........ keine Probleme! :D
Der Controller erfuhr kein "Reset" und lief normal weiter!

Dann haben wir das Ganze von Hand mit einer IF-THEN Schleife gemacht und auch das funktionierte einwandfrei! ;)

Damit steht also fest...... DEBOUNCE ist das Problem gewesen ! :banghead:


Nun folgt nur noch die Frage nach dem: Warum?

Tja.... da haben wir nun auch keine Erklärung gefunden!
Wenn jemanden etwas dazu einfällt, dann raus mit der Sprache. :)

Bis dahin werde ich den DEBOUNCE-Befehl bei diesem Modul erst einmal nicht weiter verwenden. :dirol:

Grüße,
Cassio
 
Hallo zusammen,

hat schon mal jemand mit Fartabellen und dem Modul D072 gearbeitet?
Folgendes Problem: Ich habe mehrere Symbole (Wetter), die Farben wiederholen sich. Also habe ich alle Einzelsymbole auf ein "Blatt" dann in GLCD_Converter und dann die Farbtabelle extra gesichert. Nun werden im Programm (.bas) die Symbole als .bin - Datei eingebunden und ich nehme nur diese eine Fartabelle und binde die auch mit ein... er stellt kein Symbol in den richtigen Farben dar:confused: :confused: :confused:
Falls jemand einen tipp für mich hat, ich wäre sehr dankbar.

Gruß Juro
 
Hi juro,

Nun werden im Programm (.bas) die Symbole als .bin - Datei eingebunden und ich nehme nur diese eine Fartabelle und binde die auch mit ein... er stellt kein Symbol in den richtigen Farben dar:confused: :confused: :confused:
Falls jemand einen tipp für mich hat, ich wäre sehr dankbar.
sind das GIFs ??

Also da hat jedes GIF seine Farbtabelle drin. Da steht eigentlich nur drin
Farbe 0 = grün (Farbwerte 00 FF 00)
Farbe 1 = blau (Farbwerte 00 00 FF)
Farbe 2 = rot (Farbwerte FF 00 00)
Farbe 3 = rosa ...

Da hat jedes Bild natürlich nach den im Bild verwendeten Farben eine eigene
Nummerierung und eigene Farbwerte. Wenn ein Bild kein rot drin hat, dann
wirst Du in dessen Farbtabelle evtl gar kein rot finden.

Du müßtest also vorher die Bilder so aneinander anpassen, das die
Farbtabellen alle identisch sind.

Ich würde das so machen ...
Alle verwendeten Bilder auf ein Bild bringen (Auf einem großen Bild einfügen)
und danach das gruße mit den kleinen darin als GIF speichern. Danach das
Teil wieder laden damit das Grafikprogramm die Farbtabellen wirklich neu
reinlädt. Dann die kleinen Teile wieder ausschneiden und einzeln speichern.
Dann sollten alle hoffentlich eine identische Farbtabelle haben (hoffentlich) :D

Gruß
Dino
 
Hallöchen,

es geht...:D
Ich habe es so gemacht, wie beschrieben. Alle .gif einzeln in eine große und dann Farbtabelle angelegt und abgespeichert. Dann alle einzeln gesichert und ....
Danke für den Tipp. Bis zur nächsten Frage.

Gruß Juro
 
Hallo zusammen,

Ich bin ganz sicher, dass hier jemand eine Antwort darauf hat...
Wo und wie bekomme ich eine DATA-Zeile für das Grad-Zeichen (°).
Ich habe irgendwas mit LOOKUP gelesen, aber ehrlich gesagt werde ich nicht schlau daraus.

Danke
Gruß Juro
 
Hi Juro !

Tja, ich habe hier so einige Sonderzeichen als "Data-Zeile", aber das Grad-Symbol habe ich leider auch nicht. :rolleyes:

Dann musst du wohl selber ran.....

Kannst es dann aber gern hier einstellen! So haben wir alle etwas davon. ;)


Schöne Grüße,
Cassio


PS: Was ich zu deiner Wetterstation noch zufällig gefunden habe---> HIER KLICKEN
Schaut doch gut aus--->
wetterstation_trexis5_1.jpg
 
Hallo Zusammen,

ich hab es geschafft. Nun kann ich auf meienr Wetterstation auch ein
(°) Grad - Zeichen darstellen. Ob das die einzige Lösung ist, keine Ahnung aber diese funktioniert.

Kannst es dann aber gern hier einstellen! So haben wir alle etwas davon.

Dann mach ich das mal und hänge hier mal eine .pdf ran. Ich hoffe es ist zu lesen.

Gruß Juro
 

Anhänge

  • Data_Zeile_Grad.pdf
    291,3 KB · Aufrufe: 21
Hallo Juro!

Super ! :party:


Das hast du aber prima gelöst! Gratulation!

Werde es mal auf meine alte Version ändern und dann ausprobieren! ;)


Gruß,
Cassio
 
Hallo Cassio,

ja, probier mal aus, nicht das es nur bei mir geht. Hab ganz schön gebraucht bis ich verstanden habe, wie das gehen kann. Vielleicht konnte ich so auch mal helfen...:)
Bei meiner Wetterstation funktioniert soweit alles. Bin jetzt beim "schöner wohnen" teil. Ich habe Probleme mit der Darstellung von meinen Grafiken. Sie sind 60*60 Pixel und die Grafiken wechseln, aber immer an der gleichen Position auf dem Display. Nun stellt er die Grafiken immer anders da, mal etwas mehr links mal etwas mehr rechts. Das verstehe ich nicht, ich lasse das Bild doch jedes Mal neu aufbauen (RESTORE)?!
Naja, wie gesagt "schöner wohnen"...

Gruß Juro
 
Hallöchen Zusammen,

juro hat mal wieder eine Frage...
Kann mir mal einer ein paar Worte zum PowerBooster erzählen, der sich auf meinem D072 befindet.
Ich denke der tut folgendes:

"Er" moduliert die Spannung von z.B. 5v auf 8V für die Displaybeleuchtung???
Was passiert da genau...??

Wäre toll wenn ihr mir helfen könntet!
Danke!

Gruß Juro
 
Hi Juro!

Wie das nun genau auf deinem Modul gemacht wird bzw. welche Bauteile dafür verwendet wurden kann ich dir leider auch nicht sagen.

Prinzipiell kann es ja nur eine Ladepumpe sein.... wie das dann auch immer realisiert wurde. :hmmmm: ;)

Gruß,
Cassio
 
Hi Juro!

Ich habe eben noch mal schnell die Anleitung durchgesehen....

Auf Seite 18 steht etwas von +7V und -7V für die Displaybeleuchtung.
Vielleicht hilft dir das ja bei der Suche der Bauteile weiter. ;)

Gruß,
Cassio
 
Hallo Cassio,

danke für dein Antwort!
Das habe ich auch gelesen... bei mir sind es +8V und -8V.
Ich bin ganz ehrlich mit dem Begriff "Ladepumpe" kann ich nicht so viel anfangen :eek:
Ist ja nur interassant wenn die Leute schweißtreibende Fragen stellen am Ende der Präsentation meiner Wetterstation.
Danke für deine Hilfe!

Gruß Juro
 
Hi Juro.

Ich bin ganz ehrlich mit dem Begriff "Ladepumpe" kann ich nicht so viel anfangen :eek:
ne Ladungspumpe pumpt Ladung ;)
Wo speichert man Ladung ? Richtig - in einem Kondensator.
Eine Ladungspumpe arbeitet also mit Kondensatoren.

Du findest Ladungspumpen zB im MAX232 oder im ICL7660.
Oder man baut mit nem NE555, 2 Dioden und 2 Elkos selber eine ;)

Gruß
Dino
 
hi juro,

du musst dir eine Ladungsumpe folgendermaßen vorstellen. Du nimmst zwei Kondensatoren, die aufgeladen werden und danach direkt wieder in Reihe geschaltet werden. Das ist das gleiche Prinzip, wie in einer Taschenlampe, in der du mehrere Batterien in Reihe schaltest um eine höhere Spannung zu bekommen. Bei einer Kondensatorpumpe war aber nach meinem Wissen, der Wirkungsgrad eher bescheiden.

Hier hast du noch etwas zum nachlesen : http://de.wikipedia.org/wiki/Spannungsverdoppler

Gruß
Technicus
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)