- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: Interrupt Prioritäten (PIC16F876A)

  1. #1

    Interrupt Prioritäten (PIC16F876A)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi!

    Ich arbeite an einem Projekt, bei dem ein PIC16F876A über eine RS232-Schnittstelle mit einer Platine verbunden ist. Die Platine versendet Daten mit einem eigens entwickelten Protokoll über die Schnittstelle.

    Was ich wissen will ist, ob man beim PIC16F876A irgendwie einstellen kann, dass beispielsweise der serielle Interrupt den timer-interrupt unterbricht. Mit welchem Befehl (in C) legt man die Interrupt-Prioritäten fest?
    #priority funktioniert nicht, da dieser Befehl nur festlegt, welcher Interrupt ausgeführt wird, wenn zwei interrupts gleichzeitig ausgelöst werden.

  2. #2
    In der Hilfe meines Compilers steht übrigens:

    Syntax:
    #priority ints

    Elements:
    ints is a list of one or more interrupts separated by commas.

    Purpose:
    The priority directive may be used to set the interrupt priority. The highest priority items are first in the list. If an interrupt is active it is never interrupted. If two interrupts occur at around the same time then the higher one in this list will be serviced first.

    Examples:
    #priority rtcc,rb


    Lässt sich der Interrupt tatsächlich unter keinen Umständen unterbrechen?

  3. #3
    Eine weitere interessante Frage wäre, wieviele Zeichen der PIC, bzw. der nötige MAX232-Baustein puffert, wenn diese mit getc() nicht sofort verarbeitet werden.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    Der PIC puffert ein Byte, der MAX gar nix, weil das nur ein Pegelwandler ist.

  5. #5
    Gast
    heißt das, dass Bytes, die über die serielle schnittstelle hereinkommen sofort gepuffert werden müssen, um verarbeitet werden zu können?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Jepp, am besten nen Interrupt, der das Byte direkt wegspeichert.
    Mich würde auch interessieren, wie sich die Interrupts gegeneinander verhalten.

    MFG Moritz

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Hi, soweit ich weiß, haben die PIC16F... nur einen Interrupt-Level
    einer nach dem anderen. der, der läuft, wird nie unterbrochen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    Mit nur maximal 8 Adressen auf dem Hardwarestack und nur einem Interuptvektor geht es auch nicht anders. Lässt sich zwar machen aber wenn 3 Interupts hintereinander auftreten ist unter Umständen schon Sense.

    Wenn es unbedingt sein muss, die 18FXXX haben zwei Interuptvektoren.
    BlackBox

Berechtigungen

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

Labornetzteil AliExpress