- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Daten aus EEProm löschen über Bascom

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    Daten aus EEProm löschen über Bascom

    Anzeige

    Powerstation Test
    Hallo zusammen,

    mal wieder eine Anfängerproblem.

    Ich habe ein Prog mit einer Subroutine zum Setup. In der Subroutine kann ich zwei Zahlenwerte festlegen die in das EEprom geschrieben werden. Das Mainprog arbeitet dann immer mit diesen Werten.

    So weit alles klar und es funktioniert. Nur wenn ich das Setup erneut aufrufe und neue Werte eingebe dann werden die Daten im EEprom nicht überschrieben.

    Hier ein Auszug:

    Code:
    '*** Setuproutine Setup für Übernahme Tankinhalt***
        Setuproutine:
        Print "Bin im Setupmodus"
        Tankeeprom = Waitkey()                                  'Warte auf die Eingabe des Tankinhaltes
        If Tankeeprom > 0 Then
          Writeeeprom Tankeeprom , 1
          Print Tankeeprom
          End If
          Testwert = Waitkey()
          If Testwert <> 0 Then
          Writeeeprom Testwert , 10
          Print Testwert                                        'Nur für das Terminalprogramm ob Wert OK
          End If
    
    
        Wait 1
     Return
    Was kann ich denn dort vor dem Writeeprom eingeben, damit die alten Daten komplett aus dem Eeprom gelöscht werden bevor neue geschrieben werden?

    Die Variable "Tankeeprom" ist Long. Die Werte für die Varable können von 0 - 10.000 (hier ml) gehen. Die Variable "Testwert" ist Byte.

    Die Variable "Tankeeprom" wird im Hauptteil dann später bei der Initialisierung ausgelesen und die Berechnungen starten. Das funktioniert auch wunderbar.

    Komisch ist auch, das im Terminalprogramm (von Br@y) nicht gewartet wird bis ich was bei Waitkey eingebe. Das rauscht nach ca. 8 sec. automitsch weiter und die Subroutine kehrt zurück.

    Was kann das denn sein?

    Gruß
    Markus

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    ... Komisch. Ich habe If Then rausgeschmissen. Habe aber immer noch das Problem, das das Setup auch ohne Datenempfang bei Waitkey() einfach nach einer kurzen Zeit weitermacht und über Return ins Hauptprogramm zurückgeht.

    Das mit dem EEProm und den neuen Werten habe ich auch noch nicht hinbekommen.

    Also immer noch Probleme.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Hi

    Hab das jetzt nur kurz überflogen aber ich verstehe nicht ganz was für ein Problem du hast.

    Die Routine warte auf ein Zeichen
    Ko0mmt eins dann wird geprüft ob es größer 0 ist und wenn ja dann wirds an Adresse 1 geschrieben und auf dem Terminal ausgegeben.

    wenn nicht dann gehts weiter zur Zweiten Eingabe und das gleiche spiel mit Adresse 10.

    Womit du den Inhlat überprüfst kann ich nicht erkennen.

    Gib doch zum testen einfach den EEprominhalt aus anstatt der Variable oder beides in der gleichen Zeile dann haste sofort die kontrolle ob es stimmt.(Readeeprom = Variable vor der ausgabe)




    Zu Waitkey () :

    Normalerweise sollte der Controller solange warten bis was kommt.
    Was passiert denn wenn an der Seriellen nix hängt ?
    Rauscht er dann immernoch nach einigen Sekunden durch ?
    Gruß
    Ratber

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Ratber,

    na Du Nachtschwärmer!

    Also das ist so.

    Wenn über RS232 ein bestimmtes Zeichen gesendet wird, dann wird in die Setuproutine gesprungen.

    Dann sollen von einem zweiten Controller zwei Werte übermittelt werden und in die Adresse 1 und 10 geschrieben werden.

    Ich habe das ganze mit dem Simulator von Bascom laufen lassen. Da wartet die Simulation schön auf die beiden Werte. In der Ansicht des EEProms sehe ich auch die Werte in den Adressen.

    So dann brenne ich. Hab den Controller auf einem STK500 und kontroliere mit dem Terminalprogramm. Da sehe ich auch den Sprung in die Subroutine. Mache ich aber nichts dann läuft er einfach nach kurzer Zeit weiter. Ich sehe wie die Routine verlassen wird. Kann es sein das die Terminalprogramme ständig was senden?

    Zum zweiten Problem:

    Ich habe es geschafft über das Terminalprogramm die Daten zu senden. Mache ich das gleiche mit anderen Werten nach einem Reset, sehe ich an den Daten die ich aus der Hauptroutine mit dem Terminal empfange, dass es sich noch offensichtlich um die alten EEProm Daten handelt.

    Gruß
    Markus

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Hi Markus


    na Du Nachtschwärmer!
    Yo,hatte heut Besuch vonner Buckligen Verwandschaft zwecks Weihnachtsessen.
    Kann aber irgendwie nicht pennen also Tipper ich mich müde



    ch habe das ganze mit dem Simulator von Bascom laufen lassen.
    Yo,der ist zwar ganz nett aber eben nicht perfekt.
    Ich teste lieber in der Schaltung.
    Bei weit über 10k Programierzyklen ist das kein akt *gg*


    Kann es sein das die Terminalprogramme ständig was senden?
    eigentlich sollten sie das nicht tun.
    Häng doch einfach mal ne Low-Current-LED oder ne normale mit Transe an die Empfangsleitung.
    Dann kannste sehen ob sich was tut.
    Ich hab dafür noch einen alten Schnittstellentester damit kann man schön sehen ob und was läuft.



    Ich habe es geschafft über das Terminalprogramm die Daten zu senden. Mache ich das gleiche mit anderen Werten nach einem Reset, sehe ich an den Daten die ich aus der Hauptroutine mit dem Terminal empfange, dass es sich noch offensichtlich um die alten EEProm Daten handelt.
    Hmm,ja,könnte mit dem ersten Problem zusammenhängen.
    Wenn er unaufgefordert Zeichen sendet dann kann er vieleicht auch welche schlucken.
    Hatte mal was ähnliches mit den Puffern im System.
    Alles was an HD,Stick,USB oder sonstwo geschickt wurde ist irgrgendwohin umgeleitet worden und hing manchmal.
    Hab nie rausgefunden was es war und neuinstalliert.

    Passiert das auch wenn du nach dem reset das Terminal neu startest ?
    Gruß
    Ratber

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hi Ratber,

    hatte heut Besuch vonner Buckligen Verwandschaft zwecks Weihnachtsessen.
    Kann aber irgendwie nicht pennen also Tipper ich mich müde
    HaHa geht mir genauso, hab aber dann doch um 02:30 die Kist mit Decke vorgezogen.

    Hmm, werd mal mein Oszi ausgraben und mal checken ob da was läuft.

    Is scho komisch. Freut man sich wenn der Sim. so funzt wie man das will und die real Hardware dann nicht. Wo kann ich eigentlich mal was grundsätzliches über die gesamte RS232 Thematik nachlesen?

    Was mir noch nicht ganz klar ist: Wenn ich z.B über Print A;B;C eine Kette sende werden die drei Werte ja direkt aneinander gehängt. Wie kann ich am Empfänger die drei Werte wieder auseinanderhalten damit dann jeweisl getrennt weitergearbeitet werden kann?

    Zusätzlich muss ich mich nocht mit Manchester und Checksum beschäftigen. Da hab ich einiges an Lernerei vor mir.

    Gruß Markus

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    HaHa Very Happy geht mir genauso, hab aber dann doch um 02:30 die Kist mit Decke vorgezogen.
    Ja,eigentlich war ich am ende der Feier müde (Voller Magen....)aber nach dem abräumen gings einfach nicht.
    Hab noch bis fast fünfe gemacht.
    Maja,jetzt hab ich wenigstens wieder ne saubere Ätzküvette



    Is scho komisch. Freut man sich wenn der Sim. so funzt wie man das will und die real Hardware dann nicht. Wo kann ich eigentlich mal was grundsätzliches über die gesamte RS232 Thematik nachlesen?
    Gute Frage.
    Ich hab mir das im Laufe der Zeit alles zusammengelesen und experimentiert.
    Im Web sollte sich aber genug darüber finden.
    Goggle mal etwas.


    Was mir noch nicht ganz klar ist: Wenn ich z.B über Print A;B;C eine Kette sende werden die drei Werte ja direkt aneinander gehängt. Wie kann ich am Empfänger die drei Werte wieder auseinanderhalten damit dann jeweisl getrennt weitergearbeitet werden kann?
    Da gibt es einige möglichkeiten.
    -Sende feste strukturen (Feste länge pro wert) damit du am anderen ende weißt "wo" du trennen mußt.
    -Sende einzeln mit CR
    -Füge Trennzeichen ein die vorher definiert werden müssen.
    Wenn es Zahlen sind reicht schon ein leerzeichen.

    Zusätzlich muss ich mich nocht mit Manchester und Checksum beschäftigen. Da hab ich einiges an Lernerei vor mir.
    Zu Manchester:

    Ich weiß nicht an welcher stelle du ihn brauchst aber Bin2Gray,Gray2bin nd Encoder könnten dir vieleicht helfen.

    Zu Checksum:

    Auch da bietet Bascom was an.
    Schau mal unter Checksum,CRC8/16/32

    Ansonsten was eigenes basteln.
    zb.die Werte per xor verknüpfen und das Ergebnis am ende der Übertragung ebenfalls übertragen.
    DerEmpfänger kann dann vergleichen.
    (Wenn du per inkey arbeitest mit aufaddierter 1 am Ende um den Wert 0 als Zeichen zu vermeiden)
    War natürlich nur ein ganz simples Beispiel.
    der Aufwand steigt mit der sicherheit.
    Gruß
    Ratber

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Ratber,

    meine Jet-Tankuhr mit Telemetrie ist fast fertig. Die RS232 Thematik hab ich so einigermaßen im Griff. Manchester wollte wg. der Datenqualität bei der Funkübertragung machen. Ich habe zwar die wirklich guten Funkmodule von HM-Radio, wollte aber da wirklich auf Nummer sicher gehen.

    Ich hab aber nun ein riesiges Problem. Bin mit dem Code beim Empfänger schon an der 4k - Grenze des Bascom Demos.

    Jetzt kann ich keine Manchester Codierung mehr ausprobieren geschweige die restlichen nötigen RS232 Übertragungsmodi.

    Gibt es eine Möglichkeit den Code zu "stückeln" und danach wieder irgendwie zusammenzubringen?

    Ich dachte daran einige Routinen die zusammenhängen als AVR Studio Objektfile zu compilern und in AVR Studio dann als komplette Datei zu "hexen".

    Ginge so was?

    Gruß
    Markus

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Da ist mir nix bekannt und ich kann mir das auch nicht vorstellen das es ginge.

    Ich würde sagen es ist soweit an eine Vollversion zu denken.
    Gruß
    Ratber

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Ratber,

    ...hmm scheint so. Arbeitest Du mit der Vollversion?

    Ich habe nochmal wg. der RS232 Thematik nachgedacht. Die Geschichte mit der Trennung der Zeichen.

    Würde das funktionieren?


    Sender:
    Code:
       DIM Sendepaket(5) as byte 
       Sendepaket(1) = 2 
       Sendepaket(2) = 50 
       Sendepaket(3) = 0 
       Sendepaket(4) = 32 
       Sendepaket(5) = 32 
       
    
     PRINT Sendepaket(1), 5
    Empfänger:
    Code:
     Sendepaket(1), 5 =Inkey()  
       if Sendepaket(2) = 2 then "tue irgendwas" 
    ..... und so weiter.
    Funktioniert das?

    Gruß
    Markus

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen