MICROCHIP PIC16C54RC programmieren

OP #8042840
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

#8042846
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.

#8042859
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.

#8042865
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?

#8042872
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
#8042873
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?

#8042886
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
Gast #8042900
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...

#8042911
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren