- 12V Akku mit 280 Ah bauen         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 32

Thema: Problem mit Showpice und EEPROM

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    Anzeige

    LiFePo4 Akku selber bauen - Video
    HMm ne bekomme es mit Bascom nicht zum laufen. Muss die Tage mal schauen das mit AVR- Studio o.ä. zu machen denn mitlerweile sind allein 50% meines Programms nur durch .bgf Dateien belegt
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    51
    Beiträge
    169
    Also wenn 50% Deines Programmes mit .bgf Dateien belegt sind speicherst Du diese nicht ins EEPROM oder ? Stell doch mal Deinen Code ein, dann lässt sich der Fehler wahrscheinlich leichter finden.

    Gruß
    Jens

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    Jep genau die Bilder werden auf dem ganz normalen Speicher hinterlegt. Programm ist wie folgt:

    $regfile = "m644def.dat"
    $framesize = 54
    $swstack = 128
    $hwstack = 64
    $crystal = 8000000
    $baud = 9600



    Config Pinb.1 = Input
    Config Portb.0 = Output
    Config Porta.5 = Output
    Config Porta.6 = Output
    Config Portb.2 = Output
    Dcf77 Alias Portb.0
    Displaysp Alias Porta.5
    Displaybel Alias Porta.6
    Pwrled Alias Portb.2
    Displaysp = 1
    Pwrled = 1
    Set Portb.1

    Wait 2

    $lib "glcdKS108.lib"

    Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Ce = 2 , Ce2 = 3 , Cd = 4 , Rd = 5 , Reset = 7 , Enable = 6


    Setfont Font8x8


    Config Timer1 = Timer , Prescale = 256 '64 bei 10 ms
    Enable Timer1
    On Timer1 Cntfull
    Enable Interrupts
    Timer1 = 62410 '64285 bei 10ms

    Config Adc = Single , Prescaler = 128 , Reference = Internal_2.56
    Start Adc


    Dim Stehlampes As Byte , Temp As Byte , Geraeteist As Byte , Cursorpos As Byte , Cnt As Byte , Einstellungentimesoll As Byte , Lastmenu As Byte , Weckerw As Byte , Nachtw As Byte
    Dim X As Word , Y As Word , Beltimeist As Word , Beltimesoll As Word , Menutimeist As Word , Menutimesoll As Word ,
    Dim Menu As Integer , Sekunden As Integer , Weckerzeit As Integer , Displaytime As Integer , Nachtein As Integer , Nachtaus As Integer , Stehlampetimeist As Integer , Leuchtkugeltimeist As Integer , Minute As Integer , Stunde As Integer , Tag As Integer , Wotag As Integer , Klmon As Integer , Kljahr As Integer , Tvtimeist As Integer , Internettimeist As Integer , Wlantimeist As Integer , Neontimeist As Integer , Lichterkettetimeist As Integer , Musikanlagetimeist As Integer , Test As Integer , Wert As Integer
    Dim Nacht As Bit , Wecker1 As Bit , Wecker2 As Bit , Wcheck As Bit , Synchro As Bit , Tv As Bit , Internet As Bit , Wlan As Bit , Lastwecker As Bit , Neon As Bit , Lichterkette As Bit , Musikanlage As Bit , Leuchtkugel As Bit , P As Bit , Status As Bit , Menucheck As Bit
    Dim Minute1 As String * 2 , Minute2 As String * 2 , Stunde1 As String * 2 , Stunde2 As String * 2 , Tag1 As String * 2 , Tag2 As String * 2 , Klmon1 As String * 2 , Klmon2 As String * 2 , Kljahr1 As String * 2 , Kljahr2 As String * 2 , Wochentag As String * 2

    Dim Wstunden As Integer , Wstunden1 As String * 2 , Wstunden2 As String * 2 , Nminutenan1 As String * 2 , Nminutenan2 As String * 2 , Nstundenan1 As String * 2 , Nstundenan2 As String * 2
    Dim Wminuten As Integer , Wminuten1 As String * 2 , Wminuten2 As String * 2 , Nminutenaus1 As String * 2 , Nminutenaus2 As String * 2 , Nstundenaus1 As String * 2 , Nstundenaus2 As String * 2
    Dim W1stunden As Integer , W1minuten As Integer , Nminutenan As Integer , Nstundenan As Integer
    Dim W2stunden As Integer , W2minuten As Integer , Nminutenaus As Integer , Nstundenaus As Integer


    Nstundenan = 0
    Nstundenaus = 0
    Nminutenan = 0
    Nminutenaus = 0
    Weckerw = 0
    Menu = 0
    Beltimesoll = 150
    Beltimeist = 150
    Menutimesoll = 150
    Menutimeist = 150
    Wstunden = 0
    Wminuten = 0
    Synchro = 1
    Wert = -1
    Displaytime = 6000

    .
    .
    .

    Menu6:
    Showpic 0 , 0 , Einstellungen_wecker
    Gosub Readtouch
    If X > 45 And Y > 45 Then
    If X > 16 And X < 248 And Y > 288 And Y < 976 Then : Showpic 0 , 0 , Einstellungen : Menu = 4 : End If
    If X > 320 And X < 960 And Y > 336 And Y < 576 Then : Showpic 0 , 0 , Einstellungen_wecker1 : Menu = 21 : End If
    If X > 320 And X < 960 And Y > 688 And Y < 928 Then : Showpic 0 , 0 , Einstellungen_wecker2 : Menu = 22 : End If
    End If
    Return

    .
    .
    .
    Readtouch:
    Config Pina.0 = Output ' Makes port F.0 output
    Config Pina.2 = Output ' Makes port F.0 output
    Set Porta.0 ' Sets port F.0 High
    Reset Porta.2 ' Sets port F.2 Low
    Ddra.1 = 0 ' Sets port F.1 as input
    Ddra.3 = 0 ' Sets port F.1 as input because we need it now as ad input
    Waitms 20 ' Wait until the port is stable
    Y = Getadc(3) ' Read the ad value for the y
    Y = 1024 - Y ' Invert the reading
    'Print "VALUE Y : " ; Y ' for debugging
    Config Pina.1 = Output ' Makes port F.1 output
    Config Pina.3 = Output ' Makes port F.3 output
    Reset Porta.1 ' Sets port F.1 Low
    Set Porta.3 ' Sets port F.3 High
    Ddra.0 = 0 ' Sets port F.0 as input
    Ddra.2 = 0 ' Sets port F.2 as input because we need it now as ad input
    Waitms 20 ' Wait until the port is stable
    X = Getadc(2) ' Read the ad value for the x
    X = 1024 - X ' Invert the reading
    'Print "VALUE X : " ; X
    If X > 45 And Y > 45 And Beltimeist <= 0 Then : Beltimeist = Beltimesoll : Menutimeist = Menutimesoll : Displaybel = 1 : X = 0 : Y = 0 : Wait 1 : End If
    Return


    Cntfull:
    Timer1 = 62410
    If Synchro = 1 Then
    Dcf77 = 1
    If Pinb.1 = 1 Then
    If P = 1 Then
    Select Case Wert
    Case 21 To 28 : Gosub Minuten
    Case 29 To 35 : Gosub Stunden
    Case 36 To 41 : Gosub Kltag
    Case 42 To 44 : Gosub Wotag
    Case 45 To 49 : Gosub Monat
    Case 50 To 58 : Gosub Jahr
    End Select
    Wert = Wert + 1
    If Test > 17 Then : Wert = -1 : End If ' Minute = 0 : Stunde = 0 : Tag = 0 : Klmon = 0 : Kljahr = 0 : Wotag = 0 : End If
    If Test = 8 Then : Status = 1 : End If
    If Test = 9 Then : Status = 0 : End If
    End If
    Test = 0 : P = 0
    Else : P = 1
    End If
    If P = 1 Then
    Test = Test + 1
    End If
    End If
    If Synchro = 0 Then : If Minute = 42 And Stunde = 20 Then : Synchro = 1 : Wert = -1 : End If : End If
    If Synchro = 0 Then : Sekunden = Sekunden + 1 : End If
    If Sekunden > 599 Then : Cls : Sekunden = 0 : Minute = Minute + 1 : Gosub Formattime : Gosub Timecheck : End If
    If Minute > 59 Then : Minute = 0 : Stunde = Stunde + 1 : Gosub Formattime : Gosub Timecheck : End If
    If Stunde > 23 Then : Stunde = 0 : Synchro = 1 : Gosub Formattime : Gosub Timecheck : End If
    If Beltimeist > 0 Then : Beltimeist = Beltimeist - 1 : End If
    If Menutimeist > 0 Then : Menutimeist = Menutimeist - 1 : End If
    If Displaytime > 0 Then : Displaytime = Displaytime -1 : End If
    Return


    Mainmenu:
    $bgf "Mainmenu1.bgf"
    Musik:
    $bgf "musik.bgf"
    Musikplayer:
    $bgf "Musik_player.bgf"
    Musiknoconn:
    $bgf "Musik_noconnection.bgf"
    Steuerung:
    $bgf "steuerung.bgf"
    Pccontrol:
    $bgf "PCControl.bgf"
    Einstellungen:
    $bgf "Einstellungen.bgf"
    Einstellungen_beltime:
    $bgf "Einstellungen_Beltime.bgf"
    Einstellungen_menutime:
    $bgf "Einstellungen_Menutime.bgf"
    Einstellungen_nachts_aus:
    $bgf "Einstellungen_Nachts_Aus.bgf"
    Einstellungen_nachts_ein:
    $bgf "Einstellungen_Nachts_Ein.bgf"
    Einstellungen_nachts_eingabe_bis:
    $bgf "Einstellungen_Nachts_Eingabe_Bis.bgf"
    Einstellungen_nachts_eingabe_von:
    $bgf "Einstellungen_Nachts_Eingabe_Von.bgf"
    Tv:
    $bgf "TV.bgf"
    Internet:
    $bgf "Internet.bgf"
    Wlan:
    $bgf "Wlan.bgf"
    Neon:
    $bgf "Neon.bgf"
    Lichterkette:
    $bgf "Lichterkette.bgf"
    Musikanlage:
    $bgf "sound.bgf"
    Einstellungen_steuerung_time:
    $bgf "Einstellungen_Steuerung_Time.bgf"
    Stehlampe:
    $bgf "Stehlampe.bgf"
    Leuchtkugel:
    $bgf "Leuchtkugel.bgf"
    Einstellungen_wecker1:
    $bgf "Einstellungen_Wecker1.bgf"
    Einstellungen_wecker2:
    $bgf "Einstellungen_Wecker2.bgf"
    Einstellungen_wecker_zeit:
    $bgf "Einstellungen_Wecker_Zeit.bgf"
    Einstellungen_wecker_tag:
    $bgf "Einstellungen_Wecker_Tag.bgf"
    Einstellungen_wecker:
    $bgf "Einstellungen_Wecker.bgf"

    $include "font8x8.font"



    so insgesamt sind das so an die 22 Menus aber die wollt ich jetzt nicht alle posten=). hab leider keine Idee woran das liegen kann. Auch wenn ich $eepromhex verwende ändert sich nichts.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    51
    Beiträge
    169
    Na das sieht ja sehr umfangreich aus.

    Also erstmal musst Du zwischen EEPROM und normalem Speicher unterscheiden. Für den normalen Speicher kannst Du Dir die Anweisungen
    $EEPROM und $EEPROMHEX sowieso sparen.

    Bilder ins EEPROM legen:

    Code:
    $EEPROM
    $EEPROMHEX ' speichert die EEPROM Daten direkt im Intel Hex Format in Deinem Arbeitsverzeichnis, dieses File (meinprogramm.eep) musst Du gesondert in den AVR hochladen)
    
    Bild1:
    $bgf "bild1.bgf"
    
    Bild2:
    $bgf "bild2.bgf"
    .
    .
    .
    Bild100:
    $bgf "bild100.bgf"
    
    $Data  ' WICHTIG
    
    'Diese Zeilen am Anfang Deines Programmes setzen.
    Ein Bild aus dem EEPROM anzeigen musst Du dann mit

    ShowpicE 0, 0, Bild1


    Bilder aus dem normalen Speicher Deines AVR liest Du nur mit:

    Code:
    Showpic 0, 0, Bild1
    
    'und bindest diese am Ende Deines Programmcodes mit
    
    :bild1
    $bgf "bild1.bgf"
    ein.


    Ich könnte mir vorstellen das genau das Dein Problem ist.

    Gruß
    Jens

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    so habs genau so gemacht wie du gesagt hast:

    $eeprom
    Bild1:
    $bgf "..."
    .
    .
    .
    $data

    $regfile = "m644def.dat"
    $framesize = 54
    $swstack = 128
    $hwstack = 64
    $crystal = 8000000
    $baud = 9600
    .
    .
    .



    Aber ist noch immer der selbe Fehler. Das Anfangbild zeit er ohne Probleme an aber sobald ich das menu wechsel bekomm ich nur noch wirsches zeug.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    51
    Beiträge
    169
    Mach das mal besser nach $baud, also erst die Initialisierung des Prozis.

    Hast Du denn auch das EEPROM mit Deinen Daten geladen ?

    Probier mal folgendes:

    Code:
    $regfile = "m644def.dat"
    $framesize = 54
    $swstack = 128
    $hwstack = 64
    $crystal = 8000000
    $baud = 9600
    
    $eeprom
    $eepromhex
    
    Bild1:
    $bgf "..."
    .
    .
    .
    .
    $data
    
    
    showpice 0 , 0, eeprom1 'Bild1 aus dem EEPROM
    wait 2
    showpice 0, 0, eeprom2 'Bild aus dem EEPROM
    
    end
    Womit proggst Du Deinen AVR ?

    Gruß
    Jens

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    Progge mit Bascom. Lade dann einmal das Programm in den Flash und dann über EEPROM die Daten in den EEPROM. Also mit $eepromhex geht es gar nicht da bekomm ich nichtmal ein ordentloches bild und ohne geht auch nicht. immer noch der selbe fehler. das problem ist dass ich nicht mit AVR Studio proggen kann da ich den ISP Dongle dongel über LPT habe.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    51
    Beiträge
    169
    Ahso ... also $eepromhex brauchst Du nur damit Bascom Dir ein Intel-Hex file erzeugt, welches Du in Bascom (oder WinAVR) getrennt vom Programm upload als eeprom file laden kannst (bei mir musste ich diesen Umweg gehen, da mir auch nur Müll angezeigt wurde).

    Hast Du mal versucht den HWStack zu erhöhen oder die Framesize ?
    Oder hast Du mal versucht nur ein Beispielprogramm mit $bgf hochzuladen ohne Dein jetziges Programm ?

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    35
    Beiträge
    235
    Hmm also wenn ich einzelne Bilder anzeigen lasse geht das einwandfrei. Mir ist das was aufgefallen. Der ATMEGA644 hat 64K Bytes Flashspeicher aber nur 2K EEPROM Speicher. Könnte das sein dass die Bilder einfach viel zu groß sind? Denn ein einzeles ist nicht so groß und da klappt es aber ab ca. 3 Bilder bekomm ich nur Müll
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    51
    Beiträge
    169
    Klar kann das sein. Wie groß sind denn die Bilder (Dateigröße) ?

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad