- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Bei jedem Interrupt Unterprogramm auslößen?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63

    Bei jedem Interrupt Unterprogramm auslößen?

    Anzeige

    Powerstation Test
    Hi,

    ich hab hier im Forum schon mal was gefunden das daß beinhaltet was ich suche, jedoch finde ich das nicht mehr, vielleicht kann mir da ja jemand
    weiter helfen?

    Ich möchte das bei jedem Interrupt ein Unterprogramm ausgelößt wird.

    Wie kann ich das machen?

    Prüfen ob ein Interrupt ausgelößt wurde?
    Gruß Wasi...

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Das lässt sich so pauschal kaum beantworten.
    Gemeinerweise könnte man sagen, lies das Datasheet.

    Brauchst Du Hardware-Interrupt?

    Oder Timer/Counter-Interrupt?

    Welchen Cip verwendest Du?

    Überhaupt schon mal was ausprobiert?

    Wühl Dich ruhig erstmal durch die Bascom-Programme + Hilfe.

    Und dann probier was aus, wenn´s dann noch nicht richtig funzt, den Code reinstellen und das Problem schildern.

    Es ist viel einfacher und lehrreicher, an einer konkreten Aufgabe zu arbeiten, als hier irgendwelche gelehrten Fachvorträge über sämtliche Interrupt-Möglichkeiten zu posten.

    Viele Grüße

    Torsten

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Wie wärs mit einem Source, den wir analysieren können?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Hi,

    das dachte ich mir schon, das daß kommen wird.

    Aber nun zur sache.

    Ich betreibe eine Uhr und möchte nach jedem, oder entsprechenden
    Interrupt die Uhrzeit Aktualisiert ausgeben.

    Wie kann ich nun feststellen, das ein Interrupt ausgelößt wurde?

    Code:
    Enable Interrupts
    
    Config Date = Dmy , Separator = .
    Config Clock = Soft                                         'this is how simple it is
    
    Date$ = "03.01.06"
    
    Time$ = "18:34:00"
    
    Timsk.toie0 = 0
    Assr.as0 = 1
    Tccr0 = &B00010101
    Timsk.toie0 = 1
    
    Waitms 1000
    Ich nutze einen Externen Uhrenquarz, der auf dem STK501 ist und einen mega128.

    Die Ausgabe funktioniert bei Tastendruck und gibt mir die Uhrzeit aus, möchte aber das die Uhrzeit nach jeder sekunde ausgegeben wird, praktisch ohne immer die Taste zu drücken.
    Gruß Wasi...

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Ist das der ganze Source? Sieht irgendwie unvollständig aus. Aber zu deinem Vorhaben, da wirst du einen Timerinterrupt verwenden müssen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Nein, das ist nicht der komplette Source.

    Wie schon erwähnt, die Uhr an sich funktioniert ja und am Source sieht man
    das ich da die Clock Soft nehme.

    Du meinst ich benötige in etwa sowas?
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=15477

    Verstehe ich jetzt nicht ganz, ich hab jetzt eine Uhr und muß noch einen
    Timer starten um die Interrupts herraus zu bekommen, ist das richtig?
    Gruß Wasi...

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Was ist bloß so schlimm daran, den vollständigen Code zu posten?

    "Enable Interrupts" macht zwar die Interrupts scharf, aber Du hast ja gar keinen in Deinem Programm, zumindest nicht, soweit hier erkennbar.

    Irgendwo musst Du schließlich eine Interrupt-Service-Routine bekanntgeben, was soll sich sonst tun?

    z. B.:
    On Timer1 ISR_Timer1 'Subroutine bei Überlauf Timer1
    On Int0 ISR_Int0 'Subroutine bei Statuswechsel an Pin Int0

    Und natürlich muß der jeweilige Interrupt auch konfiguriert sein.
    Ob die SoftClock überhaupt einen Interrupt liefert, entzieht sich meiner Kenntnis.

    Mit dem angegebenen Link bist Du schon auf der richtigen Fährte.

    Konfiguriere Dir mal einen Timer (0 oder 1 sollten in jedem Fall gehen) so, dass er alle 10ms durchläuft. Dann zählst Du in der ISR des Timers gemütlich bis 100, und wenn das passiert ist, schiebst Du die Uhrzeit aufs Display und fängst von vorne an.

    Viele Grüße

    Torsten

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Was ist bloß so schlimm daran, den vollständigen Code zu posten?
    Nichts ist daran schlimm, jedoch ist da nichts drin was den Interrupt betrifft, daher nur das nötigste.
    Ob die SoftClock überhaupt einen Interrupt liefert, entzieht sich meiner Kenntnis.
    Der µC übernimmt die Arbeit der Uhr wenn SoftClock verwendet wird, daher
    auch der sehr Kurze Source den er benötigt.

    Mit dem angegebenen Link bist Du schon auf der richtigen Fährte.
    Konfiguriere Dir mal einen Timer (0 oder 1 sollten in jedem Fall gehen) so, dass er alle 10ms durchläuft. Dann zählst Du in der ISR des Timers gemütlich bis 100, und wenn das passiert ist, schiebst Du die Uhrzeit aufs Display und fängst von vorne an.
    Werde ich mal machen und melde mich dann wieder.

    Danke für deine Hilfe.
    Gruß Wasi...

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    ]
    ...
    Nichts ist daran schlimm, jedoch ist da nichts drin was den Interrupt betrifft, daher nur das nötigste.
    ...
    Woher willst Du das wissen, wenn Du Dich mit den Interrupts noch nicht auskennst?

    Nein, im Ernst, der vollständige Code ist immer besser, den kann man sich dann auch mal nach Bascom reinholen, kompilieren, übertragen, usw.

    Aber sieh einer an, was man so alles in der Bascom-Hilfe findet - man muß (wer hätt´s gedacht!) nur bei "Suchen" mal "Softclock" eingeben...

    Syntax
    CONFIG CLOCK = soft | USER [, GOSUB = SECTIC]


    Remarks

    Soft Use SOFT for using the software based clock routines. Use USER to write/use your own code in combination with an I2C clock chip for example.
    Sectic This option allows to jump to a user routine with the label sectic.Since the interrupt occurs every second you may handle various tasks in the sectic label. It is important that you use the name SECTIC and that you return with a RETURN statement from this label. The usage of the optional SECTIC routine will use 30 bytes of the hardware stack. This option only works with the SOFT clock mode. It does not work in USER mode.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    So wie ich das verstehe ist, wenn ich die Option Sectic nutze,
    jede sekunde in den angegbenen Label springt und dies ausführt was
    da an Code ist?!?

    Wenn das so ist, dann wäre das daß richtige!

    Die Syntax wird hier so angegeben:

    Config Clock = soft | User [, GOSUB = SECTIC]

    Wo gebe ich jetzt bitte den Label an, in den er springen soll?

    Das hab ich ja schon drin:
    Config Clock = soft

    Dieses "SECTIC" muß ja angegeben werden, somit bliebe ja nur noch dies:
    Config Clock = soft, meinLabel = SECTIC

    Kannst du da weiterhelfen?
    Gruß Wasi...

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