Forum: Analoge Elektronik und Schaltungstechnik MICROCHIP PIC16C54RC programmieren


von Michael (michaerfo)


Lesenswert?

Hallo Microcontroller-Gemeinde,ich bin neu hier und bei  der Suche nach 
einem  MICROCHIP PIC16C54RC auf dieses Forum gestoßen und habe soviel 
Ahnung von Microcontrollern (PICs), wie die Kuh vom radfahren, aber 
folgendes Problem:

Bei meinem  Velleman Röhrenvorverstärker k 8020 werden normalerweise die 
Eingänge, eine 6+db-Erhöhung, die Standby- und Muteschaltung durch 
Microtaster über einen MICROCHIP PIC16C54RC gesteuert.

Ich habe das Gerät gebraucht und defekt in der Bucht gekauft. Das Gerät 
wurde ab 2000 gebaut. Es hat jedoch statt der Microtaster, Kippschalter 
und der Microcontroller fehlt.

Die Kippschalter sind mit den jeweiligen Pins des Pic-Sockels  und der 
Masse verbunden.
So lassen sich die Eingänge schalten.
Nun habe ich mir überlegt, das Gerät in seinen Ursprungszustand zu 
versetzen,
Meine Anfragen bezüglich einer Ersatzlieferung des fehlenden MICROCHIP 
PIC16C54RC an die Fa. Velleman in Belgien wurden nicht beantwortet.

Nun meine Fragen:
Lässt sich ein neuer PIC anhand der Schaltfolge aus der 
Betriebsanleitung und den Anschlüssen lt. Schaltplan programmieren?
Gibt es jemanden, der so etwas kann?
Wie aufwendig ist das Brennen eines PIC?
Lohnt sich der Aufwand? (Muss ich wohl selbst beantworten)
Für eure Antworten herzlichen Dank im Voraus
Michael

von Ron-Hardy G. (ron-hardy)


Lesenswert?

Michael schrieb:
> den Anschlüssen lt. Schaltplan

Zeig mal.

von Michael B. (laberkopp)


Lesenswert?

Michael schrieb:
> Lässt sich ein neuer PIC anhand der Schaltfolge aus der
> Betriebsanleitung und den Anschlüssen lt. Schaltplan programmieren?

Vermutlich, er scheint bloss ein Tastenaggregat nachzubilden

https://cdn.velleman.eu/downloads/0/illustrated/illustrated_assembly_manual_k8020.pdf

nicht mal eine IR Fernbedienung.

> Gibt es jemanden, der so etwas kann?
> Wie aufwendig ist das Brennen eines PIC?

Einfach, wobei 16C54 nur ein mal programmierbar ist und 16C54JW teuer 
und kaum beschaffbar, vermutlich ersetzt man ihn durch 16F84

> Lohnt sich der Aufwand?

Den Rest hast du ja.

von Jens M. (schuchkleisser)


Lesenswert?

Michael schrieb:
> Lässt sich ein neuer PIC anhand der Schaltfolge aus der
> Betriebsanleitung und den Anschlüssen lt. Schaltplan programmieren?

Ziemlich sicher ja.

Michael schrieb:
> Gibt es jemanden, der so etwas kann?

Bestimmt. Den zu finden und bezahlen zu wollen ist das Problem.

Michael schrieb:
> Wie aufwendig ist das Brennen eines PIC?

Einfach. Für einmaliges findet sich sicher jemand der das für 
aufgerundetes Porto tut. Ein Programmer für diese alte Technik kostet 
nicht viel, aber finden kaufen und benutzen können dauert auch was.
Das Problem ist das Programm zu schreiben das da gebrannt werden soll.
Der Chip ist ja noch günstig zu kaufen, aber da der nur einmalig 
programmiert werden kann mag es sinnvoller sein da stattdessen einen 
PIC16F84 zu benutzen, der dürfte elektrisch identisch sein, ist aber 
Chiptechnisch wesentlich komfortabler weil löschbar und mehr Speicher 
drin ist.

Michael schrieb:
> Lohnt sich der Aufwand?

Das musst du entscheiden. Für ein Velleman-Gerät das mal um 300€ 
gekostet hat nach 25 Jahren nochmal mindestens das gleiche auszugeben 
lohnt sich in meinen Augen nicht.
Aber ich hätte an einen Velleman-Verstärker auch nicht High End 
drangeschrieben...
Porto, Chip, Programmer und vor allem die Zeit des Programmschreibers 
kosten genug, das die Kiste eigentlich ein wirtschaftlicher Totalschaden 
ist, da müsste man sie schon sehr lieb haben.
Und vielleicht findet sich hier jemand, der dir das Programm mal eben 
für lau als Fingerübung (evtl auch für/mit ChatGPT) zusammenkloppt.

Wenn du mit einem anderen Controller und etwas Bastel- und Lernarbeit 
zufrieden wärst, wäre es für dich evtl. eine Möglichkeit, da einen 
Arduino reinzufrickeln und das Programm selber zu schreiben.
Geht auch nicht von jetzt auf gleich, aber eigene Zeit kostet nix.

von Andras H. (andras_h)


Lesenswert?

Ich würde den 16F54 (vielleicht ist auch 16F84 auch kompatibel?) 
vorschlagen. Allerdings muss man darauf denken, dass die Dinger High 
Voltage Programming brauchen (MCLR muss höher als 5V sein), und der 
PICkit Basic das nicht kann. ICD1/2/3 PICkit1/2/3 müsste aber gehen. 
Kostet nicht viel. Compiler ist auch um sonst. MPLAB X ist zu viel, 
MPLAB 8 reicht aus.

Aber den SW schreiben wird einige Runden brauchen falls man nicht weis 
was die alte genau gemacht hat. Ich selber habe ja keine Ahnung. Andere 
vielleicht schon. Also müsste der TO fähig werden den PIC zu 
programmieren und zu testen. Damit kann der Entwickler auch remote den 
SW zu schreiben.
TO kauft am Besten ein paar Stück 16F54. PICkit3. Installiert MPLAB 8 
und compiler. SW könnte man über Github austauschen. Der Entwickler muss 
natürlich auch 1 Stück PIC kaufen/haben um zu gucken dass das Ding mehr 
oder weniger läuft.

Gibt es den HEX Datei für den 16C54 irgenwo? CP bit ist gesetzt? Hat 
jemand versucht zu gucken?

von H. H. (hhinz)


Lesenswert?

Michael B. schrieb:
> Einfach, wobei 16C54 nur ein mal programmierbar ist und 16C54JW teuer
> und kaum beschaffbar, vermutlich ersetzt man ihn durch 16F84

16F54, der 16F84 wird mittlerweile in Gold aufgewogen.

von Michael B. (laberkopp)


Lesenswert?

So ähnlich wäre der code wenn man +6dBb und MONITOR noch nicht bedient 
und die Zuordnung Taste und Ausgang nochmal überprüft
1
LIST    P=16F84
2
        INCLUDE "P16F84.INC"
3
4
        __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
5
6
;----------------------------------------
7
; Variablen
8
;----------------------------------------
9
        CBLOCK  0x20
10
        delay1
11
        delay2
12
        curr_state
13
        prev_state
14
        trigger_state
15
        ENDC
16
17
        ORG     0x00
18
        GOTO    INIT
19
20
;----------------------------------------
21
INIT:
22
        BSF     STATUS, RP0
23
24
        MOVLW   b'11100011'        ; RA0, RA1 Eingang / RA3 Ausgang
25
        MOVWF   TRISA
26
27
        MOVLW   b'11100000'        ; RB5-7 Eingang
28
        MOVWF   TRISB
29
30
        BCF     OPTION_REG, RBPU   ; Pull-Ups an
31
32
        BCF     STATUS, RP0
33
34
        ; Initial HIGH
35
        MOVLW   b'00001000'
36
        MOVWF   PORTA
37
38
        MOVLW   b'00011111'
39
        MOVWF   PORTB
