PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Startprobleme



orph
07.05.2006, 01:24
Hallo zusammen...

Ich bin noch ziemlich neu bei den Mikroprozessoren und bin zur Zeit ein bisschen am ausprobieren, doch weit bin ich noch nicht gekommen.

Ich verwende einen pic16f628a mit einer selbstgebeuten Testplatine.
Darauf möchte ich zum Beginn eine LED zum Blinken bringen.


Den Quellcode habe ich teilweise von sprut.de übernommen:

list p=16f628a
include "p16f628a.inc"
main

loops Equ 0x22
loops2 Equ 0x23

errorLEVEL -302

Init
bsf STATUS, RP0
movlw B'00000000'
movwf TRISB
bcf STATUS, RP0
clrf PORTB

; LED einschalten

bsf PORTB,5

Loop

call Wait
bcf PORTB,5
call Wait
bsf PORTB,5
goto Loop

Wait
movlw D'250'
movwf loops

Wai
movlw .249
movwf loops2
Wai2 nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz loops2, F
goto Wai2

decfsz loops, F
goto Wai
retlw 0

end


Ich hab dann den Code in ein HEX-File assembliert (mit dem Tool vom Microchip) und mit dem Galep-4 auf den Chip gebrannt. Wenn ich den Chip nun in die Platine einsetze und Strom drauf gebe, passiert gar nichts...

Jedoch kann es nicht an der Platine liegen, denn die funzt ohne den Chip.
Der WatchDog-Timer ist auch ausgeschaltet, den Takt habe ich auf HS eingestellt (20mhz-Quarz) und das Brennen funktioniert ohne Fehler.

Sieht hier jemand einen dummen Beginner-Fehler oder so was?

PICture
07.05.2006, 01:47
Hallo orph!

Ich vermute, dass der PIC nicht läuft, weil Du Ihm in Deiner .asm Datei die Konfiguration nicht definiert hast. Im Code sehe ich keine Fehler.

MfG

orph
07.05.2006, 02:06
danke für die Antwort

Ich habe jetzt noch zwischen dem Befehl zur Fehlermeldungsunterdrückung und dem Init-Befehl die folgende Zeile eingefügt:

__CONFIG _PWRTE_ON & _WDT_OFF& _HS_OSC

Doch auch damit konnte ich keinen Erfolg erziehlen.

gruss orph

PICture
07.05.2006, 02:30
Dann bleibt noch MCLR. Versuche es, bitte, noch _MCLRE_OFF dazu schreiben. Ich hatte am Anfang damit gleiches Problem, und seit dem steht das bei mir immer drin. Das ermöglichst das Pin 4 (RA5) auch als I/O zu benutzen. Wenn Du einen Reset Taster an dem Pin hast, muss das Pin mit pull-up ca. 10 kOhm an +Vcc angeschlossen sein und kannst Du _MCLRE_OFF weg lassen.

MfG

P.S. Ich weiss nicht ob es Bedeutung hat, aber die Konfigurationszeile steht üblich direkt nach include xxx.inc .

orph
07.05.2006, 11:13
Hallo PICture,

Ich habe deinen Rat weiter befolgt und auch noch MCLRE in die Konfiguration hineingenommen und sie direkt unter include gestellt.
Doch auch dies brachte mir keinen Erfolg. :-(

Nun habe ich jedoch gemerkt, dass ich die beiden Kondensatoren, die zwischen den Quarz und Masse kommen sollten, vergessen habe einzubauen. Ist dies möglicherweise der Grund, das nichts läuft?
(Da ich eh noch andere Bauteile benötige, werde ich mir auch noch solche Kondensatoren kaufen, doch welche kann man dort verwenden? Ich nehme mal an, es werden normale Elektrolyt-Kondensatoren verwendet, doch mehr weis ich nicht.)

kalledom
07.05.2006, 13:11
An den 20MHz-Quarz kommen 2 kleine keramische Kondensaoren mit 10...22 pF (Rastermaß 2,54 mm). Es handelt sich hier um eine höhere Frequenz, wo Elkos nichts zu suchen haben.
Wichtig ist ein PullUp-Widerstand 4,7...47k vom Reset-Pin nach +5V.
PIC-Beispiele: http://www.domnick-elektronik.de/picasm.htm
Fehler-Checkliste: http://www.domnick-elektronik.de/piccheck.htm
__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON & _LVP_OFF

orph
07.05.2006, 23:50
Jeah, vielen Dank für die Super Infos.

Nur das mit dem PullUp-Widersand versehe ich noch nicht ganz.
Ich nehme an, dass dieser ein normaler Metall-Widerstand sein sollte, oder? Doch wieviel Ohm brauche ich dort nun, zwischen 4.7 und 47 k ist noch eine grosse Auswahl ;-).

Gruss

PICture
08.05.2006, 00:36
Ich habe schon früher 10kOhm genannt, hast Du warscheinlich übersehen. Kann auch Kohleschicht sein (billiger).
Gut, dass Du die fehlende Kondensatoren selber bemerkt hast, sonst hätten wir noch einege Zeit dafür verloren.

MfG :)