Text preview for : videoi.pdf part of CCIR PAL TV GENERATOR



Back to : tv_generator.rar | Home

Video pattern generator
Introduction
The objective of this project was to construct a Composite Video Pattern Generator, which can be used as a teaching tool in the video field as well as a laboratory instrument, useful for repairing and adjusting television receptors. This instrument is in no way intended to be a commercial set, because I cannot guarantee all the specifications that a professional tool must have. However, the result is a high quality video equipment.

Specifications
Patterns: Color Bars, Raster, Cross-hatch, Points Controls: independent R, G, B, luminance, chrominance and color burst Video output: composite video, 1 Vp-p at 75 ohms load Color system: PAL-N (option PAL-B/G/I, changing chroma oscillator crystal) Scanning system: Interlaced (Bars and Raster), Non-Interlaced (Cross-hatch and Points) Power supply: 12 Vdc (8 x AA alkaline batteries) Power consumption: 70 mA maximum (White Raster) Applications: television receptors adjustment (purity, convergence, linearity, etc.), troubleshooting of video section in television sets and video recorders, teaching of video generation techniques

General overview
The human eye is capable to "see" images using "receptors" located on the retina. There are two types of receptors, classified by function: the Rods, in charge of black and white perception, and the Cones, responsible for color discrimination. If we concentrate only in the cones, we will discover that there are three types of them: one type reacts to Red light, another to Green light and the last group reacts to Blue light. We only "catch" three colors; however, we actually "see" all the colors. Here comes a basic rule of color generation: to know the color information of an object, we only need to know the relative amount of the three basic colors: Red, Green and Blue. By this reason, these three colors are known as Primary Colors, because we can make any other color by combining them in the adequate proportion. Now, let's think for a moment. When we learned the colors at school our teacher probably told us that the primaries were Red, Yellow and Blue. Another strange fact: if we observe the way in which ink printers create colors, we will notice that there are only three color cartridges, Magenta, Yellow and Cyan. But they print in full color. Someone must be wrong...

This "confusion" results from the existence of two groups of primary colors: the Additive Primaries and the Subtractive Primaries. In order to understand the difference between them let's see a couple of examples. Suppose that we illuminate a white wall with a green light. Obviously we will see green, because this is the color reflected by the wall. If we now turn the light into red, again we will see red. But, if we illuminate the wall with both colors (green and red) at the same time, the resulting color will be yellow, which comes from the sum or addition of the two original colors. As we can observe, the sum of this colors gives a new, secondary, color. By this reason, the colors Red, Green and Blue are called Additive Primaries. Now suppose that we paint a white paper with yellow paint, and we illuminate it with white light (it contains all the colors). Obviously we will see a yellow paper. Why?. Because the paint retains (subtract) all the components of the white light except the yellow, which is reflected to our eyes. If we now add cyan paint, the resulting color is green. This fact reveals that the mixture of paints (yellow and cyan) subtracts all the colors except green. How can we explain this?. Let's see some equations. If we add all additive primaries we obtain white: RED LIGHT + GREEN LIGHT + BLUE LIGHT = WHITE LIGHT If we add only two of them: RED LIGHT + GREEN LIGHT = YELLOW LIGHT RED LIGHT + BLUE LIGHT = MAGENTA LIGHT GREEN LIGHT + BLUE LIGHT = CYAN LIGHT Here we see the key of our analysis: the so called Subtractive Primaries can be obtained by adding two of the additive primaries. So, when we see the yellow paint, we are really seeing red and green light added. This means that the yellow paint catches the blue color of the white light and reflects the other two. In the same way, the cyan paint catches the red light, reflecting green and blue. Now, the result of our experiment is evident. If we mix yellow paint (captures blue) with cyan paint (captures red), the only color that is effectively reflected is green, which is just the color we saw. What would happen if we mix all subtractive colors together?. Obviously we will see black, because all "lights" are captured: CYAN + MAGENTA + YELLOW = BLACK One question still remains unanswered. Why do we often hear that primary colors are red, yellow and blue?. The answer is simple. We learn the colors through painting at school. We already know that primaries for paint are the subtractive ones, that is yellow, magenta and cyan. These two last colors, due to their "reddish" and "bluish" tones are usually called "red" and "blue", respectively.

Colors in television The image in a color television receiver is obtained by the emission of light that results from the excitation of a phosphor layer that covers the interior of the glass screen, when it is hit by an electron beam that periodically scans the visible surface. If we speak about "emission of light" we must immediately think of "Additive Processes", which leads us to the conclusion that the Primary Colors in television are Red, Green and Blue (RGB). Actually, three electron beams are generated inside a television tube (CRT, Catode Ray Tube), each of them hit a particular kind of phosphor on the screen, which will generate a characteristic color, depending on the chemical structure of that phosphor. Naturally, this three colors are Red, Green and Blue. All the rest of the colors (and I really mean "all") can be obtained by the adequate combination of these three primary colors. Basic color bar generator A basic color bar generator should be like this: · it should have three outputs, one for each primary color · each of these outputs should be connected to the corresponding input of the TV · the set should generate combinations of its outputs, as shown on the following chart:

Blue Red Green

1 1 1

0 1 1

1 0 1

0 0 1

1 1 0

0 1 0

1 0 0

0 0 0

white

yellow

cyan

green

magenta

red

blue

black

In this chart "1" means "presence" of color, while "0" means "absence". In practice, these "ones" and "zeros" are represented by voltage levels, e.g. 5V and 0V respectively. As you can see it is very easy to construct a generator of this kind, because you only need a minimum of digital electronics to obtain this bars. So, why should we complicate ourselves with a more elaborated design?. Most of TV receivers and VCRs (Video Cassette Recorders) DO NOT have RGB inputs, these can only be found on some video monitors reserved for professional field (Broadcasting). Home appliances usually have a standard input of "Composite Video", labeled "VIDEO IN". By this reason, our generator should be able to convert the components, RGB, into this "Composite Video".

Composite Video Red, Green and Blue signals (RGB) contain all the information needed to retrieve an image, but they would need a large bandwidth to be transmitted, and television is based on the "transmission of images". In order to reduce this bandwidth, and at the same time keep compatibility between the original "Black and White" transmissions and the new "Color System", the "Composite Video Signal" was created. Into this signal the transmitter sends the information of "brightness" (Luminance) and "color" (Chrominance) of an image, and also all the necessary synchronization pulses to correctly retrieve the image on the TV screen. Which are these so called "synchronization pulses"?. To answer this question we should first analyze how an image is formed on the TV screen. An electron beam (let's consider only one, we know they are actually three) scans the screen from left to right and from top to bottom, as shown on the diagram on the right. While scanning the screen it excites the phosphor layer with variable strength, generating a visible image. As it is shown, although the image is formed in a two coordinate screen (a plane), it is actually generated by a number of consecutive lines. In this way the signal comes into the TV, line by line. By this reason, it is obvious that we need to synchronize the electron beam that scans the screen with the scanning generated in the TV station. If we did not synchronize the beam, the images would appear cut, with diagonal stripes, or with wrong color information (like it happens with some "coded" channels, in which the synchronization pulses are removed). So, let's synchronize the beam scanning. We must tell it where a new image begins (Vertical Synchronism or "V") and where each line begin (Horizontal Synchronism or "H"). Obviously the H. Sync. has higher frequency components than V. Sync., because there are many lines inside each image. How many lines are there inside an image?. The answer is: "it depends on the transmission norm we are considering". Transmission Norms A norm is a collection of parameters adopted as rules inside a particular group or region in order to keep a clear and well-defined relation between the component parts. In television, a norm is exactly that. The transmission norms establish the parameters that transmitters and receivers must comply in order to keep a reliable, error-free communication between them. Each norm establish a lot of parameters; let's analyze the ones that are directly related to our project.

Horizontal Frequency (H): frequency of line repetition. Horizontal Synchronism(H Sync): pulse that indicates the beginning of a line. Vertical Frequency (V): frequency of image repetition (fields). Vertical Synchronism (V Sync): pulse that indicates the beginning of an image (field). Horizontal Lines: amount of lines that compose a complete image (frame). Color Subcarrier (SC): frequency that is modulated to send color information. Color Burst: SC burst to "synchronize" color demodulation. Front Porch: image-free interval previous to H. Sync. Back Porch: image-free interval after H Sync., where color burst lies. This can be summarized in the following diagram:
BURST

Front Porch

H Sync.

Back Porch

Imagen

When defining parameters I mentioned two words that I intentionally left unexplained: Field and Frame. Now it is time to explain them, but first we must have a clear idea of what "Interlaced Scanning" means. As previously stated, in order to reconstruct the image on the TV screen the electron beam scans it line by line, from top to bottom. A single screen scan would be enough to create a complete image. However, this is not true. The beam has to scan the whole screen twice in order to have the image completed. Let's analyze this fact carefully. When a video camera at the TV studio scans the image to transmit, it does it by dividing the image into horizontal lines. This lines are transmitted to the TV receiver, in order to be sequentially reproduced on the screen. However, the lines are not transmitted consecutively (line 1, 2, 3, 4, ...); actually odd lines are transmitted first (line 1, 3, 5, ...) and then even lines (line 2, 4, 6, ...). In the same way the electron beam scans the screen, generating the odd lines first and then the even ones. This is the reason why the electron beam must scan the screen twice to generate the full image. The two "half-images" are called "Fields" (Odd and Even, respectively), while the full image is known as "Frame"(see figure).

In this figure the Odd Field is indicated as "I", while the Even Field is "II". As you can see, the odd field ends with half a line and the even field begins also with half a line. This is a characteristic fact of one of the two scanning systems we will analyze: the Interlaced Scanning and the NonInterlaced Scanning.

The figure analyzed is a clear example of Interlaced Scanning. Its name comes from the fact that lines of consecutive fields are actually "interlaced". Which is the advantage of this scanning technique?. It permits a higher image repetition frequency without increasing the bandwidth requirements. How?. Through the transmission channel the TV station sends a fixed number of images per second (let's say 25). The TV receiver reproduces these 25 images per second, but it actually scans the screen 50 times per second. Due to our eye characteristics, it looks like 50 images per second, greatly reducing image flicker. As an additional fact, the same thing happens in projection systems (cinema). The first movies were filmed on a 16 frames/second basis, making flicker really visible. Nowadays the standard fixed 24 frames/second for movies, and the shutter opens twice in each "photo", with the same purpose of reducing flicker. Back to television, if this is such a good method, there is no need to discuss about the NonInterlaced option. However, the Interlaced Scanning, so good for pictures with movement, fails when trying to reproduce static images, such as charts, lines, etc. Why? Let's imagine a white horizontal line fixed in the middle of the screen over a black background. When the odd field is scanned the line will appear at a certain position on the screen; in the even field this position will naturally change, it will be one line upper or lower than the odd field. The next field will be an odd one, returning to the original position, and so on. So, the line will have vertical flicker, not very noticeable, but really hard if you had to be looking at the screen for quite a long time. How can be solved?. Easy. You must use Non-Interlaced Scanning. This is much easier. Simply, the scanning lines follow the same path in both fields. This technique is widely used in computer monitors and in pattern generators while outputting signals like "Cross-hatch" or "Points".
Interlaced Scanning
Field I II I II I II I II I II I II I II I Field I,I' I,I' I,I' I,I' I,I' I,I' I,I' I,I'

Field I II I II I II I II I II I II I II I

Non-Interlaced Scanning

"N" Norm There are many television transmission norms in the world today, named with letters from "A" to "N". Some are obsolete, but most of them are still in use. Let's see the actual values established for the parameters previously defined, as stated in the "N" norm definition. This norm is only used in three countries: Argentina, Uruguay y Paraguay. Horizontal Frequency (H): 15626 Hz (line duration: 64 µsec.) Horizontal Synchronism(H Sync): 4.8 µsec. Vertical Frequency (V): 50 Hz (field duration: 20 msec.) Vertical Synchronism (V Sync.): 2.5 horizontal lines Horizontal Lines: 625 lines per frame (312.5 lines per field) Color Subcarrier (SC): 3.582056 MHz Color Burst: 9 to 11 SC cycles Front Porch: 1.9 µsec. Back Porch: 5 µsec. If we compare these values with those established by European norms (B, G, I) we will see that they are quite similar, with the exception of the color subcarrier (European systems use 4.43 MHz). To conclude with norms, let's see a diagram that represents an actual video signal (N norm), using the scanning methods previously analyzed (see figure on next page). Let's concentrate only in the interlaced method. It is clear that the V. Sync. pulse covers 2½ horizontal lines (line 1, 2, and half of line 3 in field I). But there is something not mentioned before: there are some Pre and Post-Equalizing pulses. What is this?. The V. Sync. detection in the TV receiver is accomplished by integrating the incoming video signal. When it reaches a preset value it triggers the vertical oscillator. The integration is practically done by mean of an RC circuit. The voltage of the capacitor is used to trigger the system. But, depending on the image previous to the V. Sync. the start voltage of the capacitor could change, making the triggering of the vertical oscillator very image-dependent, thus provoking unstable pictures. To avoid this we need to make the starting voltage of the capacitor equal from field to field, and that is exactly the reason to include the equalization pulses This pulses have a frequency twice the horizontal (H), and the duration is half of H. Sync. They are applied during a period equal to 2½ horizontal lines. Finally, the "positive" pulses that appear inside de V. Sync. pulse are called Serrated Pulses, and the reason to include them is to keep the horizontal oscillator locked during V. Sync. period. The duration of this pulses is equal to H. Sync.

TV scanning methods - PAL-N system
Interlaced scanning
Pre-equalizing pulses Vertical synchronism Post-equalizing pulses

Field I

621

622

623

624

625

1

2

3

4

5

6

Field II
Pre-equalizing pulses Vertical synchronism

Post-equalizing pulses

309

310

311

312

313

314

315

316

317

318

319

Non-interlaced scanning
Pre-equalizing pulses Vertical synchronism Post-equalizing pulses

Field I

620

621

622

623

624

1

2

3

4

5

6

Field I'
Pre-equalizing pulses

Vertical synchronism

Post-equalizing pulses

308

309

310

311

312

313

314

315

316

317

318

Color systems Color television appeared many years after the "Black and White" system was invented, so it had to adapt itself to the system in use. By this reason, it was necessary to develop compatible color systems, in order to let the old TV receptors reproduce the new color signals (in black and white, obviously) and also the new TV receivers should be able to reproduce signals coming from old monochrome transmitters. Nowadays we can find three color systems spread around the world: NTSC, PAL and SECAM. We will study the PAL system, because we want to generate it. The PAL system basically sends color information by phase modulating a color carrier with two signals, which have a relative phase shift of 90º. Let's see the process step by step. We previously stated that the color information of an object is fully contained in the three primary components, Red, Green and Blue. Those are the colors actually "seen" by our eyes and, if we transmit them, then we transmit the real color of the object. What we did not say is the fact that our eyes have different sensibility to each of the three primaries. We are very "receptive" to Green, not so much to Red and less to Blue. If we put it into relative percentages of sensibility: GREEN: RED: BLUE: 59% 30% 11%

This means that the brightness of an object (Luminance or simply "Y"), which is the total amount of light reflected by the object, can be represented like this: Y = 0.30Red + 0.59Green + 0.11Blue From now on we will name Red as "R", Green as "G" and "B" will mean Blue, so: Y = 0.30R + 0.59G + 0.11B This Luminance information (Y) is the brightness of each combination of colors on the screen, and is the only information used for monochrome transmissions. Let's see the relative brightness of each color, calculated from the previous equation: Color: White Yellow Cyan Green Magenta Red Blue Black R 1 1 0 0 1 1 0 0 G 1 1 1 1 0 0 0 0 B 1 0 1 0 1 0 1 0 Y 1.00 0.89 0.70 0.59 0.41 0.30 0.11 0.00

1.00 0.80 0.60 0.40 0.20 0.00
White Yellow Cyan Green Magenta Red B lue B lack

Luminance (Y) is one of the basic components of the video signal and, as we already stated, it is obtained as the sum of the RGB components of the image. So, it would be enough to send the information of only two of the three components (RGB) together with Y, because the missing component can be easily obtained from the Y signal, making simple calculations at the receptor side. Since G is the predominant component in Y it will not be sent separately, and will be recovered from Y in the TV receptor. Remember that all this complication arose from the fact that sending RGB as separate components would need a considerable bandwidth, which is not allowed because we are trying to accommodate a color transmission in the same channel previously assigned for monochrome signals. So we will send Y, R and B. But R and B will not be sent as components, we will send the so called "color difference signals": R-Y and B-Y. Let's see how these signals look like: Color: White Yellow Cyan Green Magenta Red Blue Black R 1 1 0 0 1 1 0 0 G 1 1 1 1 0 0 0 0 B 1 0 1 0 1 0 1 0 R-Y 0.00 0.11 -0.70 -0.59 0.59 0.70 -0.11 0.00

R-Y
1.00 0.50 0.00
White Yellow Cyan Green Magenta Red B lue B lack

-0.50 -1.00

Color: White Yellow Cyan Green Magenta Red Blue Black

R 1 1 0 0 1 1 0 0

G 1 1 1 1 0 0 0 0

B 1 0 1 0 1 0 1 0

B-Y 0.00 -0.89 0.30 -0.59 0.59 -0.30 0.89 0.00

B-Y
1.00 0.50 0.00
White Yellow Cyan Green Magenta Red Blue Black

-0.50 -1.00

R-Y 1.00

This "Color Difference Signals" will be the responsible of phase modulating the color subcarrier. The B-Y signal will modulate the subcarrier with a phase shift of 0º, while the R-Y signal does the same but with a 90º phase shift. So, if we construct an X-Y graph of this two signals we obtain a "Phase Diagram" of the different colors, as seen on the right.

Red 0.50 Magenta

Yellow -1.00 -0.50 0.00 0.00 B-Y 0.50 Blue 1.00

-0.50 Green Cyan -1.00

R-Y 1.00

At the same time, and this is characteristic for the PAL system, the 90º shifted subcarrier will have another 180º phase shift from one horizontal line to the next, this means that R-Y modulates the 90º shifted subcarrier in one line, and for the next line it will modulate the subcarrier at 270º, and so on. This characteristic gives the name of the system: PAL = Phase Alternation by Line.

Red Green 0.50

Cyan Magenta

Yellow -1.00 -0.50 Yellow 0.00 0.00 0.50 Blue

Blue B-Y 1.00

-0.50 Green Red -1.00 Cyan Magenta

Once modulated, the color subcarrier is called "Chrominance Signal" or "C". Adding the luminance signal (Y) plus the chrominance signal (C) we finally obtain the signal we were looking for, the COMPOSITE VIDEO SIGNAL.

Construction of a video pattern generator
A pattern generator should be capable not only to produce the RGB components but also to generate the corresponding composite video signal, with all its components: synchronism pulses, luminance, modulated color subcarrier, etc. The first thing we must define is the amount and type of patterns the set should generate, because this will directly determine the characteristics and complexity of the circuit to develop. Our generator will be capable of producing four basic patterns:

It will also provide independent control for the three components, R, G and B, as well as for luminance (Y) and chrominance (C). This fact greatly increases the pattern generation capability, because the Raster could be of any of the eight colors, the Bars could be monochrome or adopt different color combinations, as shown in the following diagrams:

As an additional control we can suppress the color burst, which is very useful to troubleshoot the color processing stages of the TV receiver. In order to select which of the four basic patterns will be generated we have two switches (S4 y S5), selecting a pattern as show in the following table:

Switches: S5 OFF S5 ON

S4 OFF BARS CROSS-HATCH

S4 ON RASTER POINTS

The OFF (or "zero") and ON (or "one") states mean that the middle terminal of the switch is connected to ground (0V) or VCC (5V) potentials respectively. Once defined the characteristics of the generator let's see how to do it. Synchronism and pattern generation Time base, synchronism and the four basic patterns generation will be accomplished by a microcontroller (PIC16F84-10), so this stage would be basically a Software development. At the end of this stage the microcontroller will be able to do the following: · Generate a stable time base, from which all required times will be obtained. · Generate in one of it pins, the one that corresponds to Bit 0 of PORTB, all the necessary synchronism pulses to comply with the requirements of the selected television norm (N), without adding video to this signal (pure synchronism signal). · Generate the R, G and B signals, using three different pins. This signals will have the information required to generate the selected pattern, and will not have added synchronism pulses (pure video signal). The pin designation will be the following: PORTB (2) = B (Blue) PORTB (3) = R (Red) PORTB (4) = G (Green) (The corresponding bit of PORTB is indicated between brackets) · Accept in two of its pins, configured as inputs, the commands from switches S4 and S5, in order to let the user select the pattern to generate. This two inputs correspond to two Bits of PORTA, as shown: PORTA (2) = S4 PORTA (3) = S5 Now we have the objectives clear; let's see how the program works. It is basically composed of four independent blocks, each of them has a complete set of routines in order to generate a complete image. In the section of Diagrams I included a flowchart of the program, which will help to understand the following explanation. After a first stage, in which all variables are defined and loaded with the initial values, the program reads the status of the two switches, S4 and S5. Depending on the combination of

these switches the program will be addressed to one of the four mentioned blocks, corresponding to one of the four basic patterns. Each one of these blocks begins with the generation of pre-equalizing pulses, then vertical synchronism with the corresponding serrated pulses, followed by post-equalizing pulses. After that the field is selected: odd or even. This is very important because we are working with interlaced scanning, which means that the first line of the odd field is a full line, while the even field begins with half line. If we did not take this into account the result would be an unstable image, with a noticeable flicker in the upper side. Note that in two of the four patterns (Cross-hatch and Points) we will use non-interlaced scanning, in order to avoid the flicker of the fixed horizontal lines or points. In this case the first line is always a full one; in order to compensate for this, we need to eliminate one preequalizing pulse (half horizontal line), as previously shown in video signal diagrams. Then the program generates 3 or 4 horizontal lines without video, depending on the field, so as to compensate for time differences (only in interlaced patterns). Now it is time to activate the RGB lines. After generating the horizontal synchronism and back porch time, the video signal that correspond to the selected pattern is issues through the RGB lines. How is this achieved?. Let's see an example. Suppose that we are generating a color bar signal. There are eight bars, so we must divide the usable video time into eight equal intervals. Before going on we must remember that the usable video time is the time during which the generated information is effectively shown on the TV screen. In PAL-N each line has a duration of 64 µsec.; this time includes 4.8 µsec. of horizontal synchronism, 1.9 µsec. of front porch and 5 µsec. of back porch. So we only have 52.3 µsec. remaining to show video, and this is our usable time. Back to our example, we already defined the eight intervals. Let's see how we should issue the RGB signals in each of them:

Blue Red Green

1 1 1

0 1 1

1 0 1

0 0 1

1 1 0

0 1 0

1 0 0

0 0 0

white

yellow

cyan

green

magenta

red

blue

black

As you can see this is a well known diagram. We already mentioned it to describe what a simple RGB bar generator would do, and that is just what we are doing now.

Let's analyze the generation of a Raster signal. This is much simpler: all the usable time we must issue a high level signal through the three RGB lines. But, if all lines RGB are active at the same time, the result will always be a white Raster. True. Color selection is achieved by controlling the RGB signals outside the microcontroller, purely by hardware (three switches). To generate lines or points we need more elaborated routines, because we must control not only the time in the horizontal direction but also the number of lines in the vertical direction, in order to keep an equal distance between lines or points. However, this is not a problem; we just add another variable to keep the count of lines and that's all. What about RGB lines?. They are all active when drawing lines or points, so they are white. If you analyze the program you will probably notice that the generation of horizontal lines and video signals within a video block is repeated three times. There is a simple reason for this. In each run inside a video block a complete field is generated, that is 312.5 horizontal lines. To achieve this we must count the lines and keep this count in a certain register. Since I used an eight bit signed register, the maximum number that can be stored is 127, so I needed to load it three times to achieve the required number of lines. To finish with the video block, after each field is completed the program evaluates the condition of the two switches (S4 and S5). If they remain unchanged, the program continues within the same block; if there is any change it jumps to the initial evaluation routine, and then goes to the selected video block. And that's all. May be there is still an unclear issue... how do I calculate the time inside the program?. When you use a microcontroller this is very easy, you only have to count "instruction cycles". Using a 10 MHz oscillator and knowing the fact that each instruction cycle needs four oscillator cycles, we can easily calculate the time of one instruction cycle: Tosc = 1/fosc Tins = Tosc x 4 Tins = 1/10 MHz x 4 = 0.4 µsec. If each instruction cycle lasts for 0.4 µsec., then we need to count 12 cycles in order to obtain the horizontal synchronization pulse: 12 x 0.4 µsec. = 4.8 µsec. In the same way we can calculate the cycles needed for a complete horizontal line, 160 instruction cycles: 160 x 0.4 µsec. = 64 µsec. So, this is what the program does. It counts instructions and set or clear, as required, the Bit 0 of PORTB. In our case, during the equalization and synchronization pulses (H or V) this bit will be clear (0V) and the rest of the time it will remain set (5V).

Composite Video generation As we already stated, it is not enough to generate RGB signals to have a practical video generator, that can be connected to TV receivers or VCRs. We must combine this RGB signal with the synchronization signal and generate Composite Video, which is a practical signal to test receivers. We already analyzed all the steps needed to obtain Composite Video from RGB, so we will not repeat it here. It is a hard process if you have to do it "manually". Fortunately, there is an integrated circuit, designed by Motorola®, that complies with the following specifications: · · · · · · It has four signal inputs: Synchronism, R, G and B From RGB it generates luminance (Y) Has an in-circuit oscillator, which generates the color subcarrier Generates B-Y and R-Y signals, with the phase alternation required by the PAL system From B-Y and R-Y generates chrominance (C) Mixes Y with C to obtain Composite Video

As you can see, a single IC does exactly what we need. And it requires exactly the four signal we already generated with the microcontroller. This IC is the MC1377, RGB ENCODER, and with a few external components it can be fully functional. In fact, I used the configuration suggested in the data sheet, with some modifications to improve its performance. The crystal used corresponds to PAL-N color subcarrier frequency, 3.582056 MHz. If you want to use this equipment in Europe, in those countries using PAL-B/G/I, you only need to replace the crystal by another one with the proper frequency (4.43 MHz) and make minor adjustments to the TRIMMER CV1. In this stage we have control of all the signals: RGB, Y, C and color burst. There are basically six switches that derives the signal to ground, directly (RGB) or through a capacitor (Y, C). In the case of color burst, to eliminate it, the switch (S8) disconnect a capacitor (C04), responsible for generating the burst duration time. Let's see a summary of the switches and their function: Switch S1 S2 S3 S4 S5 S6 S7 S8 S9 Function G ON/OFF R ON/OFF B ON/OFF PROGRAM PROGRAM Y ON/OFF C ON/OFF BURST ON/OFF POWER

Once obtained the Composite Video signal, its level and impedance are adjusted by sending it through a buffer circuit, composed by Q1, R14 and R15. This concludes the signal generation, and practically the circuit description. I only have to mention that the two main integrated circuits have different supply voltages, so you can see a main power supply of 12V (8 AA alkaline batteries, this is a portable set) for the video sector (U2 and Q1), and a secondary power supply of 5V, obtained from the main one, for the microcontroller (U1).

Practical implementation of the video generator
In the following pages you will find all the necessary information, diagrams and drawings, to construct a really working video generator. I have included the printed circuit board layout in actual size, so you only need to print it on a transparency film and transfer to the board. Note that the circuit is inverted, in order to make easier the mounting stage, using the component layout diagram provided. In the actual board the text "Generador de video" should be in the right direction. About the program, I put it entirely in the final pages. You only need to copy it into a text editor, assemble it and load it into the PIC, using the tools provided by Microchip® or the ones you may have developed. IMPORTANT ADVICE: While loading the program into the PIC, do not forget to set the option for crystal (XT) operation. Otherwise, the crystal will not oscillate. And that's all. If everything is correctly placed the set will run as expected from the beginning. The only adjust you may have to do is to move CV1 until you have a clear color reproduction, which is quite simple.

I hope this project could be of use. I'll be expecting your comments, suggestions and also improvements you may think about. If you want a Spanish copy of this material do not hesitate to contact me.

Marcelo F. Maggi - April, 1998 [email protected]

Block diagram

S1 R10 S8 R11 U2 N/P C14 X2 CV1 C16 +12V C17 S3 C04

S2

R01 C05 C06 C07 R09 S6 C02 C08 R13 R12 C03 C12 C13 C15 R14 Q1 R05 R07 R06 S7 R08 C09 R02 R03

1 2 3 4 5 6 7 8 9 10 SYNC R G B -Y X2 X1 REF GND VCC -Y COUT VOUT R-Y CIN B-Y

20 19 18 17 16 15 14 13 12 11

C18

V. OUT R15

+5V Fuente +12V S4 +12V S5 C10 X1 C11 Fuente +5V R16 +5V C19 C20 1 2 C21 U3 3 +12V BT1 C22 D1 S9

Schematic diagram

R04 C01

1 2 3 4 5 6 7 8 9 RA1 RA0 OSC1 OSC2 VDD RB7 RB6 RB5 RB4

U1 RA2 RA3 RA4/RTCC MCLR VSS RB0/INT RB1 RB2 RB3 18 17 16 15 14 13 12 11 10

GENERADOR DE VIDEO Size Document Number A Date: April 5, 1998 M.M. 7/97 Sheet 1 of REV A 1

Parts list

R01 R02 R03 R04 R05 R06 R07 R08 R09 R10 R11 R12 R13 R14 R15 R16 C01 C02 C03 C04 C05 C06 C07 C08 C09 C10 C11 C12

3K9 3K9 3K9 1K 1K 1K 1K 1K 1K 68K 82K 10K 2K2 4K7 2K7 100 0.1µ 100µ/16V 100µ/16V 1500p 10µ/25V 10µ/25V 10µ/25V .02µ .01µ 15p 15p 0.1µ

C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 CV1 D1 Q1 U1 U2 U3 X1 X2 S1 S2 S3 S4 S5 S6 S7 S8 S9 BT1

0.1µ 220p 0.1µ 18p 150p .02µ 100µ/16V 0.1µ 0.1µ 100µ/16V TRIMMER 5-45p 1N4007 BF494C PIC16F84-10 MC1377 LM78L05 10.000MHz 3.582056MHz 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH 2 POSITION SWITCH
8 AA ALKALINE BATTERIES

Note: to change the color system from PAL-N to PAL-B/G/I replace X2 by a 4.43MHz crystal

Printed circuit board

5 cm

Component layout

Mounted board

Program

; ; ; ;

***** GENERADOR DE PATRONES PARA VIDEO ***** VERSION 2.01 GEN201.ASM (C) M. MAGGI - 30/08/1997 list p=16f84

;DEFINICION DE PUERTOS: ;PORTB(0): SYNC ;PORTB(2): AZUL ;PORTB(3): ROJO ;PORTB(4): VERDE ;NO USAR EL BIT 1 DEL PORTB ;PARA LOS PATRONES DE RASTER Y BARRAS EL VIDEO ES ENTRELAZADO ;LOS PUNTOS Y EL CROSSHATCH SE HACEN CON VIDEO NO ENTRELAZADO PARA EVITAR EL ;"FLICKER" CBLOCK 0X0C ;VARIABLES DURHOR,CANTHB1,CANTHB2,BLKLIN,CANTPRE,DUREQU,CANTVER,DURVER,CANTPOS TIEMPO,FIELD,CARRY WHITE,YELLOW,CYAN,GREEN,MAGEN,RED,BLUE,BLACK,CANTLIN EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU CLRF CLRF BSF MOVLW MOVWF CLRF BCF ; MOVLW MOVWF RRF MOVLW MOVWF LECTURA BTFSS GOTO BTFSC GOTO GOTO LECT1 BTFSC GOTO 0 CARRY CARRY B'10101010' FIELD PORTA,3 LECT1 PORTA,2 INICIO3 INICIO2 PORTA,2 INICIO1 ;VARIABLE CONTROLAR EL ESTADO DEL CARRY ;CARRY FLAG A "0" ;CONTROL DEL CAMPO ;SE LEE EL TECLADO ;SE USAN LOS BITS 2 Y 3 DEL PUERTO A ;FUNCION: BIT3 BIT2 ;BARRAS 0 0 ;RASTER 0 1 ;CROSSHATCH 1 0 ;PUNTOS 1 1 5 85H 6 86H 3 5 B'00011101' B'00011001' B'00010101' B'00010001' B'00001101' B'00001001' B'00000101' B'00000001' PORTA PORTB STATUS,RP0 B'11111111' TRISA TRISB^80H STATUS,RP0 ;TODOS LOS BITS EN 0 ;TODOS LOS BITS EN 0 ;SELECCIONA BANCO DE REGISTROS 1 ;TODOS LOS BITS DEL PUERTO A COMO ENTRADAS ;TODOS LOS BITS DEL PUERTO B COMO SALIDA ;SELECCIONA BANCO DE REGISTROS O

ENDC PORTA TRISA PORTB TRISB STATUS RP0 BLANCO AMARIL CYANO VERDE MAGENT ROJO AZUL NEGRO ;

;***** BARRAS DE COLOR ***** INICIO RRF MOVLW FIELD D'3' ;CARRY PASA AL BIT 7 DE FIELD, BIT 0 AL CARRY ;LINEAS SIN VIDEO LUEGO DE LA POSECUALIZACION

BTFSS MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF PREEQU BCF MOVLW MOVWF NOP NOP NOP BSF DECFSZ GOTO NOP NOP DECFSZ GOTO NOP BCF MOVLW MOVWF DECFSZ GOTO BSF MOVLW MOVWF DECFSZ GOTO NOP DECFSZ GOTO NOP BCF MOVLW MOVWF NOP NOP NOP BSF DECFSZ GOTO NOP NOP DECFSZ GOTO NOP

FIELD,0 D'4' BLKLIN D'99' CANTHB1 D'3' CANTHB2 5 CANTPRE 5 CANTVER 5 CANTPOS PORTB,0 D'23' DUREQU

;SI ES EL CAMPO 1 SE HACEN SOLO 3 LINEAS ;4 LINEAS EN EL CAMPO 2 ;CANTIDAD DE LINEAS HORIZONTALES EN UN BLOQUE ;CANTIDAD DE BLOQUES (3) ;PULSOS DE PREECUALIZACION ;PULSOS DE SINCRONISMO VERTICAL ;PULSOS DE POSECUALIZACION ;DURACION: 2,6µS ABAJO

LOOP1

PORTB,0 DUREQU LOOP1 CANTPRE PREEQU PORTB,0 D'22' DURVER DURVER LOOP2 PORTB,0 2 TIEMPO TIEMPO TIME CANTVER VERT PORTB,0 D'23' DUREQU

;SE COMPLETAN LOS 32µS ARRIBA

VERT LOOP2

;DURACION: 4.8µS ARRIBA ("SERRATED PULSES")

TIME

POSEQU

LOOP3

PORTB,0 DUREQU LOOP3 CANTPOS POSEQU

;SE EMPIEZAN A BARRER LAS LINEAS HORIZONTALES ;LA PRIMERA LINEA ES COMPLETA EN EL CAMPO 1, EN TANTO QUE ES SOLO MEDIA LINEA ;EN EL CAMPO 2, Y NO COMIENZA CON UN PULSO DE SINCRONISMO RLF NOP NOP PORTB ;1 O 1/2 LINEA H SEGUN EL CAMPO ;SE PASA EL CARRY AL BIT 0 DEL PUERTO B ;CAMPO 1: 1 LINEA Y PULSO DE SINC (CARRY=0)

NEXT LOOP

NOP NOP NOP NOP NOP MOVLW BTFSS ADDLW MOVWF BSF BTFSS GOTO BCF NOP DECFSZ GOTO NOP

;CAMPO 2: 1/2 LINEA SIN PULSO DE SINC (CARRY=1)

D'21' PORTB,0 D'27' DURHOR PORTB,0 FIELD,0 NEXT PORTB,1 DURHOR LOOP

;TIEMPO PARA 1/2 H (80 CICLOS TOTAL) ;SI HAY H SYNC (CAMPO 1) SE AGREGA MAS TIEMPO ;TIEMPO PARA 1 H (160 CICLOS TOTAL)

;SE PIERDE 1 CICLO MAS (SOLO 1/2 H)

;SE HACEN 3 O 4 LINEAS EN BLANCO PARA CUMPLIR CON LAS 625 LINEAS DE LA NORMA N ;SI ES EL CAMPO 1 SE HACEN SOLO 3 LINEAS, YA QUE ANTES SE HIZO 1 DE MAS HORIZ TIME3 BCF MOVLW MOVWF DECFSZ GOTO NOP NOP MOVLW MOVWF BSF DECFSZ GOTO NOP DECFSZ GOTO NOP PORTB,0 2 TIEMPO TIEMPO TIME3 D'48' DURHOR PORTB,0 DURHOR LOOPH3 BLKLIN HORIZ

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

LOOPH3

;SE HACEN 3 BLOQUES DE 99 LINEAS HORIZONTALES ;3*(99+1)=300 LINEAS HORIZ1 TIME1 BCF PORTB,0 MOVLW 2 MOVWF TIEMPO DECFSZ TIEMPO GOTO TIME1 NOP NOP MOVLW D'31' MOVWF DURHOR BSF PORTB,0 NOP NOP NOP MOVLW 5 MOVWF WHITE MOVWF YELLOW MOVWF CYAN MOVWF GREEN MOVWF MAGEN MOVWF RED MOVWF BLUE MOVWF BLACK MOVLW BLANCO

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

WHITE1

YELLO1

CYAN1

GREEN1

MAGEN1

RED1

BLUE1

BLACK1

MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO NOP NOP NOP NOP DECFSZ GOTO NOP BCF MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF MOVLW MOVWF BSF NOP NOP NOP MOVLW MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVLW MOVWF DECFSZ

PORTB WHITE WHITE1 AMARIL PORTB YELLOW YELLO1 CYANO PORTB CYAN CYAN1 VERDE PORTB GREEN GREEN1 MAGENT PORTB MAGEN MAGEN1 ROJO PORTB RED RED1 AZUL PORTB BLUE BLUE1 NEGRO PORTB BLACK BLACK1

CANTHB1 HORIZ1 PORTB,0 2 TIEMPO TIEMPO TIME2 D'99' CANTHB1 D'31' DURHOR PORTB,0 ;BIT 0 BAJO ;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

HORIZ2 TIME2

;BIT 0 ALTO

WHITE2

5 WHITE YELLOW CYAN GREEN MAGEN RED BLUE BLACK BLANCO PORTB WHITE

YELLO2

CYAN2

GREEN2

MAGEN2

RED2

BLUE2

BLACK2

GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO NOP NOP NOP NOP DECFSZ GOTO NOP

WHITE2 AMARIL PORTB YELLOW YELLO2 CYANO PORTB CYAN CYAN2 VERDE PORTB GREEN GREEN2 MAGENT PORTB MAGEN MAGEN2 ROJO PORTB RED RED2 AZUL PORTB BLUE BLUE2 NEGRO PORTB BLACK BLACK2

CANTHB2 HORIZ1

;ESTA ULTIMA LINEA/MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF NOP NOP MOVLW BTFSC MOVLW MOVWF NOP MOVLW BTFSC ADDLW MOVWF BSF BTFSS GOTO NOP NOP DECFSZ GOTO RRF BTFSC GOTO BTFSC GOTO NOP PORTB,0 0 FIELD,0 1 CARRY D'15' FIELD,0 D'24' DURHOR PORTB,0 FIELD,0 NEXT1 DURHOR LOOPH5 CARRY PORTA,2 LECTURA PORTA,3 LECTURA ;BIT 0 PASA A NIVEL BAJO ;PIERDO TIEMPO PARA ;HACER LOS 4,8µS ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC

;BIT 0 PASA A NIVEL ALTO

NEXT1 LOOPH5

;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H

NOP NOP NOP NOP GOTO

INICIO

;***** RASTER ***** INICIO1 RRF MOVLW BTFSS MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF APREEQU BCF MOVLW MOVWF NOP NOP NOP BSF ALOOP1 DECFSZ GOTO NOP NOP DECFSZ GOTO NOP AVERT BCF MOVLW MOVWF ALOOP2 DECFSZ GOTO BSF MOVLW MOVWF ATIME DECFSZ GOTO NOP DECFSZ GOTO NOP APOSEQU BCF MOVLW MOVWF NOP NOP NOP BSF ALOOP3 DECFSZ GOTO NOP NOP DECFSZ FIELD D'3' FIELD,0 D'4' BLKLIN D'99' CANTHB1 D'3' CANTHB2 5 CANTPRE 5 CANTVER 5 CANTPOS PORTB,0 D'23' DUREQU ;DURACION: 2,6µS ABAJO

PORTB,0 DUREQU ALOOP1 CANTPRE APREEQU PORTB,0 D'22' DURVER DURVER ALOOP2 PORTB,0 2 TIEMPO TIEMPO ATIME CANTVER AVERT PORTB,0 D'23' DUREQU

;SE COMPLETAN LOS 32µS ARRIBA

;DURACION: 4.8µS ARRIBA ("SERRATED PULSES")

PORTB,0 DUREQU ALOOP3 CANTPOS

GOTO NOP RLF NOP NOP NOP NOP NOP NOP NOP MOVLW BTFSS ADDLW MOVWF BSF BTFSS GOTO BCF NOP DECFSZ GOTO NOP

APOSEQU PORTB ;1 O 1/2 LINEA H SEGUN EL CAMPO

ANEXT ALOOP

D'21' PORTB,0 D'27' DURHOR PORTB,0 FIELD,0 ANEXT PORTB,1 DURHOR ALOOP PORTB,0 2 TIEMPO TIEMPO ATIME3 D'48' DURHOR PORTB,0 DURHOR ALOOPH3 BLKLIN AHORIZ PORTB,0 2 TIEMPO TIEMPO ATIME1 D'44' DURHOR PORTB,0

;TIEMPO PARA 1/2 H (80 CICLOS TOTAL) ;TIEMPO PARA 1 H (160 CICLOS TOTAL)

;SE PIERDE 1 CICLO MAS (SOLO 1/2 H)

BCF MOVLW MOVWF ATIME3 DECFSZ GOTO NOP NOP MOVLW MOVWF BSF ALOOPH3 DECFSZ GOTO NOP DECFSZ GOTO NOP AHORIZ1 BCF MOVLW MOVWF ATIME1 DECFSZ GOTO NOP NOP MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW MOVWF ALOOPH4 DECFSZ GOTO

AHORIZ

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

B'00011101' PORTB DURHOR ALOOPH4

MOVLW MOVWF DECFSZ GOTO NOP BCF MOVLW MOVWF ATIME2 DECFSZ GOTO MOVLW MOVWF MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW MOVWF ALOOPH5 DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO NOP

B'00000001' PORTB CANTHB1 AHORIZ1 PORTB,0 2 TIEMPO TIEMPO ATIME2 D'99' CANTHB1 D'44' DURHOR PORTB,0

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

B'00011101' PORTB DURHOR ALOOPH5 B'00000001' PORTB CANTHB2 AHORIZ1

;ESTA ULTIMA LINEA/MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF NOP NOP MOVLW BTFSC MOVLW MOVWF NOP MOVLW BTFSC ADDLW MOVWF BSF BTFSS GOTO ANEXT1 NOP NOP ALOOPH6 DECFSZ GOTO RRF BTFSS GOTO BTFSC GOTO NOP NOP NOP PORTB,0 0 FIELD,0 1 CARRY D'15' FIELD,0 D'24' DURHOR PORTB,0 FIELD,0 ANEXT1 DURHOR ALOOPH6 CARRY PORTA,2 LECTURA PORTA,3 LECTURA ;BIT 0 PASA A NIVEL BAJO ;PIERDO TIEMPO PARA ;HACER LOS 4,8µS ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC

;BIT 0 PASA A NIVEL ALTO

;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H

NOP NOP GOTO

INICIO1

;***** CROSSHATCH ***** INICIO2 RRF NOP NOP MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BPREEQU BCF MOVLW MOVWF NOP NOP NOP BSF BLOOP1 DECFSZ GOTO NOP NOP DECFSZ GOTO NOP BVERT BCF MOVLW MOVWF BLOOP2 DECFSZ GOTO BSF MOVLW MOVWF BTIME DECFSZ GOTO NOP DECFSZ GOTO NOP BPOSEQU BCF MOVLW MOVWF NOP NOP NOP BSF BLOOP3 DECFSZ GOTO NOP NOP DECFSZ GOTO NOP FIELD D'4' BLKLIN D'28' CANTHB1 D'10' CANTHB2 4 CANTPRE 5 CANTVER 5 CANTPOS PORTB,0 D'23' DUREQU

;SOLO 4 PULSOS POR SER VIDEO NO ENTRELAZADO

;DURACION: 2,6µS ABAJO

PORTB,0 DUREQU BLOOP1 CANTPRE BPREEQU PORTB,0 D'22' DURVER DURVER BLOOP2 PORTB,0 2 TIEMPO TIEMPO BTIME CANTVER BVERT PORTB,0 D'23' DUREQU

;SE COMPLETAN LOS 32µS ARRIBA

;DURACION: 4.8µS ARRIBA ("SERRATED PULSES")

PORTB,0 DUREQU BLOOP3 CANTPOS BPOSEQU

BLOOP

NOP NOP NOP NOP NOP NOP NOP NOP MOVLW NOP NOP MOVWF NOP NOP NOP NOP BCF NOP DECFSZ GOTO NOP

;1/2 LINEA H (NO ENTRELAZADO)

D'21' DURHOR

;TIEMPO PARA 1/2 H (80 CICLOS TOTAL)

PORTB,1 DURHOR BLOOP PORTB,0 2 TIEMPO TIEMPO BTIME3 D'48' DURHOR PORTB,0 DURHOR BLOOPH3 BLKLIN BHORIZ PORTB,0 2 TIEMPO TIEMPO BTIME1 9 CANTLIN PORTB,0

BHORIZ

BCF MOVLW MOVWF BTIME3 DECFSZ GOTO NOP NOP MOVLW MOVWF BSF BLOOPH3 DECFSZ GOTO NOP DECFSZ GOTO NOP BHORIZ1 BCF MOVLW MOVWF BTIME1 DECFSZ GOTO NOP NOP MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP NOP NOP NOP BLOOPHA MOVLW ADDWF SUBWF NOP MOVLW

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

B'00011100' PORTB PORTB 2

MOVWF BLOOPH4 DECFSZ GOTO DECFSZ GOTO NOP MOVLW ADDWF SUBWF NOP NOP NOP NOP NOP NOP DECFSZ GOTO NOP BCF MOVLW MOVWF BTIMEZ DECFSZ GOTO NOP NOP MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW MOVWF BLOOPHZ DECFSZ GOTO MOVLW MOVWF NOP NOP NOP BCF MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP

DURHOR DURHOR BLOOPH4 CANTLIN BLOOPHA B'00011100' PORTB PORTB

CANTHB1 BHORIZ1 PORTB,0 2 TIEMPO TIEMPO BTIMEZ D'44' DURHOR PORTB,0

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

B'00011101' PORTB DURHOR BLOOPHZ B'00000001' PORTB

BTIME2

PORTB,0 2 TIEMPO TIEMPO BTIME2 D'28' CANTHB1 D'44' DURHOR PORTB,0

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

NOP NOP NOP MOVLW MOVWF BLOOPH5 DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO NOP

B'00011101' PORTB DURHOR BLOOPH5 B'00000001' PORTB CANTHB2 BHORIZ1

;ESTA ULTIMA MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF NOP NOP MOVLW BTFSC MOVLW MOVWF NOP MOVLW NOP NOP MOVWF BSF NOP NOP NOP NOP NOP BLOOPH6 DECFSZ GOTO RRF BTFSC GOTO BTFSS GOTO NOP NOP NOP NOP NOP GOTO PORTB,0 0 FIELD,0 1 CARRY D'15' DURHOR PORTB,0 ;BIT 0 PASA A NIVEL BAJO ;PIERDO TIEMPO PARA ;HACER LOS 4,8µS ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC

;BIT 0 PASA A NIVEL ALTO

DURHOR BLOOPH6 CARRY PORTA,2 LECTURA PORTA,3 LECTURA

;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H

INICIO2

;***** PUNTOS ***** INICIO3 RRF NOP NOP MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF FIELD D'4' BLKLIN D'28' CANTHB1 D'10' CANTHB2 4 CANTPRE 5 CANTVER 5 CANTPOS

CPREEQU BCF MOVLW MOVWF NOP NOP NOP BSF CLOOP1 DECFSZ GOTO NOP NOP DECFSZ GOTO NOP CVERT BCF MOVLW MOVWF CLOOP2 DECFSZ GOTO BSF MOVLW MOVWF CTIME DECFSZ GOTO NOP DECFSZ GOTO NOP CPOSEQU BCF MOVLW MOVWF NOP NOP NOP BSF CLOOP3 DECFSZ GOTO NOP NOP DECFSZ GOTO NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW NOP NOP MOVWF NOP NOP NOP NOP BCF NOP DECFSZ GOTO

PORTB,0 D'23' DUREQU

;DURACION: 2,6µS ABAJO

PORTB,0 DUREQU CLOOP1 CANTPRE CPREEQU PORTB,0 D'22' DURVER DURVER CLOOP2 PORTB,0 2 TIEMPO TIEMPO CTIME CANTVER CVERT PORTB,0 D'23' DUREQU

;SE COMPLETAN LOS 32µS ARRIBA

;DURACION: 4.8µS ARRIBA ("SERRATED PULSES")

PORTB,0 DUREQU CLOOP3 CANTPOS CPOSEQU ;1/2 LINEA H

D'21' DURHOR

;TIEMPO PARA 1/2 H (80 CICLOS TOTAL)

PORTB,1 DURHOR CLOOP

CLOOP

NOP BCF MOVLW MOVWF CTIME3 DECFSZ GOTO NOP NOP MOVLW MOVWF BSF CLOOPH3 DECFSZ GOTO NOP DECFSZ GOTO NOP CHORIZ1 BCF MOVLW MOVWF CTIME1 DECFSZ GOTO NOP NOP MOVLW MOVWF BSF CLOOPHZ DECFSZ GOTO NOP DECFSZ GOTO NOP BCF MOVLW MOVWF CTIMEZ DECFSZ GOTO NOP NOP MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP NOP NOP NOP CLOOPHA MOVLW ADDWF SUBWF NOP MOVLW MOVWF CLOOPH4 DECFSZ GOTO DECFSZ CHORIZ PORTB,0 2 TIEMPO TIEMPO CTIME3 D'48' DURHOR PORTB,0 DURHOR CLOOPH3 BLKLIN CHORIZ PORTB,0 2 TIEMPO TIEMPO CTIME1 D'48' DURHOR PORTB,0 DURHOR CLOOPHZ CANTHB1 CHORIZ1 PORTB,0 2 TIEMPO TIEMPO CTIMEZ 9 CANTLIN PORTB,0

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

B'00011100' PORTB PORTB 2 DURHOR DURHOR CLOOPH4 CANTLIN

GOTO NOP MOVLW ADDWF SUBWF NOP NOP NOP NOP NOP NOP NOP NOP NOP BCF MOVLW MOVWF CTIME2 DECFSZ GOTO MOVLW MOVWF MOVLW MOVWF BSF NOP NOP NOP NOP NOP NOP NOP NOP NOP CLOOPHB MOVLW ADDWF SUBWF NOP MOVLW MOVWF CLOOPH5 DECFSZ GOTO DECFSZ GOTO NOP MOVLW ADDWF SUBWF NOP NOP NOP NOP NOP NOP DECFSZ GOTO NOP

CLOOPHA B'00011100' PORTB PORTB

PORTB,0 2 TIEMPO TIEMPO CTIME2 D'28' CANTHB1 9 CANTLIN PORTB,0

;PIERDO TIEMPO PARA ;HACER LOS 4,8µS

;BIT 0 ALTO

B'00011100' PORTB PORTB 2 DURHOR DURHOR CLOOPH5 CANTLIN CLOOPHB B'00011100' PORTB PORTB

CANTHB2 CHORIZ1

;ESTA ULTIMA MEDIA LINEA, LA 305, LA USO PARA CARGAR VARIABLES BCF NOP NOP MOVLW PORTB,0 0 ;BIT 0 PASA A NIVEL BAJO ;PIERDO TIEMPO PARA ;HACER LOS 4,8µS ;NO USAR EL BIT 1 DEL PORTB, BIT 0 = SYNC

BTFSC MOVLW MOVWF NOP MOVLW NOP NOP MOVWF BSF NOP NOP NOP NOP NOP CLOOPH6 DECFSZ GOTO RRF BTFSS GOTO BTFSS GOTO NOP NOP NOP NOP NOP GOTO END

FIELD,0 1 CARRY D'15' DURHOR PORTB,0

;BIT 0 PASA A NIVEL ALTO

DURHOR CLOOPH6 CARRY PORTA,2 LECTURA PORTA,3 LECTURA

;CARRY = 1 SI 1 H, CARRY = 0 SI 1/2 H

INICIO3