www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC16F877 geht nicht!


Autor: Tobias Busch (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hiho,

ich habe einen PIC16F877 mit 20MHz. Diesen hab ich mit ICPROG mit einem
beispiel programm beschrieben, sodass die LED an RB0 eigentlich mit 1Hz
blinken sollte. Ich habe den PIC auch verified. Die Vdd ist bis auf 1mV
stabil! Der Wachhund ist aus und kann also net stören! Ich habe das
angehängte Beispiel Programm genommen.

Das Problem: Die LED, die an RB0 angeschlossen ist, leuchtet
garnicht!!! Woran um alles in der Welt liegt das?????

P.S.:Ich habe keine Erfahrung mit µC's. Das sind alles meine ersten
Versuche!

Also schon mal DANKE!

mfg BuschenSen

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das Low-Akive Reset-Pin auf 5V gelegt? Das Ding heisst /MCRL.

Wenn nicht laeuft dein Pic gar nicht los, weil er ewig resettet.

der guenther

Autor: Tobias Busch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne hab ich net! Ich versuch das mal, aber das Ding ist im LVP modus
macht das da Probleme ohne das der PGM pin auf 5V gesetzt ist?

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist pause() eine fertige Funktion die eine ms wartet?

Was benutzt du denn fuer ne Umgebung?

der Guenther

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich weiss jetzt leider nicht so genau, was der LVP modus beim PIC
16 ist. aber wenn du auf dem Hardware Reset haengen bleibst kann gar
nichts gehen.

Berichte mal von deinen Erfolgen.

der Guenther

Autor: Tobias Busch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der PIC funzt. Ich hab mir schonmal ein kleines dynamisches
Flip-Flop gebastelt. Jetzt will ich mir eine delay funktion mit dem
Timer0 basteln. Gibt's ein Tutorial für C mit dem PIC16F877???

In dem Quelltext ist ein Fehler in der main-Funktion. Es geht aba eh
nur um die Pause(). Die soll nämlich bei 20MHz ca. 1ms warten, das tut
sie aber nicht, sondern ich glaube, dass der Chip sich an dieser Stelle
aufhängt, weil nix mehr passiert.

Autor: Tobias Busch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der PIC funzt. Ich hab mir schonmal ein kleines dynamisches
Flip-Flop gebastelt. Jetzt will ich mir eine delay funktion mit dem
Timer0 basteln. Gibt's ein Tutorial für C mit dem PIC16F877???

In dem Quelltext ist ein Fehler in der main-Funktion. Es geht aba eh
nur um die Pause(). Die soll nämlich bei 20MHz ca. 1ms warten, das tut
sie aber nicht, sondern ich glaube, dass der Chip sich an dieser Stelle
aufhängt, weil nix mehr passiert.

PS: Als Compiler benutze ich den CC5x!

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib dir lieber deine eigene pause(). Dann kannst du selbst deine
Parameter festlegen. Der PIC ist RISK, das heisst im Allgemeinen auch,
dass 1 Operation pro Takt ausgefuehrt wird.

Also bau dir ne Schleife, die 20000 mal nop ausfuehrt. Damit kannst du
sehr praezise warten. nop ist ein Assemblerbefehl, musst mal gucken wie
du den in deiner Umgebung einsetzt. Aber das ist meist moeglich und
garantiert dir auch, dass der Compiler das nicht rausoptimiert, was er
bei einer leeren Schleife ganz sicher macht.

Ein Tutorial speziell fuer einen PIC wird es nicht geben. Aber
vielleicht eine Anleitung fuer deine Umgebung. Schau mal bei google.

der Guenther.

Autor: Tobias Busch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Tutorial auf www.cc5x.de ist über einen 16F84A. Ist das kompatibel??

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da muesstest du mal die Datenblaetter vergleichen. Wie gesagt, mit dem
PIC16... bin ich nicht vertraut. Aber wenn es nur um die Programmierung
geht, dann wird es schon ungefaehr genauso gehen. Ist ja nun nichts, was
spezielle Peripherie voraussetzt.

Sorry, dass ich dir nicht weiterhelfen kann.

der Guenther

Autor: Michael Dworkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
>>Das Tutorial auf www.cc5x.de ist über einen 16F84A. Ist das
>>kompatibel??

Schau mal hier rein
http://www.cc5x.de/files/DSM-0822A/I2C_LCD_Lauftext.htm

Da ist eine Warteschleife

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
while (TMR0 != next)
            ;

ich koennte mir vorstellen, dass der Compiler das wegoptimiert. Nutzt
ja eigentlich auch nichts, verplempert nur Zeit. Das soll es ja in dem
Fall auch, aber das weiss ja der Compiler nicht. Nutzlose Schleifen
werden fuer gewohnlich entfernt oder reduziert.

Ich wuerde mich mit nem nop besser fuehlen.

der Guenther

Autor: Emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf www.sprut.de hast du so ziemlich alles was mit PIC'S zu tun hat
verständlich erklärt, das hast du übrigens auch dein Problem mit der
LVP erläutert.

Autor: Tobias Busch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem bei sprut ist nur das dort in Assembler programmiert wird.
Gibt es so eine Seite auch für C oder muss ich jetzt extra assembler
lernen?

Autor: Guenther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>muss ich jetzt extra assembler lernen?

Ich weiss ja nicht was du studierst, aber das musst du doch in Ilmenau
sowieso lernen ;-) Aber du hast recht. Ich programmiere PICs auch in C.
Was genau suchst du eigentlich?

Ich meine, wenn du ne spezielle Frage hast, dann frag einfach oder
google direkt danach. Aber wenn du immernoch an pause() haengst, dann
hast du die Beispiele nicht probiert.

der Guenther.

Autor: Tobias Busch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.