Moin zusammen!
Also ich habde den Code nun auf ein Minimum reduziert.....
aber der Effekt ist der Selbe!
@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:
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?
Hat dazu vielleicht einer eine Idee, oder weiß jemand Rat?
Schöne Grüße,
Cassio
Also ich habde den Code nun auf ein Minimum reduziert.....
aber der Effekt ist der Selbe!
@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?
Hat dazu vielleicht einer eine Idee, oder weiß jemand Rat?
Schöne Grüße,
Cassio