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
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.
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.
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?
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.
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 |
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?
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.
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
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...
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
Jens M. schrieb: > Disclaimer: Beitrag kann Spuren von Ironie enthalten! Ironie wird immer sofort erkannt!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.