40
41
        CLRF    prev_state         ; Startzustand = alles HIGH angenommen
42
43
;----------------------------------------
44
MAIN:
45
        CALL    DELAY_10MS
46
47
;----------------------------------------
48
; aktuellen Zustand lesen
49
;----------------------------------------
50
        CLRF    curr_state
51
52
        BTFSS   PORTB, 5
53
        BSF     curr_state, 0
54
55
        BTFSS   PORTB, 6
56
        BSF     curr_state, 1
57
58
        BTFSS   PORTB, 7
59
        BSF     curr_state, 2
60
61
        BTFSS   PORTA, 0
62
        BSF     curr_state, 3
63
64
        BTFSS   PORTA, 1
65
        BSF     curr_state, 4
66
67
;----------------------------------------
68
; Flankenerkennung: High -> Low
69
; trigger = prev_state AND NOT(curr_state)
70
;----------------------------------------
71
        MOVF    curr_state, W
72
        COMF    WREG, W            ; NOT curr_state
73
74
        ANDWF   prev_state, W
75
        MOVWF   trigger_state
76
77
        MOVF    trigger_state, W
78
        BTFSC   STATUS, Z
79
        GOTO    UPDATE_STATE       ; keine neue Flanke
80
81
;----------------------------------------
82
; Reaktion (nur bei Flanke!)
83
;----------------------------------------
84
        BCF     PORTB, 4
85
86
        BSF     PORTA, 3
87
        BSF     PORTB, 0
88
        BSF     PORTB, 1
89
        BSF     PORTB, 2
90
        BSF     PORTB, 3
91
92
        CALL    DELAY_100MS
93
94
        BTFSC   trigger_state, 0
95
        BCF     PORTA, 3
96
97
        BTFSC   trigger_state, 1
98
        BCF     PORTB, 0
99
100
        BTFSC   trigger_state, 2
101
        BCF     PORTB, 1
102
103
        BTFSC   trigger_state, 3
104
        BCF     PORTB, 2
105
106
        BTFSC   trigger_state, 4
107
        BCF     PORTB, 3
108
109
        CALL    DELAY_100MS
110
111
        BSF     PORTB, 4
112
113
;----------------------------------------
114
; Zustand aktualisieren
115
;----------------------------------------
116
UPDATE_STATE:
117
        MOVF    curr_state, W
118
        MOVWF   prev_state
119
120
        GOTO    MAIN
121
122
;----------------------------------------
123
; Delay ~10 ms
124
;----------------------------------------
125
DELAY_10MS:
126
        MOVLW   d'50'
127
        MOVWF   delay1
128
D10_1:
129
        MOVLW   d'100'
130
        MOVWF   delay2
131
D10_2:
132
        DECFSZ  delay2, F
133
        GOTO    D10_2
134
        DECFSZ  delay1, F
135
        GOTO    D10_1
136
        RETURN
137
138
;----------------------------------------
139
; Delay ~100 ms
140
;----------------------------------------
141
DELAY_100MS:
142
        MOVLW   d'10'
143
        MOVWF   delay1
144
D100_1:
145
        CALL    DELAY_10MS
146
        DECFSZ  delay1, F
147
        GOTO    D100_1
148
        RETURN
149
150
        END

von Andras H. (andras_h)


Lesenswert?

H. H. schrieb:
> 16F54, der 16F84 wird mittlerweile in Gold aufgewogen.

Wirklich? Dann muss ich schauen ob ich welche noch habe. 16F84 war mein 
Lieblingspic damals. Hatten noch den PDF auch im Original ausgedruck 
gehabt.

Google meint 16F84A soll ca 5 Euro kosten. Reichelt meint für 16F54 ca 1 
Euro. Auch Reichelt für 16F84 meint 7 Euro.
Das geht noch für so ein Projekt. Der TO braucht max 2 Stück. Derjenige 
der hilft und den SW schreibt braucht nur 1 Stück. Vielleicht hat 
derjenige auch schon eins zu Haus.

Und was muss der PIC nochmal machen? Ich sehe einige Tasten, und dann 
ein paar Ausgänge. Tasten entprellen und irgendwelche Ausgänge danach 
nach einen Regel schalten? Welche Regel? PWM muss man nicht generieren? 
Also nur ausgänge ein und aus schalten? Eventuell irgendwelche Zeiten 
einhalten?

von H. H. (hhinz)


Lesenswert?

Andras H. schrieb:
> Google meint 16F84A soll ca 5 Euro kosten. Reichelt meint für 16F54 ca 1
> Euro. Auch Reichelt für 16F84 meint 7 Euro.
> Das geht noch für so ein Projekt.

Es gibt ja auch noch andere: PIC16F1826/27.

Mit EEPROM ist eh sinnvoller, da kann man die Einstellungen dauerhaft 
speichern.

von Jens M. (schuchkleisser)


Lesenswert?

H. H. schrieb:
> 16F84 wird mittlerweile in Gold aufgewogen

Naja, Ich hab noch ein paar zuhause rumliegen, DIL & 4MHz nur, und afaik 
einmal programmiert aber nicht benutzt.
Ein neuer 20er kostet bei Mouser 5,71 für einen, 4MHz für 4,43€. Gold 
ist anders.
Kurs hier ist dann 2€ oder so, das lohnt noch nicht.

H. H. schrieb:
> Mit EEPROM ist eh sinnvoller, da kann man die Einstellungen dauerhaft
> speichern.

Ging bislang auch ohne. Ja, ist schicker, das stimmt.

H. H. schrieb:
> Es gibt ja auch noch andere: PIC16F1826/27

Kostet die Hälfte, ist aber wesentlich schneller und mit mehrfach mehr 
Flash und RAM. Das ist eine gute Wahl wenn er elektrisch passt.
Da kann man dann auch mit C schreiben und muss nicht den doofen 
Assembler nutzen.... :D

@Michael B.
Da fehlen auch noch diverse Zeiten, denn das Umschalten geht nicht 
instant, Vorgeglüht werden muss auch noch und was der 24h-Timer macht 
hab ich nicht verstanden.

: Bearbeitet durch User
von H. H. (hhinz)


Lesenswert?

Jens M. schrieb:
> H. H. schrieb:
>> Es gibt ja auch noch andere: PIC16F1826/27
>
> Kostet die Hälfte, ist aber wesentlich schneller und mit mehrfach mehr
> Flash und RAM. Das ist eine gute Wahl wenn er elektrisch passt.
> Da kann man dann auch mit C schreiben und muss nicht den doofen
> Assembler nutzen.... :D

Den originalen 16C54RC ließ Velleman mit 500kHz laufen...

von Jens M. (schuchkleisser)


Lesenswert?

H. H. schrieb:
> Den originalen 16C54RC ließ Velleman mit 500kHz laufen...

Mnja, ob das reicht wenn man da CloudblockchainKI einbaut? ;)
Der von dir "empfohlene" PIC kann bis zu 32MHz aus dem internen 
Oszillator, da ist auf jeden Fall Luft.
Und mit wesentlich mehr Flash ist auch ein aufgeblasenes Programm kein 
Problem...

Mich wundert, das noch keiner auf ESP32 gekommen ist...

Disclaimer: Beitrag kann Spuren von Ironie enthalten!

Im Ernst: Der günstigere PIC16F1826 ist auf jeden Fall eine gute Wahl.

: Bearbeitet durch User
von H. H. (hhinz)


Lesenswert?

Jens M. schrieb:
> Disclaimer: Beitrag kann Spuren von Ironie enthalten!

Ironie wird immer sofort erkannt!

von Jens M. (schuchkleisser)


Lesenswert?

Nicht von allen und oder nicht immer.

von Michael (michaerfo)


Lesenswert?

Oh Männer, das ging ja mächtig los! Vielen Dank an alle für die vielen 
Infos. Die helfen mir sehr. Ich muss das jetzt erst mal für mich 
sortieren und komme dann darauf zurück. Erstmal schönen Feierabend an 
die Werktätigen. Gruß Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.