PIC 16F84 Anfänger

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 06 10 2024  02:33:32      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PIC 16F84 Anfänger
Suche nach: pic (2055)

    







BID = 370992

peterschrott

Gesprächig



Beiträge: 167
Wohnort: Düsseldorf
 

  


Hallo Leute,
es ist zum verzweifeln.
Ich programmiere mit dem PIC 16F84A einige leichte Versuche. Das Meiste ist von Sprut. Die heruntergeladenen Assembler Files klappen oft, was ich selber programmiert meist nicht.
Ich versuche nur eine LED an Port B blinken zu lassen, aber selbst das klappt schon nicht.
Was mache ich falsch ??
Nach Einschalten der Betriebsspannung blinkt meine LED 8 mal, dann ist Schluß. Bei Betätigung der Reset Taste, blinkt die LED nur einmal.
Ich habe hier nur mal einen Teil des listings:
; Programm startet hier
Init
bsf STATUS, RP0 ; auf Bank 1 umschalten
movlw B'00000000' ; PortB alle output
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 schalten
clrf PORTB ; alle Leds aus
;Loop
nop
nop
nop
bsf PORTB,3 ; PortB 3 auf an,
Call Wait500 ; Delay 1 Sekunde
nop
nop
nop
bcf PORTB, 3 ; PortB 3 auf aus
; goto Loop
Hat einer eine Idee was hier falsch läuft ??
Viele Grüße
Peterschrott

BID = 371008

Her Masters Voice

Inventar


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 5308
Wohnort: irgendwo südlich von Berlin

 

  

wo issn die Warteschleife abgeblieben? Wozu NOPst du da so viel rum?

_________________
Tschüüüüüüüs

Her Masters Voice
aka
Frank

***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************

BID = 371012

Calidus

Stammposter



Beiträge: 291
Wohnort: Nördlich vom A*** der Welt

Hast Du einen externen Takt, der nur einmal die Sekunde geht?

Weil, bei den mindestens 125kHz internen Takt würde man da gar nichts sehen normalerweise.

BID = 371016

Ltof

Inventar



Beiträge: 9323
Wohnort: Hommingberg

ist das das GANZE Programm?

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 371024

PhyMaLehrer

Schriftsteller



Beiträge: 908
Wohnort: Leipzig

Nein, oben steht doch, daß dies nur ein Teil des Programms ist.

Ich habe mit Assembler zwar nicht so viel am Hut, aber etwas fällt mir auf:
Die Verzögerung durch die NOPs ist sicher nicht zu bemerken, die lassen wir also mal unter den Tisch fallen. Nach dem Einschalten der LED wird eine "richtige" Pause gemacht, dann wird sie wieder ausgeschaltet. Nach dem Rücksprung zum Beginn der Schleife wird sie aber (wie gesagt, von den NOPs abgesehen) sofort wieder eingeschaltet. Die AUS-Zeit wird also nur im Bereich von Mikrosekunden liegen und ist damit nicht sichtbar. Wie sieht es denn aus, wenn vor das GOTO LOOP noch eine Zeile CALL WAIT500 eingeschoben wird?

BID = 371025

Ltof

Inventar



Beiträge: 9323
Wohnort: Hommingberg


Zitat :
PhyMaLehrer hat am 20 Sep 2006 08:24 geschrieben :

Nein, oben steht doch, daß dies nur ein Teil des Programms ist.

Stimmt!

"Loop" und "goto Loop" sind durch das Semikolon zum Kommentar degradiert und wirkungslos. "Loop" ist eine Sprungmarke. Da braucht man das nicht zu machen, wenn man am Programm experimentiert.

Wie bei diesem Programm ein 8-faches Blinken zustande kommen soll, sehe ich nicht. Es kann eigentlich überhaupt nicht blinken.

Was macht der Watchdog?

Hast Du das Programm komplett selbst geschrieben oder ein Programm von Sprut als Ausgangsbasis genommen? Wenn ja, welches?

Übrigens:
Wenn Du weiter mit PICs arbeiten willst, vergiss den 16F84 ganz schnell. Der ist total veraltet und viel zu teuer! Sobald Du einigermaßen Fit bist, steige auf einen aktuelleren um.

edit:
Vorausgesetzt, das Drumherum stimmt, müsste die Hauptprogrammschleife eigentlich so aussehen:

Loop
bsf PORTB,3 ; PortB 3 auf an,
Call Wait500 ; Delay 1 Sekunde
bcf PORTB,3 ; PortB 3 auf aus
Call Wait500 ; Delay 1 Sekunde
goto Loop

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

[ Diese Nachricht wurde geändert von: Ltof am 20 Sep 2006  8:47 ]

BID = 371037

Ltof

Inventar



Beiträge: 9323
Wohnort: Hommingberg

Nochetwas:
Benutzt man zum Schalten der Portpins die Befehle bcf und bsf, so ist die äußere Beschaltung des PICs sehr wichtig. Beachtet man das nicht, können komische Sachen passieren.

Es ist das sgenannte "read-modify-write-Problem".

Wie ist die LED angeschlossen?

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 371191

peterschrott

Gesprächig



Beiträge: 167
Wohnort: Düsseldorf

