- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: PIC16F876A Probleme mit PORTA

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2006
    Beiträge
    18
    Anzeige

    E-Bike
    den Fehler hab ich wie gesagt nicht gefunden und auchnicht beheben können, hab die Outputs halt nun auf den RC-Pins.

  2. #12
    Bei fast allen PIC's mit Komparatoren und AD-Wandlern, sollte man sich nicht darauf verlassen, dass diese nach einem Reset auch abgeschaltet sind.

    Probiere doch mal dieses und mach dann deiner Initialisierung weiter.

    MOVLW 6 ; alle digital
    BANKSEL ADCON1
    MOVWF ADCON1

    MOVLW 7 ; Komparator aus
    BANKSEL CMCON
    MOVWF CMCON

    Mfg

    Andy

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Hallo Andy62,
    der PIC16F876A hat meines Wissens nach kein CMCON-Register.
    Eine 6 im ADCON1-Register sollte am Port A alle Pins auf digital umschalten.
    Wenn im TRISA-Register noch alle Pins auf Ausgang initialisiert wurden und dann am PORTA-Register Werte ausgegeben werden, sollten die Pins entsprechende Pegel annehmen.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  4. #14
    Hallo kalledom,

    Der PIC16F87xA hat Komparatoren. Siehe auch Datenblatt Seite 136.
    Eigentlich sollte der Komparator nach einem Reset aus sein (Wert 7).
    Bei den den ersten PICs dieser Serie war dem aber nicht so. (bestätigt von Microchip)

    Also vorsichtshalber mit 7 initialisieren.
    Ich habe es festgestellt, weil beim PIC16F873A die AD Eingänge nicht funktionierten wollten.

    Mfg

    Andy

  5. #15
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo Andy62!

    Das stimmt. Ich initialisiere grundsätzlich immer alle nötige Register, da die ein paar Zeilen keinen grossen Unterschied macht.

    Ausserdem initialisiere ich immer die Ports (clrf PORTX) erst nach den allen Register (CMCON, ADCON, TRISX, u.s.w.) und bisher habe ich keine Probleme mit den Ports gehabt.

    MfG

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Was soll ich sagen, ich staune. Ich habe ein Orginal-Handbuch von Microchip: PIC16F87X Data Sheet, Device included: PIC16F873, 874, 876, 877. In diesem Buch ist kein CMCON drin, weder im Index, noch im Inhaltsverzeichnis, noch sonst wo.
    Aber ihr habt Recht, in der PDF-Datei habe ich CMCON gefunden, laut, klar und deutlich.
    Allerdings habe ich noch nie ein Problem an Port A mit Digital-Pins gehabt, .... weil ich die vielleicht immer nur analog genutzt habe ???

    @PICture
    PORTx initialisiere ich immer zuerst, vor TRISx, damit die Ausgänge sofort den richtigen Zustand haben. Das wirst Du auch in vielen Listings so finden.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  7. #17
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    @kalledom

    Es ist leider so, das die Hersteller ständig irgenwas an seinen Produkten ändern und man muss ständig die neuste Versionen von Datenblätter haben, um auf laufendem zu bleiben. Leider schaffen das nicht alle, und die haben dann Probleme. Ich kann selber schon nicht mitkommen.

    Zum Beispiel habe ich noch alte PIC´s 16F628 und für die kann ich beim Microchip nicht mehr gültige Datenblätter finden, weil die gibts jetzt nur für PIC16F628A. Zum Glück alte CD´s mit Datensicherung lassen sich nicht löschen und da sind sie noch zu finden. So langsam hat die Datensicherung anderen Sinn.

    Mit den Portsinitialisierung bin ich nicht überzeugt. Ich weiss nämlich sicher, dass bevor die Portpins nicht in TRISX als Ausgänge definiert sind, (POR macht fast alle als Eingänge), können sie nichts ausgeben. Und solche Initialisierung habe ich wahrscheinlich von Microchip Beispielen gelernt.

    Fast jeder (ich auch) hat sich dafür eine eigene Erklärung gefunden und der bleibt er treu, ... bis er deswegen Probleme kriegt.

    Schöne Grüsse !!!

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Zitat Zitat von PICture
    ... bevor die Portpins nicht in TRISX als Ausgänge definiert sind, (POR macht fast alle als Eingänge), können sie nichts ausgeben.
    Das ist richtig; nach POR (Power-On-Reset) sind alle Pins Eingänge, weil es Sinn macht. Da kann es keine 'Kurzen' mit der externen Hardware geben.
    Allerdings ist nach POR unbestimmt, was in den Ausgangs-Registern steht; wenn Du zuerst die Pin's auf Ausgang setzt, werden diese unbestimmten Informationen sofort ausgegeben. Das kann zu unerwünschten Nebeneffekten führen. Deshalb setze ich zuerst die Ausgangs-Register auf die erforderlichen Ausgangswerte und dann erst die TRISx-Register.

    Wenn Du einen Wert an PORTx übergibst, schreibst Du den Wert in ein Register, also in ein 8 Bit D-Latch. Die Ausgänge von diesem D-Latch werden erst dann ausgegeben, wenn das TRISx-Register für den jeweiligen Pin als Ausgang gesetzt wird. Das sind einfach nur logische Verknüpfungen über Gatter.
    Du kannst z.B. für einen externen Bus ein Port bidirektional nutzen. Dort kannst Du erst Daten ausgeben, umschalten auf Eingang, Daten einlesen und wieder auf Ausgang zurück schalten, ohne daß das Ausgangs-Register verändert wird.
    Du kannst aber auch, bevor Du wieder auf Ausgang zurück schaltest, die Ausgangs-Register erst neu setzen; dann ist gleich die aktuelle Information auf dem Bus und nicht erst noch ganz kurz die alte Information, was unnötige Bus-Veränderungen bedeutet.

    Im Datenblatt sind sehr schöne 'Schaltpläne' zu den unterschiedlichen I/O-Pins gezeichnet, an denen man die Zusammenhänge recht gut erkennen kann; ein Bild sagt mehr als tausend Worte.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  9. #19
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo kalledom!

    Vielen Dank für Deine ausführliche Erklärung !

    Diesmal hast Du mich überzeugt und ich werde das in den nächsten Programmen anwenden. Bisher hab ich zwar keine Probleme damit, aber ich muss ja nicht (dank Dir) auf sie warten, sondern schon früher es ändern.

    Schönste Grüsse!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test