- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Register-Port-Bits direkt ansteuern

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Neustrelitz
    Beiträge
    14
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hmm. Sicher sind das 2 Möglichkeiten. Doch das Grundproblem liegt ja außerhalb dieser logischen Verknüpfung. PORTC muß erst einmal gelesen werden. Der durch Ausgangstrom herunter gezogene Portpin wird nicht als "1", sondern als "0" gelesen und folglich als "0" zurück geschrieben, wenn er durch die Verknüpfung (BSF, IORWF...) nicht explizit gesetzt wiurde.
    Wenn ich jedoch für den gesamten Port ein Schatten anlege, funktioniert das nicht, weil ja auch noch analoge Eingänge und das PWM-Signal sind. Dort blind hineinzuschreiben, dürfte ebenso kontraproduktiv sein. Beim Analogeingang wäre es ja nicht so tragisch. Aber was sagt der PWM-Ausgang dazu? Leider habe ich erst nächste Woche wieder Zugang zum Oszi. Eigentlich wollte ich bis dahin fertig sein.
    Auf einen PIC18 wollte ich nun auch nicht mehr unbedingt umsteigen.

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2007
    Ort
    Bayern
    Alter
    35
    Beiträge
    116
    Hi,

    Geht es nicht wenn Du ein paar NOPs zwischen den beiden unmittelbar folgenden Bitmanipulationen setzt?

    Code:
    PROGRAM_LOOP:   
    NOP
    CALL    LED_RC0_ON
    NOP
    NOP
    NOP
    CALL    LED_RC1_ON
    NOP
    NOP
    NOP
    CALL    PAUSE_1_SEK
    CALL    LED_RC0_OFF
    NOP
    NOP
    NOP
    CALL    LED_RC1_OFF
    NOP
    NOP
    NOP
    CALL    PAUSE_1_SEK
    GOTO    PROGRAM_LOOP
    Ggf. musst Du selbst herausfinden wie viele NOPs nötig sind.

    mfg
    Benny

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Neustrelitz
    Beiträge
    14
    Nein, leider nicht. Selbst meine Sekundenschleife bringt keinen Effekt. Die Erklärung, die ich verlinkt habe, ist auch recht plausibel. Ich denke, dieses Problem wird Microchip veranlasst haben, im PIC18 das LAT einzusetzen.
    Ich habe die I/O jetzt so organisiert, daß PortC nur das PWM, ein statisch gesetztes Bit und 6 analoge Eingänge besitzt.
    Port B steuert die LEDs, wo ich alles über ein eigenes Register puffern kann.

    An Port B tritt übrigens genau der gleiche Effekt auf. Das setzen/löschen einzelner Bits in PORTx ist also NICHT möglich, ohne andere Bits löschen. Es kann gut möglich sein, daß dieser Effekt nur ab einer bestimmten Ausgangstromstärke (gegen Vss) auftritt. Bei einer Belastung mit einer LED und Vorwiderstand von ca. 500Ohm passiert es jedenfalls.

    Zu unterscheiden sind jedoch Ports, die auch als Analogeingang nutzbar sind. Ports OHNE Analogeingangsoption (RB6, RB7, RC4, RC5) werden NICHT durch die Bitmanipulationen beinflusst. Ansonsten gehen gesetzte Bits durch die Read-Modify-Write-Aktionen verloren.

    Port A habe ich nicht mehr getestet. Ich hoffe, es hilft mal jemandem, der ebenfalls über dieses Problem stolpert.

  4. #14
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Ich versuche es am Beispiel zu erklären.
    Wir haben in einem "Register" unbekannte binäre Zahl (XXXXXXXXb) in der wir bestimmte Bits löschen/setzen wollen. Angenommen wir wollen Bits 3 und 2 löschen und Bits 1 und 0 setzen. Das geschieht mit sich im Code befindlicher ASM Befehlsfolge ohne Bits 7 bis 4 zu beeinflüssen.

    MfG
    Code:
            movf     Register,0           ; XXXXXXXXb, Register ins W-Register laden
            andlw    0xF3                 ; 11110011b, danach im W-Register ist XXXX00XXb
            iorlw    3                    ; 00000011b, danach im W-Register ist XXXX0011b
            movwf    Register             ; XXXX0011b, W-Register ins Register schreiben

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Wenn es deine Last erlaubt (dh. sie muss nur von 5V getrennt werden, nicht auf Masse gezogen), könntest du auch die TRIS-Bits benutzen um den Port aktiv oder hochohmig zu ziehen. Das sollte ganz gut klappen, ich habs bei den CCP-Pins benutzt um das PWM Signal an und auszuschalten.
    ...

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests