- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: PORTD,4 wird nicht auf HIGH gesetzt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170

    PORTD,4 wird nicht auf HIGH gesetzt

    hi,

    hab ein kleines problem in meinem programm und weiss nicht warum das so ist.
    also ich setz den PORTD,4 PIN auf HIGH und fang dann mit der main schleife an, aber der RD4 wird nicht auf high gesetz.
    woran kann dass liegen.

    Code:
    list p=18f452
    #include <P18f452.INC>
    
    __config _CONFIG2L, _PWRT_ON_2L
    __config _CONFIG2H, _WDT_OFF_2H
    __config _CONFIG1H, _HS_OSC_1H
    __config _CONFIG4L, _LVP_OFF_4L
    
    
    movlw B'00011100'
    movwf TRISB
    movlw B'10001000'
    movwf TRISD
    clrf PORTB
    clrf LATB
    clrf PORTD
    clrf LATD
    
    
    bsf PORTD,4
    
    
    main
    btfsc PORTD,7
    goto setone       ------ wenn ich diesen sprungbefehl weglasse dann ist RD4 auf high ,ansonsten ist er auf                     low
    bsf PORTD,6
    goto main
    setone
    bcf PORTD,6
    goto main
    end

    falls der takt von interesse ist, ich benutze einen 10 mhz quarzoszillator.

    wäre sehr dankbar für hilfreiche antworten

    mfg
    pitt

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    Ist der PORTD,4 ganz kurz mal auf High, wenn du den Sprungbefehl drinnen hast?

    Wenn du anstelle vom bedingten Sprung einfach mal versuchst immer zu springen, ist der Pin dann auf High oder nicht?

    Die Antworten würden helfen...
    so direkt fällt mir kein Fehler auf...

    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    hi,

    also ich hab jetzt die bedingung rausgemacht aber es geht immer noch nicht.

    Code:
    list p=18f452
    #include <P18f452.INC>
    
    __config _CONFIG2L, _PWRT_ON_2L
    __config _CONFIG2H, _WDT_OFF_2H
    __config _CONFIG1H, _HS_OSC_1H
    __config _CONFIG4L, _LVP_OFF_4L
    
    
    movlw B'00011100'
    movwf TRISB
    movlw B'10001000'
    movwf TRISD
    clrf PORTB
    clrf LATB
    clrf PORTD
    clrf LATD
    
    
    bsf PORTD,4
    
    
    main
    goto setone
    bcf PORTD,6
    goto main
    setone
    bsf PORTD,6
    goto main
    end

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    Ich weiss, es klingt komisch, aber dreh mal die Reihenfolge bei der Initialisierung um: erst clrf, dann tris laden.

    Zitat Zitat von Datenblatt
    EXAMPLE 9-4: INITIALIZING PORTD

    CLRF PORTD ; Initialize PORTD by clearing output data latches
    CLRF LATD ; Alternate method to clear output data latches
    MOVLW 0xCF ; Value used to initialize data direction
    MOVWF TRISD ; Set RD<3:0> as inputs, RD<5:4> as outputs, RD<7:6> as inputs
    Und mach mal nach dem ersten setzen von dem PinD4 ne lange Warteschleife rein (also solang, dass du siehst, ob der Pin mal high wird oder nicht)

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    also hab des jetzt mit der initialisierung gemacht nix gebracht.
    und ich hab jetzt ne ca. 10 sek schleife zwischen bsf PORTD,4 und main-schleife gemacht und dann wird RD4 auf high gesetzt und bleibt auch auf high. also dann funktioniert es.

    nur das muss auch ohne die schleife gehen weil in meinem vollständigen programm springt er auch gleich nach bsf PORTD,4 in die main schleife nur dass da kein sprung befehl ist und da geht es auch.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    eine idee hätte ich heute abend noch: versuchs doch mal mit dem simulator und/oder (wenn vorhanden) mit dem debugger (ICD2).

    Das ganze ist schon massiv komisch - irgendwas passt da nicht...

    noch was zum ausprobieren: einfach mal ein nop nach dem bsf PORTD,4

    Alles weitere dann morgen

    MfG
    Stefan

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    also mit dem debugger bzw simulator komm ich irgendwie nicht zu recht ich hab mich auch noch nicht richtig damit beschäftigt. bei mir funzt des net so richtig.

    des mit dem nop geht auch net. hab ich schon mit fünf nop's probiert.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    10.12.2005
    Beiträge
    52
    *grummel*

    Das Du das schon mit den NOP's probiert hast, hatte ich überlesen.
    Aber vll hilft Dir SPRUT da doch weiter, obwohl, glaube beim I/O-Fehler, die Lösung NOP heißt.
    Erklärt wird das so, daß der Pin zwar auf 1 gesetzt wird, aber beim Auslesen noch kein High anliegt, somit Low interpretiert wird.
    Setzen am Ende eines Taktzyklus, Auslesen am Anfang eines Taktzyklus.
    Glaube 5µs werden dort genannt.

    MfG
    Posti

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    hi,

    also ich bin jetzt draufgekommen, dass es nicht am prog oder µc liegt, sondern an einem gerät was an dem ganzen angeschloßen war und der RD,4 war die Stromzufuhr für das gerät. und irgendwas muss da immer passieren dass es nicht auf high geht, aber des hat sich jetzt eigentlich erledigt, weil ich halt jetzt weiss dass das gerät den fehler verursacht hat.

    also wie gesagt wenn das gerät nicht angeschlossen ist dann geht es und wenn es angeschlossen ist dann geht es nicht, außer ich streif an dem RD,4 PIN kurz mit dem draht vorbei, an dem 5V Spannung sind, dann geht der pin auch auf HIGH und bleibt.

    trotzdem danke.

    mfg
    pitt

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    10.12.2005
    Beiträge
    52
    Hi

    Kann es vll sein, daß das 'Gerät' mehr als die möglichen 25mA saugt, und somit der Pin nicht auf High gesetzt werden kann?
    KA, denke mir, daß der PIC dann vll aus 'Selbstschutz' das High sein lässt, oder, wie hier und da schon gelesen, powert, was das Zeughergibt und sich dabei (irgendwann) erwärmt.

    MfG
    Posti

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests