-
        

Ergebnis 1 bis 6 von 6

Thema: Funktionsfähiges Programm?

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

    Funktionsfähiges Programm?

    Anzeige

    Hi @ all

    Habe grad ein kleines Programm entworfen aber leider nicht die Möglichkeit, es am µC zu testen. Jetzt wollte ich fragen ob einer mal eben drüber schauen kann ob das Programm so funktioniert. Also die Funktion ist folgende: Ich Habe an einem MEGA8 eine Port als Input und einen als Output beschaltet. An den Output kommt eine LED. Nun möchte ich dass wenn an dem Input-Port ein "high" Pegel liegt der Zähler die Zeit zählt wie lange der Pegel ansteht. Dieser Wert wird im EEPROM gespeichert. Ist der Pegel des Input-Port "low", soll der Output-Port geschaltet werden. Dabei wird der EEPROM ausgelesen und als "wait" immer zwischen Ein- u. Ausschalten gepackt. Wäre nett wenn ihr mir sagen könnt ob das so in etwa klappt wie ich mir das vorstelle=)

    Code:
    $regfile = "m8def.dat"
    $hwstack = xx
    $framesize = xx
    $swstack = xx
    $crystal = 16000000
    $baud = 9600

    Dim a As Integer

    Config Timer1 = Timer, Prescale = 64
    Timer1 = Disable
    On Timer1 Isr_von_Timer1
    Enable Interrupts
    Config PORTC.2 = Output
    Config PINC.3 = Input
    PORTC.3 = 1



    Do
    Readeeprom a
    If PINC.3 = 1 Then
    Timer1 = Enable
    Else
    Timer1 = Disable
    PORTC.2 = 1
    Wait a
    PORTC.2 = 0
    Wait a
    End If
    Loop

    End


    Isr_von_Timer1
    a = a + 1
    Writeeeprom a
    Return




    Mfg

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Hast du mit "Wait a" vor, a Sekunden zu warten? Wenn ja stimmts;
    Wäre noch zu prüfen, welchen Wert a hat, wenn das Programm zum ersten Mal startet... wenn der EEPROM "formatiert" ist, sollte das 255 sein. Wenns blöd läuft wärs aber 0 und "Wait 0" bringt nen Fehler.

    Hinweis noch: Für Dauerbetrieb evtl öfter mal die EEPROM-Zelle ändern; da diese nur so ein paar 10000x beschreibbar ist.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    hmmm .... writeeeprom a gefällt mir nicht besonders ...
    übersichtlicher wirds mit eram variablen,
    sprich dim a as eeprom byte or so.
    dann kanste einfach a= 5 z.B.
    Ausserdem hat das eeprom nur begrenzte schreibzyklen und
    braucht auch noch 5ms fürs beschreiben.

    eeprom ist im auslieferungszustand $ff
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    wie kann ich denn die Zeile ändern, die ich beschreiben möchte??
    Ansonsten schon mal vielen dank für das feedback und die tips=) ich werds mal ausprobieren

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    am einfachsten zum wechseln: vor der ERAM-Variable noch ne andere Byte-Variable deklarieren und die einfach nicht verwenden.
    Dann wird die erste auf den "alten" Platz gestellt, die eigentliche dann an den dahinter.
    Alternativ mit DIM ... as ... AT adresse.
    Welche Adressen du da brauchst wüsst ich aber grad nicht so auswendig.
    #ifndef MfG
    #define MfG

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    ah cool super vielen dank für eure antowrten und tipps=)

Berechtigungen

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