Autor |
PIC 16F84 Anfänger Suche nach: pic (2056) |
|
|
|
|
BID = 370992
peterschrott Gesprächig
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5312 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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 9349 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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 911 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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 9349 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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 9349 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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 9349 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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
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
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 9349 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)
|