Hallo zusammen,
vielen Dank für Euren Input. Nachdem ich Eure Comments gelesen habe, die ganze Sache nochmal überdacht habe und das Programm entsprechend geändert habe, läuft alles wie geplant.
War gestern Abend vielleicht doch ein Glas Wein zu viel!!
Ich denke, der Hauptfehler war wohl das zweite Delay, daß ich vergessen habe. Das Semikolon ist nur zu Testzwecken hereingeraten.
Das seltsame Blinken 8 mal bzw. einmal nach reset ist auch mir unerklärlich, ist aber jetzt auch verschwunden.
Warum der 16F84 ?
Ich bin noch nicht so weit um auf andere PIC´s umzusteigen. Habe mal mit dem 16F628 angfangen. Viele Programme liefen aber nicht. Die hex files ja, aber selten die assemblierten. Liegt wohl an der IDE Version die Sprut benutzt hat.
Zum Testen benutze ich die Testplatine von Sprut.
Nochmals . . .
Vielen Dank
peterschrott



BID = 371276

stepp64

Gesprächig


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 162

Der Hauptunterschied zwischen dem 16F84 und dem 16F628 ist der Beginn des RAM-Bereiches. Bei dem 16F84 beginnt der frei RAM bei 0x0C bei dem 16F628 erst bei 0x20. Das Prog für den 84er würde also in wichtige Register des 628er schreiben (z.Bsp. die Timerregister1 und 2 oder die Interuptenableregister PIE) obwohl es eigentlich Variablen beschreiben wollte. Wichtig ist auch, dass der PORTA des 628 nach dem Einschalten auf analog steht und du ihn erst auf digital stellen musst. Solange du aber mit PORTB spielst, ist das eigentlich egal.

Ansonsten ist der 16F628 schon ganz gut für den Anfang. Du wirst ihn schnell mögen, da er wesentlich mehr kann wie der 16F84 und auch billiger ist. Mit ein wenig Übung bekommst du die Progs ganz gut portiert. Lese halt immer wieder bei sprut nach. Dort steht wirklich alles was man für den Anfang wissen muss. Den Rest erfährst du dann aus den Datenblättern. Viel Spaß.

Gruß Sven

BID = 374874

qutom

Gelegenheitsposter



Beiträge: 58
Wohnort: Marl

Als Anfänger würde ich einen Pic 18Fxxx nehmen, den mit einen Bootloader versehn. Dann kann man ganz einfach über die Pc RS232 Schnittstelle den Pic programmieren, ohne Brenner.
Ein Tipp noch von mir: Den Pic 18f2550 kann man sogar per USB Programmieren. Es klappt sogar Perfekt. Leider hat die ganze sache nur einen Haken: Gekaufte neue Pics sind ja leer, da muss man irgendwie einen Bootloader drauf Brennen.
Hier mal ein Link: http://www.mecanique.co.uk/code-studio/

BID = 374889

Ltof

Inventar



Beiträge: 9323
Wohnort: Hommingberg


Zitat :
qutom hat am  4 Okt 2006 08:34 geschrieben :

Als Anfänger würde ich einen Pic 18Fxxx nehmen, den mit einen Bootloader versehn.

Unsinn!

Auf einen Brenner verzichten zu können, ist der einzige Vorteil. Gerade für einen Anfänger ist dieser Ansatz komplett ungeeignet. Die 18F sind nichts für Einsteiger. Es gibt kaum einfache Beispielcodes zum Herumprobieren. Ein kleiner, einfacher PIC für die ersten Stehversuche im Programmieren ist da wesentlich besser geeignet. Da lernt man die Tücken der Programmierung schneller, als wenn man sich mit der Komplexität eines 18F herumschlagen muss. Alleine die Länge des Datenblattes erschlägt einen Anfänger gleich.

Für den PIC-Anfänger empfehle ich PICkit2 als Entwicklungs- und Programmiertool. Kostet nicht die Welt und funktioniert.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 375123

qutom

Gelegenheitsposter



Beiträge: 58
Wohnort: Marl

Finde ich nicht das das Unsinn ist. Mit den Bootloader wird der Pic per Basic Programmiert. Als Anfänger ist das Basic von Microcode sehr gut. Man kann da alles Programmieren, man braucht da keine Assemblerkenntnisse. Ich selbst Programmiere nur noch mit Basic, benutze den Proton Basic Compiler, der sogar 32Bit Fließkomma Zahlen kann.
Viele morderne neue Pics haben eine sehr komplizierte Hardware Strucktur, die aber mit Basic ganz einfach zugreifen kann. Es gibt von Proton und Mirocode sogar Demoversionen, einfach da mal reinschauen, es lohnt sich. Hier nochmal ein Link mit Beispiele: http://www.rentron.com/

BID = 375124

Ltof

Inventar



Beiträge: 9323
Wohnort: Hommingberg


Zitat :
qutom hat am  5 Okt 2006 06:32 geschrieben :

Finde ich nicht das das Unsinn ist. Mit den Bootloader wird der Pic per Basic Programmiert.

Das hast Du bisher aber nicht geschrieben.

Hier wird ein Assembler-Problem diskutiert. Die Lösung kann nicht Basic heißen.

Mache einen eigenen Thread auf, wenn Du der Welt deine Erfahrungen mit Bootloader und Basic mitteilen willst.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182131944   Heute : 307    Gestern : 5445    Online : 452        6.10.2024    2:33
3 Besucher in den letzten 60 Sekunden        alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0710010528564