mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC16F877 - Timer0-programm startet nicht


Autor: BuschenSen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab einen 16F877 mit 20MHz und wollte mal den Timer0 ausprobieren.
Ich benutze MPLAB und habe das Prog mit MPSIM simuliert dort hat auch
alles gefunzt. Als der Overflow-interrupt gesetzt wurde hat er die
Warteschleife verlassen. Am Anfang ist ein Test der alle LED's(PORTC)
auf high setzt bis die beiden Schalter(PORTB.1 und PORTB.2) gesetzt
wurden.

Interressant ist, dassdas Programm auf dem PIC garnicht funzt. Noch
nicht einmal die LED's werden aktiviert. Der Chip ist aba noch ok,
denn andere Programme ohne den TMR0 laufen. Woran kann das liegen???

danke für die Hilfe

BuschenSen

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo BuschenSen,

erstmal zum Fehler: das Timer0 Interrupt Flag wird nicht gelöscht und
deshalb kehrt wait für alle Aufrufe sofort zurück.
Zum anderen ist für INTCON keine Bankumschaltung erforderlich.

Hier die angepasste wait Routine

wait          ; warte 1ms
  MOVF INTCON, 0
  MOVWF buffer
  BTFSS buffer, 2
  goto wait
        bcf INTCON, 2
  return


Hoffe das funzt.

Gruß   Dieter

Autor: BuschenSen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs jetzt verbessert und es sieht gez so aus(siehe Anhang). Es geht
immer noch net! gibt's irgendwo nen Tutorial über den Timer0 mit
beispiel code?

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

PIC's scheinen nicht sehr beliebt oder verbreitet zu sein, wenn man
das aus den (nicht vorhandenen) Reaktionen hier schließen will.
Wenn ich nicht beruflich mit den Dingern zu tun hätte wär ich sicher
schon bei ATMega oder LPC gelandet.
Wir verlagern das Ganze am besten auf direkten mailkontakt.
Verklausulierte mailadr. ist vornamenachname (direkt
zusammengeschrieben) AT gmx DOT net.  nachname = Werner, vorname siehe
unten. Habe bisher nur diese mail und will sie mir nicht vollmüllen
lassen.

Gruß    Dieter

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kanns echt übertreiben


---------
Verklausulierte mailadr. ist vornamenachname (direkt
zusammengeschrieben) AT gmx DOT net.  nachname = Werner, vorname siehe
unten. Habe bisher nur diese mail und will sie mir nicht vollmüllen
lassen.

Gruß    Dieter

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du den PIC konfiguriert? HS, WDT?

Autor: BuschenSen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich das Ding bei 20MHz betreibe läuft es mit HS! Der Wachhund ist
aus.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der PIC bleribt im UP wait hängen. Das Return wir nie erreicht.

Autor: BuschenSen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo liegt der Fehler muss ich die INTCON, GIE und T0IE setzten? Und dann
mit dem Interrupt Vector arbeiten oder wo liegt der Fehler?

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So müsste es funktionieren:

wait            ; warte 1ms
  bcf INTCON, 2              ; Interruptflag zurücksetzen
  BTFSS INTCON, 2
  ; bsf PORTB, 7             ; hat hier nichts zu suchen
  goto wait
  return

Mit dem Interruptvektor musst Du nicht unbedingt arbeiten. .

Autor: BuschenSen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
werd ich mal ausprobieren!

Autor: BuschenSen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also der Code sieht jetzt so aus(Anhang)! Das mit dem bsf PORTC, 7 is
nur ne Kontrollled weil ich wissen wollte ob der die wait routine
überhaupt aufruft. Mir sind zwei Dinge aufgefallen:

Wenn die Initialisierung von OPTION_REG in Bank1 stattfindet, wie im
Datenblatt angegeben, dann hängt sich das Prog an dieser Stelle auf.
Wenn sie in Bank0 stattfindet, dann hängt sich das Prog erst in der
wait Routine auf.

