APRS Digipeatersoftware DIGI_NED
Bookmark This site

Error Remedies (Modem Operation)

When you have a problem you should first find out what could have caused it. Besides AX25_MAC, it could be caused by the application using the driver, the modem, the SCC Card, DRSI, PAR96/PICPAR or YAM96 modem, or the transceiver.

This section focuses mainly on use with a modem.

AX25_MAC demands more from your PC compared to the use of a normal TNC. When your PC cannot live up to this demand you will be in trouble. To understand this I will explain how AX25_MAC works when sending and receiving.

When using packet radio the information is transmitted using a synchronous serial link. The PC's serial port can, when used in the normal way, only transmit asynchronous serial information using start and stop-bits which do not exist with packet radio. The serial port can therefore not be used in the normal way. This means AX25_MAC has to handle each and every bit itself: the serial port is only used as a simple latch which can store only one bit.

To enable AX25_MAC to handle the data in a predefined speed of, for example, 1200 bits/s it needs a accurate clock. To transmit the clock has to deliver 1200 ticks/s. The method used to receive data needs a clock which can deliver 3600 ticks/s which makes it possible to constantly synchronize on the received signal. AX25_MAC uses a software PLL. The modem RX line is sampled 3 times per bit to detect if the RX line changed from a logical 1 to 0 or 0 to 1. In the ideal situation such a change should only occur on every third sample. Due to inaccuracies the timing drifts away with respect to the sender. Since three samples are taken per bit the direction of the drift can be detected and compensated.

As accurate clock I used the PC's internal timer which is present in any PC and is normally used for the date/time in DOS. AX25_MAC re-programs the timer to supply an timer-interrupt 3600 times per
second. The interrupt handler (the so called Interrupt Service Routine, ISR) will take control over the CPU and suspend what ever was executing at that moment and will call the functions which take care of sending and receiving. It is inevitable this can only work correctly if all the interrupts are handled in a steady repetition and without too much delay. This will be a problem when running Windows or OS/2, that's the reason why it does not work right when using these systems.

If you compare the load on the PC caused by AX25_MAC compared to a TNC, AX25_MAC will cause a 30 times higher load when using the same baudrate, using 1200 baud it can be compared with a 36000 baud TNC on your PC, which gives problems on a lot of slow PCs. Luckily enough for
us, PCs are getting faster and faster, so this has become a less of a problem over the years. The timing inaccuracies are causing most problems nowadays when AX25_MAC doesn't run under plain DOS. This is still a big difference between using AX25_MAC or using a TNC.

powered by cmsimple.dk | cmsimple-styles.com template modified by PE1MEW