-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Frage zu Portzustand nach Initalisierung (Start/Reset)

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.08.2004
    Ort
    Niedersachsen
    Alter
    62
    Beiträge
    317

    Frage zu Portzustand nach Initalisierung (Start/Reset)

    Anzeige

    Hallo zusammen,
    wie verhalten sich Ausgänge eines PIC (Port A) unmittelbar nach dem Einschalten oder nach einem Reset? Ist, bzw. wie kann PIC-intern gewährleistet werden, dass die Ports den definierten Pegel haben?


    THX
    herrma

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    16.05.2004
    Beiträge
    304
    Ohne Definition sind die Ports als Eingang definiert. Wenn man sie jetzt auch im Programmcode als Ein oder Ausgang definiert, dann haben sie im Normalfall 0 Pegel, es sei denn, man aktiviert die internen Pullups sofern vorhanden

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo herrma!

    Ich initialisiere alle Ports und alle im Programm benutzte Variablen durch ein Initialisierungsunterprogramm, das als erste nach dem Start des Prozessors aufgerufen wird. Um definierte Zustände der Ports zu haben, muss man sie mit mit "movlw 0xXX" und "movwf TRISX" bestimmen und danach mit "clrf PORTX" löschen. Bei einigen PICs (14-bit) muss noch vor dem laden des "TRISX" Registers ensprechende Bank mit "bsf STATUS,RP0" gewählt werden

    So schauen meine alle Programme aus:
    Code:
    		ORG 0x0000
    		call	Init
    Main	............
    		............
    		............
    
    
    
    		............
    		............
    		............
    		goto 	Main
    
    Init	............
    		............
    		............
    
    
    
    		............
    		............
    		............
    		return
    MfG

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.08.2004
    Ort
    Niedersachsen
    Alter
    62
    Beiträge
    317
    Zitat Zitat von djdune
    Ohne Definition sind die Ports als Eingang definiert. Wenn man sie jetzt auch im Programmcode als Ein oder Ausgang definiert, dann haben sie im Normalfall 0 Pegel, es sei denn, man aktiviert die internen Pullups sofern vorhanden
    Hi,
    wie gesagt, es geht um Ausgänge (Port A) und die Pegel der einzelnen Pins unmittelbar nachdem der PIC mit Ub versorgt, oder resetet wird.
    Ich muss (möglichst PIC-intern) sicherstellen, dass unmittelbar nach dem Einschalten oder einem Reset alle Ausgänge den gewünschten Pegel haben.

    Beispiel:
    Mit einem Ausgang(RA.0) wird der Set-Eingang eines externen RS-FlipFlops gesetzt, mit dem über weitere Stufen z.B. eine Maschine(Säge) eingeschaltet wird. Aus Sicherheitsgründen darf es auf gar keinen Fall passieren, dass diese Maschine nach dem Einschalten der Steuerspannung startet. Natürlich kann man dies durch eine Zusatzbeschaltung verhindern, was aber nicht notwendig wäre, wenn dies picseitig garantiert werden könnte.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.08.2004
    Ort
    Niedersachsen
    Alter
    62
    Beiträge
    317
    Zitat Zitat von PICture
    Ich initialisiere alle Ports und alle im Programm benutzte Variablen durch ein Initialisierungsunterprogramm, das als erste nach dem Start des Prozessors aufgerufen wird. Um definierte Zustände der Ports zu haben, muss man sie mit mit "movlw 0xXX" und "movwf TRISX" bestimmen und danach mit "clrf PORTX" löschen. Bei einigen PICs (14-bit) muss noch vor dem laden des "TRISX" Registers ensprechende Bank mit "bsf STATUS,RP0" gewählt werden
    Ja OK, so (ähnlich) mache ich´s auch. Aber es bleibt die Frage, was vor der Initialisierung passiert.

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    vor der Initialisierung, nach dem anlegen der Betriebspannung auf den PIC, wenn Power On Timer in der Konfiguration enabled ist, wird 72 ms abgewartet, damit der Oscillator startet u.s.w. Erst nach dieser Zeit startet der Prozessor mit der Ausführung des Programms.

    MfG

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.08.2004
    Ort
    Niedersachsen
    Alter
    62
    Beiträge
    317
    Zitat Zitat von PICture
    vor der Initialisierung, nach dem anlegen der Betriebspannung auf den PIC, wenn Power On Timer in der Konfiguration enabled ist, wird 72 ms abgewartet, damit der Oscillator startet u.s.w. Erst nach dieser Zeit startet der Prozessor mit der Ausführung des Programms.

    MfG

    OK, hab´ ich PWRT "natürlich" enabled, aber wie verhalten sich die Ports in der Wartezeit (72ms)?!

    PS
    Ich hoffe das ich nicht nerve

  8. #8
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    das weiss ich leider nicht, weil es für mich unwichtig ist. Du kannst am besten direkt beim Microchip (Forum?) fragen, im Reference Manual suchen oder selber untersuchen. Die letzte Möglichkeit ist die schnellste und sicherste.

    MfG

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.08.2004
    Ort
    Niedersachsen
    Alter
    62
    Beiträge
    317
    Zitat Zitat von PICture
    .. selber untersuchen. Die letzte Möglichkeit ist die schnellste und sicherste.
    MfG
    So wie´s ausschaut, wird mir wohl nichts anderes übrig bleiben.
    Werde mir dazu mal eine automatische Testvorrichtung bauen um einen Dauertest machen zu können.

    1. Idee:
    Mittels PIC-Impulssummierer die Ausgänge des Prüflings überwachen und den Probanden ein paar Tage so richtig quälen.

    Trotzdem THXXL für die Mühe.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo herrma,
    hier die Reset-Werte für den PIC 16F87X laut Datenblatt:
    - - RA5 RA4 RA3 RA2 RA1 RA0
    PORTA Value on POR, BOR = --0x 0000
    PORTA Value on all other resets = --0u 0000
    TRISA Value on POR, BOR = --11 1111
    TRISA Value on all other resets = --11 1111

    Du mußt die Ausgangs-Pins mit PullUp-Widerstände auf +5 / High ziehen.
    Bei der Initialisierung zuerst die späteren Ausgangs-Pins von PORTA auf 1 setzen und dann erst das Richtungsregister TRISA setzen. Sonst gibt es ein kurzes Low.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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