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

Thema: PIC 16F628A - PortA zeigt seltsames Verhalten

  1. #1

    PIC 16F628A - PortA zeigt seltsames Verhalten

    Anzeige

    E-Bike
    Hallo,
    ich bin noch ziemlicher Anfänger in der PIC Controller Programmierung.
    Mein Projekt ist ein Lauflicht welches 12 LED's ansteuern soll, mit einem 16F628A.
    Dabei klappt das Grundsätzlich schon sehr gut, nur der Port A ist etwas komisch.

    Plan ist das Ansteuren der LED's sequentiell, ich meine also die LED's nacheinander einschalten und dann von vorn beginnend nacheinander wieder ausschalten.
    Dabei verwende ich folgenden Code für PortA

    Code:
    CLRF PORTA
        BANKSEL TRISA	; wählt PortA
        MOVLW b'10110100'	;
        MOVWF TRISA		; PORTA beschreiben
    
    BANKSEL PORTA	; wechselt PortA
        ; LED's nacheinander einschalten mit RA0 beginnen
        BSF PORTA,RA0	; BSF S steht für Set setzt PortA0 auf 1  -> sonst BCF C steht für Clear würde den PortA auf 0 setzen
        call _delay_2s	; ruft Wait Funktion auf, die Funktion ist unten definiert und wartet Dalay 1
        BSF PORTA,RA1	; setzt LED 2	
        call _delay_2s
        BSF PORTA,RA3	; setzt LED 3	
        call _delay_2s
        BSF PORTA,RA6	; setzt LED 4	
        call _delay_2s
    Dabei werden die LED's aber nicht nacheinander ein sondern immer eine an dann die nächste an, dabei geht aber die vorherige aus?
    Im Debugger zeigt der Code genau das gewünschte Verhalten, in der Realität aber leider nicht, hat jemand eine Idee?
    Der Port B wird auf gleiche Weise angesteuert und klappt wunderbar.
    Gruß Reiner

  2. #2
    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!

    Du musst jedes LED nach Einschalten mit BSF PORTA,RAX auch mit BCF PORTA,RAX Ausschalten. Siehe dazu: http://rn-wissen.de/wiki/index.php?t...erste_Programm.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    542
    Blog-Einträge
    17
    Zitat Zitat von rliebold Beitrag anzeigen
    nur der Port A ist etwas komisch.
    Was ist komisch?
    Zitat Zitat von rliebold Beitrag anzeigen
    Im Debugger zeigt der Code genau das gewünschte Verhalten, in der Realität aber leider nicht, hat jemand eine Idee?
    Der Port B wird auf gleiche Weise angesteuert und klappt wunderbar.
    Was macht PORTA denn konkret?

    Bei "komischem" Verhalten schaue ich immer im Datenblatt des PIC nach, ob die Portpins irgendwelchen Peripheriemodulen zugeordent sein könnten. Im Fall von PortA könnte es vielleicht der Comparator sein. Es gibt im PIC16F628A Datenblatt ein Stück Beispielcode zur Initialisierung von PORTA mit Abschaltung der Comparatorfunktion der PORTA Pins.
    Hier im RN gibt es einen alten Thread über diese und ähnliche PIC Fallen.

  4. #4
    Hallo PICTure,
    den gleichen Zweig für das ausschalten der LED's gibt es natürlich auch noch einmal als BCF Routinen.
    Hier geht es aber darum das die LED's zuerst mal alle nacheinander eingeschaltet werden sollen. Im Code sollte das deutlich werden.
    Im Debugger wird es auch genauso dargestellt, wenn der Code aber im Controller läuft, dann geht RA0 an, nächster Schritt RA1 geht an, aber im gleichen Moment geht RA0 aus, ohne das ein BCF für RA0 aufgerfuen wird, dann so weiter?
    Ich hoffe so wird die Erklärung deutlicher.
    Danke und Gruß Reiner

    - - - Aktualisiert - - -

    Hallo witkatz,
    in der Antwort an PICture habe ich noch einmal erklärt was da seltsam ist.
    Ansonsten ist mir bewußt das die Port's mehrfach Funktionen haben können. Die Comperatoren sind zuvor abgeschaltet. Ich habe deshalb auch nicht 0,1,2,3 genommen sondern 0,1,3,6. Da war ich mir sicherer das nicht andere Funktionen auf dem Ausgang stören.
    Danke Gruß Reiner

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    542
    Blog-Einträge
    17
    Zitat Zitat von rliebold Beitrag anzeigen
    dann geht RA0 an, nächster Schritt RA1 geht an, aber im gleichen Moment geht RA0 aus, ohne das ein BCF für RA0 aufgerfuen wird, dann so weiter?
    Zitat Zitat von rliebold Beitrag anzeigen
    Die Comperatoren sind zuvor abgeschaltet.
    Poste bitte den betreffenden Ausschnitt deiner Initialisierungssequenz, oder prüfe, ob CMCON wirklich auf 7 gesetzt wird.

    Zitat Zitat von rliebold Beitrag anzeigen
    Ich habe deshalb auch nicht 0,1,2,3 genommen sondern 0,1,3,6. Da war ich mir sicherer das nicht andere Funktionen auf dem Ausgang stören.
    Beim Setzen des Portpins werden die aktuellen Zustände aller(!) Pins des Ports gelesen und erneut gesetzt (read-modify-write). Es scheint, dass beim Setzen von RA1, RA0 als 0 zurückgelesen wird. Entweder sind die Pins RA0, RA1, RA3 immer noch über CMCON als Analogeingang konfiguriert oder so überlastet, dass die Spannung am Ausgangspin in die Knie geht bzw. nicht schnell genug ansteigt und als 0 detektiert wird.
    Geändert von witkatz (23.01.2017 um 12:47 Uhr)

  6. #6
    Hallo witkatz,
    Danke für deine Antwort.
    Ich denke das mit CMCON 7 wird es aber sein.
    Da schau ich heute Abend mal rein.
    Aber weshalb eigentlich 7 ich dachte nur die Pins 2 und 3 also RA3 und RA4 können auch als Comperator geschaltet werden?
    Die habe ich deshalb nicht genutzt.
    Das die Spannung zusammenbricht schließe ich eigentlich aus, weil alle anderen 8 Ausgänge von PortB an bleiben.
    Gruß Reiner

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    542
    Blog-Einträge
    17
    Zitat Zitat von rliebold Beitrag anzeigen
    Aber weshalb eigentlich 7 ich dachte nur die Pins 2 und 3 also RA3 und RA4 können auch als Comperator geschaltet werden?
    Teilweise richtig, RA3 und RA4 können über CMCON als Comparatorausgang konfiguriert werden.
    Bei RA0-RA3 ist aber der Analog-Input-Mode, den man für digitale Funktion ebenfalls per CMCON abschalten muss. Wenn die Pins als Comparatoreingänge konfiguriert sind, werden sie bei BSF digital als 0 zurückgelesen. Lese dir vielleicht etwas zu read-modify-write ein, zum Verständnis, wie BCF und BSF funktionieren. In dem Datenblatt findest du auch eine kurze Er
    klärung über die Funktion der Portpins in diesem Zusammenhang.
    -> s. Kap. 5.3 I/O Programming Considerations
    Geändert von witkatz (23.01.2017 um 14:55 Uhr)

  8. #8

    Hallo witkatz,
    vielen Dank für deine Hinweise.
    Ich hatte zwar schon alles korrekt initialisiert
    Code:
        CLRF CCP1CON	;Turn CCP module off CCP1 auschalten, sonst leuchtet RB3 nicht
        ; 16F628 alle Comparatoreingänge auf Digital umschalten
        ; alles in der Bank 0 auf Digital umschalten
        BSF CMCON, CM0
        BSF CMCON, CM1
        BSF CMCON, CM2
    aber an der falschen Stelle, nämlich vor der Main Routine
    Ist eben immer gut wenn man mal drüber spricht (schreibt).
    Danke und Gruß Reiner

Ähnliche Themen

  1. Seltsames Verhalten des AVR NET IO
    Von iBot im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 19.04.2013, 15:04
  2. seltsames Verhalten am I2C
    Von liquidus im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 06.12.2009, 18:42
  3. Seltsames verhalten
    Von Atmelbeginne im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 6
    Letzter Beitrag: 10.12.2008, 19:37
  4. Seltsames Verhalten vom ADC an RN-Control
    Von MasterFX im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 0
    Letzter Beitrag: 19.04.2008, 18:09
  5. RN Motor seltsames Verhalten
    Von User969 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 30.10.2005, 11:38

Berechtigungen

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

12V Akku bauen