Es scheint also an OPTION_REG zu liegen ich kann mir aba den Fehler
trotzdem net erklären.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da funktioniert irgend etwas anderes nicht. Ich wüsste nicht, warum dein
Programm nicht laufen sollte. WDT definitiv ausgeschaltet?

OPON_REG in Bank1 ist schon OK.

Autor: BuschenSen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WDT ist aus. Ich raff es ja auch net, weil in den meisten Tutorials ist
das ähnlich realisiert. Aber alle Programme die den Timer net benutzen
funzen. Also PIC, Brenner3 und ICPROG sind ok.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es mal durch den Simulator laufen lassen. Funktioniert.

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da alles ordentlich aussieht und mich das Problem auch interessiert hab
ich mal schweres Geschütz aufgefahren und das Prg. mit dem ICE2000
getestet. Dabei passieren sehr merkwürdige Sachen.
Obwohl ich keinen Breakpoint gesetzt habe, bleibt der ICE beim ersten
Durchlauf in der wait Routine stehen. Wenn ich wieder starte, wird die
Bitabfrage in wait genau 2 mal ausgeführt und schon ist wieder Sense.
Das lässt sich beliebig oft wiederholen.
Daraufhin habe ich mal den org 0x04 in 0x06 geändert und plötzlich lief
alles wie am Schnürchen. Nun ist zwar 0x04 der ISR Vektor, aber da
definitiv alle Int's ausgeschaltet sind sollte das keinen Einfluss
haben.

Gruß    Dieter

Autor: Sigmund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

Ich bräuchte dringend euere Unterstützung, bitte last mich nicht im
Stich!!! Also mein Sensor: ADXL213 wird mit dem µP am 3.2 Pin angehängt
bzw der Taktimpuls ich habe einen 11MHz Quarz und meine µP handelt es
sich um einen AT89LP2052 also atmel 8051(standard)Architektur. Ich muss
LEDs ansteuern. Aber im Grunde brächte ich den C-code für den Timer0,1
Modus.Jemand eine Ahnung??

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SChau dir mal die Seite von SPrut genau an... da sind auch beispiele mit
dem Timer drin.

http://www.sprut.de/electronic/pic/programm/index.htm

Autor: conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikroelektronika.co.yu/english/product/...

Darin sind die Timer auch gut beschrieben.

Autor: Sigmund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke(=!

Autor: Sigmund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey Leute es geht um das selbe Problem. Sorry! Ich brauch es eingetlich
nicht nicht für "Pic" sondern einfach nur auf C ....für den Timer1,0;
SPI...wobei ich da wirklich keine Möglichkeiten gefunden habe..wie´s
funktioniert!! SPI ist ein Seriel Programming interface auch ansprechen
muss.

Also der Sensor ADXL213 wird mi´m µP von Atmel 89TC2051P connected,
dann wird der µp mi´m MAX7301 connected. Es ist sehr konfus alles...am
besten ich schick eich die Links:

Sensor ADXL213:
http://www.analog.com/en/prod/0%2C2877%2CADXL213%2C00.html

µP  AT89LP2052/4052 Preliminary:
http://www.atmel.com/dyn/products/product_card.asp...


Maxim 7300:(für die 20 LED´s):
http://pdfserv.maxim-ic.com/en/ds/MAX7301.pdf   oder
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3371

Die ganze Schaltung hat den Sinn: 20 LED´s sollen je nach Bremsstärke
alle aufleuchten. Das bedeutet ist die Abbremsung max. dann lechten
alle Led(Leuchdioden) auf, und so soll es funktionieren. Ne Ahnung wie
der Code aussehen könnt? Wenn ihr fragen habt nur zu....ich zähl auf
euch brauche das bloß für die Schule, habe sonst niemanden der mir da
helfen könnt......bin ehh schon down ....brauche es bis Jänner)=.....


help I need somebody, help not just anybody............(Beatles)


Danke im Voraus(=!

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.