- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: PIC16F876 - Störung des Programms durch Rechteckimpulse ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2006
    Beiträge
    11

    PIC16F876 - Störung des Programms durch Rechteckimpulse ?

    Anzeige

    E-Bike
    Hi, ich hab den PIC in Assembler programmiert und folgendes Problem:

    Wenn am PortC-Pin 1 oder 2 (=CCP1/CCP2)
    ein Rechteck-Signal mit etwa 10-100kHz angelegt wird,
    stürzt das Programm ab.

    Zum Test hab ich das Prog. auf folgende Schleife sinngemäß reduziert:

    1. Initialisierung mit gesperrten Interrupts
    2. Warteschleife mit: decfsz zähler,f (=255 Durchläufe)
    3. bsf PortC,0
    4. Warteschleife wie oben
    5. bcf PortC,0
    6. goto 0000 (=Anfang)

    Ohne die Impulse an CCP1/CCP2 kommt das saubere Rechtecksignal raus.
    Mit den Impulsen kommt es zu Störungen und verzögerten Flanken,
    sogar das Programm scheint abzustürzen...

    Ich bitte um Hilfe, da mein Studienabschluß davon abhängt..

    bitte, bitte bitte...

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

    Hast Du irgendwelche CCP-Interrupts nicht abgestellt?
    Sind C1 und C2 als Outputs definiert? (da hat dann der Pin-Treiber ein Problem, und das kann zu allem Moeglichen fuehren)

    Kannst Du das Problem auf ein kleines Testprogramm reduzieren und das dann hier posten?

    Gruess
    Fritzli

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2006
    Beiträge
    11

    Denke schon..

    ..dass ich alle Config-Register richtig gesetzt habe.

    Ich bin alle extra nochmal durchgegangen und hab alles auf
    Null bzw. "aus" gesetzt.
    CCP1/2 sind als Eingang definiert, da ich auch die CCP-Funktion
    im richtigen Programm benötige. Aber solange nicht einmal das kleinste Programm
    richtig sauber läuft, komm ich nicht weiter..

    Quelltext mach ich heut noch rein...

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2006
    Beiträge
    11
    #include P16F876A.INC
    zaehler equ 0x70
    code 0x00
    null
    NOP
    clrf pclath ;programmspeicher seite0
    clrf STATUS ;wähle bank0
    goto weiter
    reset
    org 0x04
    bcf portc,7 ;Reset-modus an
    goto reset
    weiter
    movlw 0x00
    movwf intcon ;interrrupts aus
    movlw 0x00
    movwf pir1 ;mögliche interrupts setzen
    movwf PIR2 ;ebenfalls
    movlw 0x01
    movwf t1con ;timer1
    movlw 0x00
    movwf t2con ;Timer2
    movlw 0x04
    movwf ccp1con ;CCP1
    movwf ccp2con ;ccp2
    movlw 0x00
    movwf sspcon ;serial port
    movlw 0x80
    movwf adcon0 ;ad-wandler

    bsf status,rp0 ;bank 1
    movlw 0x3f
    movwf option_reg ;timer0 und portb
    movlw 0x00
    movwf pie1 ;interrupts setzen
    movlw 0x00
    movwf pie2 ;interrupts setzen
    movlw 0x03
    movwf pcon ;reset-merker
    movlw 0x00
    movwf cvrcon ;comparator aus
    movlw 0x3f
    movwf trisa ;porta=analoge eingänge
    movlw 0xff
    movwf trisb ;portb=TTL-eingänge
    movlw 0x06
    movwf trisc ;portc
    movlw 0xf9
    movwf pr2 ;Timer2 Periode
    movlw 0x00
    movwf sspstat ;serial port
    movlw 0x00
    movwf sspcon2
    movlw 0x00
    movwf txsta
    movlw 0x00
    movwf rcsta
    movlw 0xc0
    movwf adcon1 ;ad-wandler
    bcf status,rp0 ;bank0
    ;---------------------------------------------------------
    movlw 0x00
    movwf intcon ;interrrupts aus


    bsf portc,0 ;1 ausgeben

    eins
    decfsz zaehler,f
    goto eins

    bcf portc,0 ;0 ausgeben

    zwei
    decfsz zaehler,f
    goto zwei

    goto null

    end

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2006
    Beiträge
    11
    Sorry, dass es nicht so schön übersichtlich geworden ist..

    Als Interruptroutine hab ich hier noch eine
    "Falle" eingebaut, so dass ich also sehen würde, wenn ein IRQ
    "durchkommt".

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

    Was passiert, wenn Du die ganzen Initialiserungen weglässt (bis auf die CCP inits und ein CLRF INTCON)? Der grosse Teil ist irrelevant oder sowieso default.

    Was ist denn das für ein Signal, bzw Amplitude > Vcc?
    Wie schaut die Hardware so aus?

    Gruess
    Fritzli

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2006
    Beiträge
    11
    Das störende Signal ist in der Amplitude ein normales TTL-Signal
    mit 0 Volt bzw. 5 Volt.

    Inzwischen bin ich etwas schlauer und habe herausgefunden, dass es wohl
    von der Anstiegsgeschwindigkeit der Flanken abhängt:

    Je steiler das Signal ansteigt, um so weniger Störungen gibt es.
    Im Gegensatz dazu also, je schräger bzw. verschliffener die Flanken,
    um so mehr Störungen.

    Außerdem habe ich per Speicheroszilloskop das per Software erzeugte
    Rechtecksignal beobachtet. Mitten im Verlauf bleiben dann ca. 2 Low- bzw. High-
    Impulse aus. Das Signal bleibt dann also zeitweilig auf 0 oder 1-Pegel.

    Hat jemand von euch mal an Microchip gemailt, antworten die oder wird man da mit
    Standard-Antworten oder gar Schweigen abgespeist ?

    Bezüglich der Hardware: MCLR-Pin ist über 1kOhm auf 5 Volt gezogen.
    Festspannungsregler mit 2 Elkos sitzt neben dem PIC.
    Der Oszillator mit 20MHz hat 2 Scheibenkondensatoren, ich glaube 22pF nach Masse.
    Aufgebaut auf Lochrasterplatine, der Rest der Schaltung hat m.E. keinen Einfluss.
    Betriebsspannung und Taktfrequenz erscheinen im Oszilloskop sauber und flackerfrei.

    Könnte es sein, dass der PIC intern etwas "wackelig" bei 20MHz arbeitet ?
    Gelegentlich ist es passiert, dass die Stromaufnahme der Schaltung sich fast verdoppelte
    und dann in dem Zustand verharrte ( welcher Zustand das auch immer war..).

    Ich könnte mir vorstellen, dass es zu Eigenschwingungen oder so kommt, verursacht durch die
    langsam ansteigenden Flanken an CCP1/CCP2.....

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Gelegentlich ist es passiert, dass die Stromaufnahme der Schaltung sich fast verdoppelte
    und dann in dem Zustand verharrte ( welcher Zustand das auch immer war..).
    Das tönt aber eher nach Hardware-Problem (Latch-Up?)

    20MHz: Solange der Chip auf das spezifiziert ist, sollte das eigentlich problemlos laufen.

    Ich hab bisher gute Erfahrungen mit dem Microchip-Support gemacht, aber ich würd das Problem eher mal im dortigen Forum posten: http://forum.microchip.com/

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    361
    Hallo,

    mal unabhängig das Dein Programmausschnitt wirklich etwas wirr aussieht und Deine sogenannte "IRQ-Falle" recht "aufhängend" wirkt wundert mich aber doch das Du ständig neu Initialisierst.
    Also laut Deinem obigen Programm startest Du jedesmal mit der gesamten Initalisierung aufs neue, ist das wirklich so gewollt oder nur ein Schreibfehler? Kann mir vorstellen, das dies dem PIC nicht so bekommt während Du mit Deinem "Rechteck-Signal mit etwa 10-100kHz" am Eingang hängst.

    Ein Pic, der wie Du schreibst ("intern etwas "wackelig"ist") ist mir noch nicht unter gekommen.


    Gruß André

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    01.03.2006
    Beiträge
    11
    Sorry, aber das progrämmchen ist etwas hektisch zusammengestrickt.

    Die Falle für IRQ ist gewollt, da ich vermutet hatte, dass das Maskieren der Interrupts
    nicht richtig lief, war aber nicht so und nun stehts halt noch mit drin.

    Das ständige Initialisieren ist auch noch der "Rest" vom Probieren,das andere Programm mit nur
    einmaligem Initialisieren lief genauso, ohne unterschied zu diesem hier..

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