mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC USART - EEPROM Problem


Autor: Josef K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe in großes Problem:
Mein PIC 16f877A empfängt keine Zeichen mehr am USART, sobald ich einen
Schreibzugriff am EEPROM durchgeführt habe!

Die Interrupts sind alle enabled etc - das Problem tritt NUR auf, wenn
ins EEPROM geschrieben wurde. Die Interrupts im übrigen funktionieren
dann auch zB TIMER1 ...

Ich wäre sehr dankbar für einen Lösungsansatz.

Übrigens neu initialisieren des UART bringt nichts, auch nicht das neu
Initialisieren des TRISC.

Vielen Dank im Voraus Josef

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute mal, der Fehler ist in Zeile 13 Deines Programms.


Peter

Autor: Josef K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Zeile 13?

Wie darf ich das verstehen?

Josef

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Josef

Peter meinte damit, daß Du vielleicht mal den Code mitpostest.

Zu Deinem Problem. Vielleicht hast Du irgendwo ne falsche Page
eingestellt und schreibst beim EEPROM-Zugriff aufs falsche register
??!!

Gerhard

Autor: Josef K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also erstmal danke, dass Ihr an meinem Problem interessiert seid!

Hier ist meine EEPROM-Schreibroutine (im w-Register wird die zu
schreibende EEPROM-Adresse übernommen):

Write_EE        ;
  movwf  EE_Zelle  ;
   bcf    PIR2,EEIF  ;
            ;
  BCF    STATUS, RP0  ;
  movf  EE_Zelle,w  ;
  BSF    STATUS, RP1  ;
    MOVWF  EEADR    ;
  BCF    STATUS,RP1  ;
    MOVF  Zeichen,w  ;
  BSF    STATUS,RP1  ;
    MOVWF    EEDATA    ;
    BSF      STATUS, RP0  ;
    BCF      EECON1, EEPGD
    BSF      EECON1, WREN
    BCF      INTCON, GIE
; Die folgenden 5 Zeilen
    MOVLW  0x55
    MOVWF  EECON2
    MOVLW  0xAA
    MOVWF  EECON2
    BSF    EECON1, WR
; Die 5 Zeilen bleiben ge
  BCF    STATUS,RP0  ;
  BCF    STATUS,RP1
Write_EE1
  clrwdt
  btfss  PIR2,EEIF
  B     Write_EE1
  bsf    STATUS,RP0
  bsf    STATUS,RP1
  bcf    EECON1,WREN
  bcf    STATUS,RP0
  bcf    STATUS,RP1
  btfss  INTCON_,0
  Return
  BSF      INTCON, GIE
  BSF    STATUS,RP0
  BSF    PIE1,RCIE
  BCF    STATUS,RP0
  Return

Übrigens landen die Daten genau dort im EEPROM, wo sie hin sollen - ich
habe den PIC danach ausgelesen!


Gruß Josef

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Josef

ich hab Deinen Code jetzt nicht Zeile für zeile analysiert. Im
datenblatt steht eine Anleitung, wie man richtig auf das EEPROM
zugreift. Ich unterstelle jetzt mal, daß das so stimmt. Aber weiter
unten da versteh ich was nicht:

- was ist INTCON_  ??
- wieso schaltest Du den INT ein ? (BSF      INTCON, GIE  ) hast Du den
irgendwo ausgeschaltet ? Wird dieser Teil evtl übersprungen ?

- und wieso schaltest Du den Receive INT ein ? (BSF    PIE1,RCIE  )
wurde der auch abgeschaltet ?

Also hier, bei den letzten Befehlen, bzw bei deinem Hauptprogramm
scheint mir der Fehler zu liegen. Hast Du schon mal die Simulation
versucht ?


Gerhard

Autor: Josef K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe den Fehler gefunden - die Fehlerbehandlungsroutine in meinem
Interrupt für die Behandlung von overflow-errors wurde nicht
aufgerufen, da der call dafür falsch plaziert war!

Vielen Dank für die Unterstützung

Gruß aus Österreich Josef

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.