Telefunken RT200 User Information

2011.X.27
Telefunken RT200
Device Type
Digital Synthesizer Tuner
Start of Sale
Original Price
DEM 799,-
General Description
The medium-sized tuner of the Silver Series includes a feature even not present in the larger RT300: a digital timer/clock, allowing to turn the tuner plus two other devices on and off at preselected times. A single point of time and a daily-repeating time may be programmed. The tuner is never really off: the power switch is in reality only a key that instructs the microprocessor to turn the relay for the outlets and the tuner section off; the display then switches to a 24-hour time display. Since there are only five digits available, the time display doesn't include the seconds.
In contrast to the RT300 and MT1, the other digital tuners in the Silver Line, the RT200 does not allow entering a frequeny via the numeric keys. Note that '16 program memory places' means 8*FM and 8*AM; you can't have more places in one range and less in the other!
Features
UKW/MW, 16 program memory places, manual and automatic station search, PLL tuning system, LED signal strength indicator, exact tuning indicator, digital timer clock, mono switch, AFC (switchable)
Connectors
AF Output (DIN and Cinch), Antenna (75 Ohms asymmetric 240 Ohms symmetric AM/FM), 2 switched outlets for timer operation
Technical Data
(taken from the user's manual and the service manual; I took the values from the service manual in case of contradictions)
FM Receiver
Wave Band:
87.5 - 108 MHz
Circuits:
11, 4 adjustable
Sensitivity:
0.8 µV / 2.6 µV Mono/Stereo
at 26 dB at 75 Ohms
1.6 µV / 5.2 µV Mono/Stereo
at 26 dB at 300 Ohms
Limit Range:
<1.0 µV for -3 dB at 75 Ohms
Intermediate Frequency:
10.7 MHz
IF Bandwidth:
160 kHz
Selection:
65 dB (2 signal method)
Mirror Selection:
>=70 dB
Capture Ratio:
<1 dB
Phase Suppression:
>55 dB
Carrier Signal Suppr.:
>70 dB
Frequency Response:
10 Hz - 16.0 kHz
Distortion Factor:
<0.5 % stereo
<0.3 % mono
at 1 kHz and 40 kHz deviation
Cross Talk Dampening:
>38 dB at 1 kHz
>30 dB at 12.5 kHz
Voltage Ratio:
>62 dB stereo (eff)
>65 dB mono
S/N Ratio:
>64 dB stereo
>67 dB mono
Range of Strength Display:
1 µV - 2 mV
Accuracy of Standards:
0 digit for station frequency in 50 kHz steps
AM Receiver
Wave Band:
MW 522 - 1611 kHz
Sensitivity:
9 µV at 600 kHz
(at 1 kHz 30% Modulation)
Circuits:
6, 2 adjustable
Intermediate Frequency:
450 kHz
IF Bandwidth:
4.8 kHz
Voltage Ratio:
36 dB at U = 1 mV,
Accuracy of Standards:
+/- 1 digit
Range of Strength Display:
8 µV - 5 mV
Frequency step:
9 kHz
General
Components:
13 Integrated Circuits
42 Transistors
43 Diodes, 20 LEDs
Mains Connection:
220 V
Fuses:
1 x T 2.5 A (primary)
1 x T 630 mA
1 x T 100 mA
Dimensions:
435 x 56 x 250 mm
Weight:
~ 4.5 kg
Common Failures
Leaked Accumulator
The RT200 contains a 4.8V NiCd accumulator pack. This is needed to keep the processor and the clock running while the device is disconnected from the mains supply (as I noted above, the microprocessor and its supply is still on when you turn the tuner off). During normal operation, the accumulator will be recharged. However, there is no protection against driving the accumulator into deep discharge when the tuner is disconnected from power for a longer period of time. Similar to the accumulators on older PC mainboards, this will (1) destroy the NiCas and (2) make them leak! If you see a pack with the white, crystal-looking electrolyte leaked out, immediately replace it, since the acid can also destroy traces on the PCB. The cells used in the pack have a non-standard size. Simply use a pack of four standard AA/R6 cells and connect it via some inches of wire to the PCB. Even the smallest AA cells available these days have four times the capacity of the original cells, and there is plenty of space in the case to install the new pack somewhere.
Out of Tune
The second next common failure is a synthesizer crystal out of tune. This becomes notable by the tuner's exact-tuning display: though the correct frequency for a certain station is set, the exact-tuning indicator does not 'show green'. Typically, it will claim a mistune towards lower frequencies. Since the tuning principle is a PLL synthesizer with a closed loop, aging of analog components like the varicaps or OpAmps is out of question, the synthesizer's reference clock must be wrong - just by a couple ppm, but enough...
You may try swapping the crystal, but since you will need to readjust the oscillator anyway, you may try to get the old one back to the correct frequency: the crystal is stabilized with two small ceramic capacitors. Their purpose is to assure a correct start and a stable oscillation, and they also have the property of slightly reducing the crystals resonance frequency. They are located between the crystals's contacts and ground. Try reducing their values (one of them is adjustable, but that is usually not enough) or unsolder them. For example, I had an RT200 that came 'back into tune' after I removed C272...
Linked to the out-of-tune phenomenon is the tuner's incaopability to reliably receive in stereo; an RT200 going mono in the music's rhythm is not uncommon ;-)
Failed +5V Supply
In case the tuner starts acting 'funny' or the display stays dark altogether, it's worth to check the +5V supply of the microprocessor. If it is more than half a volt too low, try to swap the regulating transistor for the +5V supply, T236. Seems this transistor is slightly underdimensioned and may get 'cooked' over time. I usually replace it with a BD135 plus a small heatsink.
Broken Processor
Another failure I had so far was a broken microprocessor (which is a complete project on its own, see below), but this is surely not a standard failure and more due to incompetent handling/repair of the previous owner...
Spare Part Numbers
(taken from Telefunken's 1981-1991 Service Handbook and the Service Manual)
ICs, Transistors,
Diodes
IC201
IC TA7060 AP
339 575 227
IC202
IC HA12412
339 575 228
IC203
IC LB1450
339 575 278
IC204
IC LA1245
339 575 285
IC205
IC LB1426
339 575 279
IC206
IC TCA4500A
339 575 284
IC207
IC NJM4558D
339 575 087
IC208
IC MN6147
339 575 281
IC209
IC MN1455LF (IC209)
339 575 280
IC210
IC MC1741 (IC210)
339 575 123
IC211
IC MB74LS42 (IC211)
339 575 282
IC212
IC NJM7812A (IC212)
339 575 283
transistor BF451
339 556 289
transistor BC639
309 001 313
T204-207,209,224,228,
transistor 2SC1815Y
339 556 292
229,231,233,234,237,
238
T201
transistor 2SC380
339 556 052
T202
transistor 2SK212D
339 556 453
T203
transistor 2SK212C
339 556 454
T208-225,210-223,227,
transistor 2SA1015
339 556 216
230,232
T235
transistor 2SA1020
339 556 456
T236
transistor 2SD592
339 556 455
T101
transistor 3SK45B
339 556 456
T102,104
transistor 2SC535B
339 005 901
T103
transistor 2SC461B
339 005 925
D201-204,207,208
diode 1S446
309 327 925
D205,206
diode KV1225
339 529 322
D209-214,217,220-223,
diode 1S1555
339 529 017
304,305,501-504,506)
D215,216,218,224,225,
diode SR1K
339 529 101
229,230,303
D219
diode KB262
339 529 092
D226
diode DBA10B
339 529 368
D227
diode 05Z7,5X
339 529 317
D228
diode 05Z6,8Z
339 529 318
D301,302
diode 05Z16X
339 529 319
D101-104
diode 1SV53F2
339 529 314
D105
diode 1S2687C
339 529 315
D520,522,523
LED SR531D
339 529 323
D521
LED SG231D
339 529 320
D524-528
LED LN05202P
339 529 321
D503
LED SLP135B
339 529 324
rectifier
339 520 051
Filters
FL201,202
low-pass filter
339 368 014
CF201
ceramic filter 10.7MHz
339 367 116
CF202
ceramic filter 10.7MHz
339 368 016
CF204,205
ceramic filter
339 367 132
L201
coil 10.7MHz (L201)
339 347 039
L202
lowpass filter 195 kHz
339 367 117
L203
choke coil 2.2µH
339 348 655
L204
coil 3.3mH
339 347 045
choke coil 220µH
339 347 038
L206
antenna coil
339 347 139
L207
oscillator coil 100µH
339 347 138
L208
coil
339 367 114
L209
coil
339 367 115
L210,211
choke coil 39µH
339 347 040
symmetrical transformer
339 312 114
L101
coil
339 347 134
L102,104
coil
339 347 135
L105
coil
339 347 136
L108
oscillator coil
339 347 143
L106
coil
339 347 137
L107
coil
339 367 113
Misc. Electrical Parts
accumulator 4.8V
339 283 128
key
339 442 121
mains button w. rod
339 202 109
push button
339 222 132
push button
339 222 124
push button, 2 fold
339 222 125
push button, 3 fold
339 222 126
tuning knob
339 222 123
J201
antenna socket
309 670 928
J202
DIN socket, 5 poles
339 540 114
J203
cinch socket
339 540 146
FLU201
digital display
339 335 108
FU201
fuse T2.5A
309 627 916
FU202,203
fuse T400mA
339 572 004
FU204
fuse T100mA
339 570 023
R220,267
var. res. 10KOhm
339 508 651
R246,279,286
var. res. 20KOhm
339 508 653
R355
var. res. 5KOhm
339 502 015
RY201
relay
339 360 108
S201
push button assembly
339 442 119
XTAL201
crystal 4.5MHz
339 349 154
battery 4.8V/150mAh
339 168 006
FM mixer board
339 337 145
C101,109,112
trimmer
339 510 061
C124
trimmer
339 510 062
station buttons board, cpl.
339 337 137
tact switch w/o diode
339 442 020
tact switch w. diode
339 442 018
scanning board, cpl.
339 442 130
key assembly for it
339 442 120
mains socket
339 480 107
mains switch
339 442 121
mains transformer
339 312 112
mains cable
339 480 106
Misc. Mechanical Parts
cable binder
339 911 713
front plate, cpl.
339 132 128
side part f. front plate
339 232 125
frame f. tuning knob
339 222 145
button frame
339 222 144
buttons guiding, 8 fold
339 222 143
indicator window
339 272 128
display frame
339 337 142
push button holder
339 917 111
push button spring
339 917 110
housing, upper part
339 112 107
housing, rear panel
339 137 110
foot
339 062 112
Available Documents
Manual Service Manual/Circuit Diagram
Goodies
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Replacing The Broken Microprocessor in a Telefunken RT200
Introduction
NOTE: This is a project for people who are absolutely crazy, like me. It took me altogether more than two
months of work to do this project, not counting the hassle to find appropriate information (and realizing that I had to find out things myself). This report mostly has documentational purposes and there is probably noone who has an RT200 with the same problem and can use this text as a 1:1 guide. To do something like this, you need to have experience in reverse engineering devices, understanding both analog and digital electronics, building hardware, and programming embedded controllers. If you try something similar along the lines of this project, you are absolutely on your own and I might not be able to help you out. Especially, you are yourself responsible for anything you break. So for the moment, lean back, read, enjoy, and see if you can reuse some aspects for your projects.
The root of this project is one of my collecting passions, Telefunken Hifi components built in the late 70s/early 80s. The RT200 is an FM/AM Tuner with a built-in timer clock, i.e. you may use it to switch other devices on and off at preprogrammed times. Typically, those were the cassette deck and/or amplifier, either to wake yourself in the morning with a sound quality better than any alarm radio clock or make unattended recordings of radio programs.
I bought this RT200 for a few bucks at a flea market. Normally, there are few things in a synthesizer-based digital tuner that can break: no movable parts except for the buttons, no lamps to burn out, just a NiCd accumulator that may start to leak after a couple of years of operation. This RT200 however was perfectly dead: plug it in and you won't get any reaction to key presses, just a few cryptic symbols on the display.
Checking the parts that are usually broken in such a case (power supply, clock generator) revealed nothing, so it was clear that the central microprocessor chip had passed away. A truly uncommon event, so I guess this happened due to incompetent repair attempts by the previous owner.
Contents Some Reverse Engineering
Since the tuner's PCB is single-sided, it is principally possible to reverse-engineer the device by following the traces, but at least in Germany, there is a much simpler way: go to www.schaltungsdienst.de, the web page of the Lange circuit service in Berlin. This company offers a unique service: it archives schematics and manuals for about any piece of audio/video equipment that was ever sold in Germany. Manufacturers usually only have schematics for the newer devices, but Lange always gets a copy of the schematic and stores it (hopefully) forever. It might even happen that when you ask a manuacturer for an older schematic, they will automatically forward your request to Lange. Of course this service is not free; expect about
20..40 DEM plus shipping, depending on the number of pages to copy. I however think that this is well worth the money, given the amount of time and nerves you save. Fortunately, this schematic already gives the pin functions of the central microprocessor IC (a Matsushita MN4500 by the way, but that doesn't help anyone...):
Pin No.
Name
Direction
Function
1
Vss
----
Ground
2
LW
Output
goes high if switched to long wave AM (unused on the RT200)
3
MW
Output
goes high if switched to medium wave AM
4
FM
Output
goes high if switched to FM
5
OUTLED OUT
Output
goes high to turn tuner on
6
MUT OUT
Output
goes high to mute the AF output
7
LATCH OUT
Output
controls data transfer to the synthesizer chip
8
DIGIT OUT 5
Output
row selectors for the display/keyboard matrix
9
DIGIT OUT 4
Output
"
10
DIGIT OUT 3
Output
"
11
DIGIT OUT 2
Output
"
12
DIGIT OUT 1
Output
"
13
DIGIT OUT 0
Output
"
14
KEY IN 0
Input
sense lines for the keyboard matrix
15
KEY IN 1
Input
"
16
KEY IN 2
Input
"
17
KEY IN 3
Input
"
18
STAT DET
Input
goes high when a signal of sufficient quality is received; needed for auto scan
19
PWR DET
Input
issues a 'reset pulse' after the main supply comes back
20
KEY IN 4
Input
sense lines for the keyboard matrix
21
KEY IN 5
Input
"
22
BCDOUT 0
Output
contols the decoder driving the station key LEDs
23
BCDOUT 1
Output
"
24
BCDOUT 2
Output
"
25
BCDOUT 3
Output
"
26
TEST
Input
unused input
27
RESET
Input
low-active reset for the CPU
28
GND
----
Ground
29
LOCKDET IN
Input
goes high when the synthesizer's PLL has synchronized to the programmed frequency
30
CLOCKIN
Input
250Hz clock from the syntesizer chip for the internal timer
31
SEGMENT OUT 0
Output
segment data for the display + addr/data for the synthesizer chip
32
SEGMENT OUT 1
Output
"
33
SEGMENT OUT 2
Output
"
34
SEGMENT OUT 3
Output
"
35
SEGMENT OUT 4
Output
"
36
SEGMENT OUT 5
Output
"
37
SEGMENT OUT 6
Output
"
38
SEGMENT OUT 7
Output
"
39
Vdd
----
5V supply voltage
40
CPU CLOCKIN
Input
CPU clock input (562.5kHz)
Luckily, these are all only digital functions and the processors works with a standard 5V supply and TTL levels, which simplifies the selection for a new processor:
Selecting a Microprocessor Platform
The microcontroller market offers lots of different families and variants of controllers. Some of them are well-known and for general-purpose use, some of them were designed with a specific application in mind. Since the synthesizer's PLL loop (see below) is completely done in the PLL chip, the main CPU's functionality mainly consists of driving the multiplexed display, querying the keys, running the internal clock for the timer and moving around some data - all not very advanced tasks even a 4-bit CPU could handle (I guess the original MN4500 is a 4-bit CPU!), but most 4-bit-CPUs are not general purpose and difficult to get or require expensive development systems, so let's settle with an 8-bit core. What other things do we need?
Must be available in CMOS, to allow operation from the built-in accumulator for power failures or
for times when the tuner is not connected to a mains supply.
Must be able to run with the slow 562.5kHz clock supplied by the synthesizer chip. Of course we
could add an own oscillator, but I already said that there is no need for much compute power and the low clock helps keeping the power consumption low.
Must be available without problems. Not yet another obscure chip ;-) Development tools must be available for free at best...
Summing up, I settled with a CPU family that is the most widely used family of 8-bit controllers: The 8051 family. Originally introduced by Intel, 8051 derivatives are available from more than a dozen of manufacturers. The two 'standard' ROMless components 8031 and 8032 are available from probably more than 10 different manufacturers. I finally settled for the 80C32, the variant with more internal RAM (needed for the stations' frequency storage) and a third timer (not needed here). By coincidence, I got an TS80C32X2 from Temic, formerly Telefunken Microelectronics. It has the nice capability of running in X2 mode, i.e. an internal frequency divider is turned off and the device runs at double speed with the same external clock. A very nice feature, especially considering the low external clock frequency.
The other stuff around the CPU is pretty basic: an address latch to demultiplex address and data lines, an EPROM for the code (the C32's internal RAM of 256 bytes is sufficient for this task), and some latches and
bus drivers for additional parallel I/O: since the external memory interface eats a lot of I/O lines, an I/O expansion is necessary in some way. I could have used one of the more modern x51 variants with built-in flash EPROM and thereby get most of the processor's pins as I/O, but as I already mentioned, I have a strong preference for components that are not single-sourced.
The whole circuitry is built on a prototype card and wired with thin isolated copper wires, a popular method for prototypes. Needs a bit patience and requires accuracy...the connection to the tuner's mainboard is done via a ribbon cable with a crimped plug on one end and an IC socket on the mainboard; of course, I had to unsolder the broken processor and replace it with a socket. The DIL connector is in my case a simple IC socket with the cable soldered onto it wire by wire; there are however also crimpable connectors available for this end.
Basic Layout of the Software
As you may imagine, it is by far too complex to explain the firmware on a line-by-line basis at this place; I'm also not going to explain the basics of the 80C32's architecture at this place - there's plenty of literature available in the Internet about that. I will therefore describe the basic building blocks and line out how they work together:
Initialization
Of course, the first step after a power-on or a reset is the initialization. The interrupt-driven background processes have to be initialized, and some global memory cells are resetted to meaningful defaults.
Interrupt Routines
There are two interrupt-driven background processes that run on the CPU. At least on a standard C32 without X2 mode, they consume about 70% of the CPU time, which is no miracle given the low clock frequency. The remainder is however still fully sufficient for our purposes.
The first process runs at about 400 interrupts per second and is used to drive the flourescent display and read the keyboard matrix. As with most consumer electronics, the RT200's display is a 'dumb' display that does not the refresh by itself, so the processor has to do the multiplexing itself. It works in the following way: Initially, the CPU outputs the data for the leftmost digit to the SEGMENT OUT pins and pulls the DIGIT OUT 0 line low while DIGIT OUT 1..4 remain high; this way, the contents of the leftmost digit are displayed at the correct place. In the next cycle (==interrupt), the first digit is turned off, the data for the second digit outputted, and the second digit is turned on. This process continues until the last digit is done, and we jump back to the first digit. So at any point of time, only one digit is on, but if this done fast enough, you get the impression of a still display. Similar to a computer monitor, about 60..70 complete cycles are needed per second for a flicker-free display, which results in the interrupt frequency mentioned above for 6 digits.
The other regular process is an interrupt service routine triggered by the precise 250Hz delivered by the synthesizer chip. This clock is used to run a real-time clock needed for the time display and timer functionality. For each interrupt, a byte in memory is incremented. As soon as its value reaches 250, the seconds value is incremented. The rest should be clear ;-)
Since the keyboard matrix and display share their row select, is is only natuaral that the process mentioned first also scans the keyboard. If one row of the matrix is pulled low, any key that is pressed and connected to that row will generate a low level on the keyboard scan lines. The scanned values are stored in 6 consecutive memory cells, resulting in an image of the keyboard matrix stored in memory that gets updated regularly. The x51 family allows to assign either a low or a high priority to each interrupt source. In our case, the keyboard/display multiplexer gets a high priority, while the clock update process works with the standard (low) priority. This is necessary to allow the multiplexer to interrupt a running clock service routine. Especially when one or more counter(s) roll over, the clock update consumes more time and can significantly delay the next multiplex cycle (don't forget we have a rather slow 8032!) and result in a
visible sort of 'flicker' resulting from some segments being turned on longer than others and therefore seeming to be brighter.
Main Loop
The RT200 has a row of buttons that release each other and define the current 'operating mode' of the tuner's 'user interface':
Timer On: Normal tuner operation, timer function enabled; Timer Off: Normal tuner operation, timer function disabled; Timer Set: (Re)program timer settings; Timer Check: Recall/display timer settings; Timer Cancel: Erase timer settings; Clock Set: Set the timer's clock.
Once the system is initialized, the CPU contiuously queries which button is pressed and branches into the appropriate sub-handler. Normally, this handler immediately returns to the main loop once the appropriate actions are done, but it may decide to delay this return in case a multi-key entry (time or frequency) is made. Of course, such an entry is immediately terminated in case the operation mode changes, so the key input routines inside these handlers also regularly check the current mode.
The Timer Section
is not overly complex: The handler for the 'Timer On' and 'Timer Off' modes is basically the same. in 'Timer On' mode, this handler is additionally followed by another routine that compares the current time against the preprogrammed timer values and issues the appropriate on/off sequences when necessary. This check is only done if the seconds value is zero; i.e. there is no problem with the background interrupt process updating the time in the same moment this routine runs. Problems only would occur if the comparison took longer than a minute...
Programming the Synthesizer Chip
The probably hardest part was the programming of the synthesizer chip, the chip responsible for selecting the frequency to be received. Its function is to generate a freely programmable frequency that is mixed with the amplified and coarsely preselected signal from the antenna. When you mix two frequencies properly, you get as a result two new signals with a frequency of the sum resp. difference of both frequencies. In our case, only the difference is interesting. If we program the synthesizer with a frequency that is higher than the signal to be received by a fixed amount, the difference remains constant and the following circuits need not be tunable; they can be accurately adjusted for this frequency. This principle is called Superhet Receiver in contrast to a Straight Receiver where all circuits have to be tuned synchronously to the frequency of the station to be received. Though this is in theory doable, it becomes extremely difficult to keep more than two variable circuits 'in tune'. Two circuits is however not enough for a good selection, so practically all radio receivers, including the simplest pocket radios, are superhet-type receivers.
The synthesizer chip generates a variable frequency with a tunable oscillator whose frequency is divided and compared to a given reference clock. The difference signal is fed back to the oscillator's tuning circuitry. As soon as the oscillator is 'in tune' (i.e. the regulator doesn't have to correct any more), the oscillator outputs a frequency that is the reference clock multiplied by the divisor. So if we make the divisor programmable, we have an oscillator with a programmable frequency!
In case of the RT200, a Matsushita MN6147 is used that contains the reference oscillator, frequency comparator/regulator, and the programmable divider. The oscillator is an LC-circuit inside the RF frontend that contains a Varicap diode. A Varicap is a diode that operates in blocked direction and varies its parasitic capacitance according to a DC voltage applied to it.
From the schematic, we get the MN6147's pinout:
Pin No.
Name
Direction
Function
1
Vss
----
Ground
2
OSC OUT
Output
Goes high if PLL has locked
3
OSC1
----
Connect to 4.5 MHz crystal
4
OSC2
---- " 5
CLOCK1
Output
562.5 kHz clock for CPU
6
CLOCK2
Output
250 kHz clock for CPU timer
7
VCC CLOCK
----
+5V supply
8
PD OUT
Output
Output of Varicap voltage
(externally amplified with 741 OpAmp)
9
LATCH CLOCK
Input
control signal from CPU
10
DAIN 3
Input
Data/Address input from CPU
11
DAIN 2
Input
"
12
DAIN 1
Input
"
13
DAIN 0
Input
"
14
VCC
----
+5V supply
15
AM LOIN
Input
Input from AM oscillator
16
FM LOIN
Input
Input from FM oscillator
17
SW/MW
Input
Select short or medium AM wave band
(unused, tied low)
18
FM/AM
Input
Select AM or FM operation
Though this helps understanding the circuitry, it doesn't help us with out new firmware, since there is no information about how to program the synthesizer to a certain frequency. After a couple of phone calls with Panasonic/Matsushita Germany, it was clear that I would have had to contact the japanese mother company to get this piece of information (the people I spoke to however were quite friendly and trying to help me, I must add at this point!).
Since I also own a still working RT200, there was a simpler way of finding things out: take a working sample, tap onto the data and clock lines, and see what is happening when the frequency changes. I was able to use a digital logic analyzer from HP for this job:
Shown on the LA's display is the result of a single programming cycle. The synthesizer chip contains a couple of registers, each 4 bits wide. With a low-to-high transition of the clock line, a certain register is selected; with a high-to-low transition, data is written to the addressed register. So a single write operation consists of the following steps:
Apply register address to data lines Pull clock line high Apply register data to data lines Pull clock line low again
The frequency to be programmed (remember this is 10.7 MHz resp. 450 kHz higher than the frequency ultimately to be tuned) is simply written in BCD code to the synthesizer's registers. Specifically:
Write 0 to register 2 For FM:
o Write 1 to register 1 o Write hundreds of MHz to register 3 o Write tens of MHz to register 4 o Write ones of MHz to register 5 o Write hundreds of kHz to register 6 o Write 2 to register 7 if +50 kHz, otherwise write 4
For AM:
o Write 2 to register 1 o Divide frequency by 9 o Write hundreds of kHz to register 3 o Write tens of kHz to register 4 o Write ones of kHz to register 5 o Write 0 to register 6 o Write 0 to register 7
Write 7 to register 8
Note that in AM mode, you can only tune in 9 kHz steps!
Adding a Remote Control Input
The larger brother of the RT200, the RT300, features a remote control input to control the tuner via the infrared remote control receiver in the RP300 pre-amplifier. Now that we have a firmware we can extend and modify easily, there is no reason not to add some nice features you had always been missing...
The RP300 contains a Siemens infrared receiver & decoder chip that outputs the code of the pressed button as a 6-bit-code (all bits zero means that no button is pressed). For the 'less intelligent' devices like the cassette deck or the record player, some logic decodes these codes into individual signal lines for the controllable functions. The tuner in contrast directly gets the 6-bit-code and has to do the decoding itself. The reason for this is simple: About 20 buttons of the remote control are assigned to the tuner, and you only have 8 pins in the used DIN connectors. Of course this also saves I/O pins at the tuner's processor, and what is more interesting: the tuner also can 'see' codes destined for other devices in the system and react on them. For example, if you turn the system off via the remote control, the tuner can also turn itself off automatically. And what is more interesting: The buttons on the RP300's front panel run via a virtual remote control whose signal is merged with the IR receiver's output, the tuner also can notice when you switch the signal source to 'Tuner' and turn itself on. Another goodie I added to display the selected signal source on the tuner's display for a few seconds. Adding the remote control input was relatively simple: the signal are fed into the system with an extended low-level keyboard scan routine. Whenever a higher-level routine queries the keyboard, this routine first checks the remote control input for a non-zero code and returns this code in case the code translates to a 'usable' button. Otherwise, the normal key matrix scan is initiated.
Actual Implementation
Below is a photo about how I installed the board in the RT200.
There is space in abundance in the right half of the cabinet, enough to install a standard Eurocard-sized prototype board (160x100mm). Since this was a singular project, I didn't feel the need for a real PCB (and the circuitry underwent quite a couple of changes...). a 40-wire ribbon cable connects the board to the socket of the old processor. I could have used one of these handy DIL connectors for the cable, but you know, it was Saturday and all shops were closed...Due to the low clock frequency, such a long cable is not a problem except for slight interferences during AM receival (who needs that in a Hifi tuner anyway...). All connections, including power supply, are made via this ribbon cable. The only other connector is the RP300 remote control input in the rear right corner.
Program Source
The program's assembler sources are available . To assemble them, you need my own cross assembler AS,
;*************************************************************************** ; * ; RT200 Firmware * ; * ; Changes: * ; 2000-08-30 /AArnold - hour digit 3..9 immediately jumps to hours ones * ; - clear AM+FM after entering start time * ; 2000-09-04 /AArnold - begun decrementing frequency * ; 2000-09-05 /AArnold - begun programming synthesizer * ; 2000-09-10 /AArnold - tuning works :-) * ; 2000-09-11 /AArnold - added usage of program keys * ; 2000-09-12 /AArnold - autorepeat up/down * ; 2000-09-13 /AArnold - started digital frequency input * ; 2000-09-14 /AArnold - added search + PLL lock inputs * ; - mute during PLL adjustment * ; 2000-09-16 /AArnold - mute during freq. wrap * ; 2000-09-17 /AArnold - bail out during AM freq input,search * ; - symbolically calculate delays * ; 2000-09-22 /AArnold - turn off station LED before search * ; - switch to 256 Byte RAM * ; 2000-09-28 /AArnold - add remote control handling * ; 2000-09-30 /AArnold - remote control decoder * ; 2000-10-01 /AArnold - display other input sources * ; - remote ctrl off always turns off * ; 2000-10-03 /AArnold - added step functionality * ; 2000-10-07 /AArnold - only check timer once a minute * ; 2000-10-15 /AArnold - version 1.0 * ; 2000-11-12 /AArnold - do not overwrite band info when tuner is * ; already off * ; 2001-03-02 /AArnold - fix typos in clearing once on/off times (damn!) * ; add copyright string * ; version 1.1 * ; * ;***************************************************************************
cpu 8052
temic equ 1
include "stddef51.inc" include "bitfuncs.inc"
if temic ckcon equ 08fh endif
;--------------------------------------------------------------------------­; macros:
regbank macro no ; register selection if no & 1 setb rs0 elseif clr rs0 endif if no & 2 setb rs1 elseif clr rs1 endif endm
Loading...
+ 35 hidden pages