RE: PIC programierem

#1 von Dubi , 18.12.2013 09:25

Hallo !

Habe von einem Freund mehrere Programme für Lichteffekte ,Decoder usw,bekommen !Diese stammen von einer Miba CD.
jetzt wollten wir wissen ob die Programme sowie sie sind einfach auf einen Chip zu brennen sind oder ob da noch was verändert werden muss .
Mfg
;**************************************
; Projekt aus "PICs für Modellbahner"
; Flackerlicht
;**************************************
; Festlegung der Eigenschaften des PIC18F1320
;
#INCLUDE Config_1320.asm
;*******************************
; Variablen
;
CBLOCK 000H ; Var im Bereich 0..FFh
WaitCount ; WaitMs
ZufallsZahlLo ; Zufall
ZufallsZahlHi
ENDC
;*******************************
; Hier startet der PIC nach dem Einschalten der +5V
;
ORG 0000H ; Reset vector
;=============================
; Erzeugt ein Flackerlicht mit 12 Leds (Led#11..#0).
; Verwendet LATA,3..0 und LATB,7..0
; Verwendet die gleiche Schaltung wie das Lauflicht.
; LATA,3 steuert Led#11, LATB,0 steuert Led#0
; CALL: WaitMs, Zufall
;
Flackerlicht:
;
; Alle Portpins sind digital In/Out (nicht analog In)
;
MOVLW B'01111111'
MOVWF ADCON1
;
; Konfiguriere alle Pins von PortA und PortB
; als Ausgang
;
CLRF TRISA
CLRF TRISB
;
; Setze den Startwert für die Zufallszahl = 0
;
CLRF ZufallsZahlLo
CLRF ZufallsZahlHi
FlackerLoop:
;
; Bilde die nächste 15 Bit-Zufallszahl
;
RCALL Zufall
;
; Kopiere die 15 Bit-Zufallszahl an die
; Portpins
;
MOVFF ZufallsZahlHi,LATA
MOVFF ZufallsZahlLo,LATB
;
; Warte 50 ms...
;
MOVLW .50
RCALL WaitMs
;
; ..und bilde die nächste Zufallszahl
;
BRA FlackerLoop
;==============================
; Prozeduren
;-------------------------------
; Zufall erzeugt eine 15 Bit Zufallszahl
; WaitMs wartet W Millisek
;-------------------------------
; Erzeugt eine Zufallszahl von 15 Bit Länge (Bit#0..Bit#14), die
; durch Linksrotation zweier Register und durch Einspeisen eines
; geeigneten Wertes in Bit#0 gewonnen wird.
; Dazu werden Bit#13 und Bit#14 miteinander verglichen. Enthalten
; beide Bits eine '1' oder beide Bits eine '0', wird von links
; eine '1' in das Doppelregister geschoben. Sind Bit#14 und Bit#13
; ungleich, so wird eine '0' eingespeist.
; Beim nächsten Aufruf der PROC hat Bit#0 den Wert übernommen
; und alle anderen Bits sind um eine Stelle nach links verschoben.
; Diese Art der Rückkopplung gewährleistet, dass das
; Doppelregister erst nach 32767 Takten wieder den Anfangszustand
; erreicht hat. ; Andere Rückkopplungen würden einen kürzeren
; Zyklus ergeben.
;
; Eing: ZufallsZahlHi:Lo
; Ausg: nächste ZufallsZahlHi:Lo
;
Zufall; PROC
; Hole ZufallsZahlHi ins W.
; Isoliere Bit#14 und Bit#13 durch logisches AND.
;
MOVF ZufallsZahlHi,W
ANDLW B'01100000'
;
; Bereite im Cy-Flag = 1 vor.
; Wenn jetzt W = 0 (Zeroflag = 1) ist, dann sind beide Bits
; '0' gewesen. Rotiere das gesetzte Cy-Flag in die Zufallszahl.
;
BSF STATUS,C
BZ Rotation ; gehe zur Rotation
;
; Wenn beide Bits '1' sind, rotiere ebenfalls das gesetzte
; Cy-Flag in die Zufallszahl.
; XOR verändert das gesetzte Cy-Flag nicht !
;
XORLW B'01100000'
BZ Rotation ; gehe zur Rotation
;
; Bit#14 ist ungleich Bit#13
; Bereite Cy-Flag = 0 für die Rotation vor
;
BCF STATUS,C
;
; Rotiere das vorbereitete Cy-Flag nach links
; in die 15 Bit-Zahl ZufallsZahlHi:Lo
;
Rotation: RLCF ZufallsZahlLo,F
RLCF ZufallsZahlHi,F

RETURN ; from Zufall
;-------------------------------
; Wartet 1..255 ms und kehrt dann zum aufrufenden
; Programm zurück.
; Voraussetzung: Clockfrequenz des PIC = 31,25 kHz
; Eing: W = Anzahl ms
; Ausg: W = unverändert
; Uses: WaitCount
;
WaitMs; PROC
MOVWF WaitCount ; W bleibt, wie..
WaitM_2: ; ..es ist
NOP ; Fülle die..
NOP ; .. Schleife..
NOP ; ..auf 1 ms-
NOP ; Dauer auf.
NOP
DECFSZ WaitCount,F
BRA WaitM_2

RETURN ; from WaitMs
;==============================
END


Dubi  
Dubi
InterRegio (IR)
Beiträge: 121
Registriert am: 13.10.2013


RE: PIC programierem

#2 von Videoman , 18.12.2013 13:24

Assembler, voll krass.
Ich würde eher in einem PIC Forum nachschauen, als hier. Denn das ist schon Hardcore.
Auf jedem Fall muss das Programm in Machinencode übersetzt werden. Compilieren ist schon übertrieben, das es ja leserlicher Maschinencode ist.


Meine Anlage: Heggedal Modelljernbane
Alle Videos auf meinen Youtube Kanel


Videoman  
Videoman
InterRegioExpress (IRE)
Beiträge: 351
Registriert am: 14.05.2013


RE: PIC programierem

#3 von ICEVfan , 18.12.2013 16:25

Hallo Dubi,

Falls die Miba-CD aus einer aktuellen Digitalausgabe stammt, habe ich den zugehörigen Artikel über PIC-Projekte für die Moba mal überflogen.
Dort stand eigentlich alles drin, was man so braucht, um den PIC zu flashen. Also würde ich Dir empfehlen, dass Du die mal den ensprechenden Artikel besorgst.

Du brauchst halt ein Brennprogramm, mit dem Du den Maschinencode erzeugst und den PIC flashen kannst, und ein passendes Programmiergerät dazu.
Die Datei "Config_1320.asm" muss natürlich auch vorhanden sein, das Programm wäre ohne diese Datei unvollständig.
Wichtig ist, dass Du den richtigen Controller benutzt, also den PIC18F1320.
Für andere Controller muss der Code entsprechend angepasst werden.

Und hier noch eine, wie ich finde, extrem informative und hilfreiche Seite über PICs:
http://www.sprut.de/


Gruß

Fabian


ICEVfan  
ICEVfan
RegionalExpress (RE)
Beiträge: 84
Registriert am: 15.12.2012
Spurweite H0


RE: PIC programierem

#4 von 95er ( gelöscht ) , 18.12.2013 20:14

Das, was oben zu lesen war, ist sogenannter Quellcode. Dieser muss mit einem Assemblerprogramm in Maschinencode übersetzt werden (ist dieser nicht schon auf der CD vorhanden?) und dann mit einem geeignetem Brenner in den PIC gebrannt werden. Das ist zwar einfach, aber Erfahrung und Kenntnis der Dinge sind auf jeden Fall hilfreich oder beesser Voraussetzung. Hat ja im Prinzip auch schon mein "Vorschreiber" alles erklärt.
Kommt noch hinzu, dass man die Hardware zu diesem Programm auch kennen muss, da sonst das Programm nicht funktionieren kann (Belegung der Pins des PIC's)


95er

RE: PIC programierem

#5 von Eisenhorn ( gelöscht ) , 26.12.2013 21:16

Die Top seit für Pic meiner meinung nach:
http://www.sprut.de/

Ansonten für Atmells AVR' s ist die informations lage für Hobbyisten besser.

Gruß LArs


Eisenhorn

RE: PIC programierem

#6 von Dubi , 15.01.2014 18:57

Hallo,
erstmal Danke , das Compilieren mit MPLAB hat nicht funktioniert kam immer eine fehler Meldung !
Ich habe mal die kompletten Programme angehängt !

Mfg

Dateianlage:
Sie haben nicht die nötigen Rechte, um die angehängten Dateien zu sehen

Dubi  
Dubi
InterRegio (IR)
Beiträge: 121
Registriert am: 13.10.2013


RE: PIC programierem

#7 von Dubi , 20.01.2014 18:04

Hallo

Hat jemand mal den Magdecoder u. Servodecoder Compiliert ,würde mich intressieren ob es funktioniert hat ?

Gruss
Markus


Dubi  
Dubi
InterRegio (IR)
Beiträge: 121
Registriert am: 13.10.2013


RE: PIC programierem

#8 von ICEVfan , 21.01.2014 20:12

Hallo Dubi,

Ich denke mal, dass die Programme schon funktionieren, das wird die miba hoffentlich getestet haben.
Ansonsten, was besagt die Fehlermeldung?

Ich selber habe bisher nur den PIC16F628 programmiert, kann zum PIC18F1320 also nicht viel sagen, für den der Code ja vorgesehen ist.

Ansonsten das Übliche: Im MPLAB gibt es eine Funktion, die nennt sich Quickbuild [z.b. Flackerlicht].asm, dabei wird der Maschinencode erzeugt, aber nicht auch den PIC gebrannt. Funktioniert das?
Wo Du diese Funktion im aktiellen MPLAB findest, weiß ich nicht, ich nutze Version 7.6 und die ist einige Jährchen alt.

Ansonsten, funktioniert das Verbinden mit dem Programmer?

Und bevor ich den Code auf den PIC flashe, mache ich "Erase flash device" und anschließend "Blanc Check all".

So kann man sicher gehen, dass der PIC keine alten Codefetzen an irgendwelchen Stellen im Programmspeicher hat, die vom neuen Code nicht überschrieben werden.


Gruß

Fabian


ICEVfan  
ICEVfan
RegionalExpress (RE)
Beiträge: 84
Registriert am: 15.12.2012
Spurweite H0


RE: PIC programierem

#9 von Dubi , 21.01.2014 20:45

Hallo Fabian ,
Flackerlicht Bahnübergang lauflicht funktionieren jetzt !

ServoDec u. Magdec kriege ich nicht hin die HEX Datei wird bei mir nur 1.60 kb gross !

irgend was mach ich falsch !

Markus


Dubi  
Dubi
InterRegio (IR)
Beiträge: 121
Registriert am: 13.10.2013


RE: PIC programierem

#10 von Dubi , 03.02.2014 17:58

Hallo
Danke allen !
Alles läuft auch die Decoder !

Mfg
Dubi


Dubi  
Dubi
InterRegio (IR)
Beiträge: 121
Registriert am: 13.10.2013


RE: PIC programierem

#11 von Ruhr-Sider , 03.02.2014 18:51

Zitat von Dubi
... Danke allen !
Alles läuft auch die Decoder ! ...



Hallo Dubi,

... ein ganz toller Beitrag und schön für DICH, dass alles läuft.

Können wir an deinem Glück auch teilhaben?
.. will sagen, es wäre toll, wenn du mal beschreibst, warum es jetzt geht.


viele Grüße ... HGH
mein Leitspruche: .... wer warten kann, hat mehr fürs Leben bzw. die MoBa.

> *** Platinenanfragen bitte nur per eMail ***
> Meine Bilder dürfen hier im Forum verlinkt werden.


 
Ruhr-Sider
Metropolitan (MET)
Beiträge: 2.633
Registriert am: 29.04.2005
Homepage: Link
Ort: südlich der Ruhr
Spurweite H0
Stromart Digital


RE: PIC programierem

#12 von Dubi , 03.02.2014 19:20

Hallo !
MagDek ,Config 1320 ,Pfm Int ,Pfm Rou gehören zusammen( beim Flackerlicht gehört nur Config 1320 dazu) !
in MPLAB complimieren die Hex Datei ist nur 1,6kb gross.Ich habe den Pic nicht auf der Platine programmiert !Da ich keinen Pickit3 habe sondern mit einem Jmd Programmer von Ebay,Software Ic/Prog !
Mfg


Dubi  
Dubi
InterRegio (IR)
Beiträge: 121
Registriert am: 13.10.2013


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz