This project might be old news by now, but there have been a couple of new developments and I haven't announced it on TD yet, so here I go. (Re-)Introducing... TashTalk!
Elevator Pitch
It's a LocalTalk interface, contained entirely within a single Microchip PIC12F1840 (8 pins, ~$1.50) microcontroller.
It handles all the time-sensitive aspects of LocalTalk, bidirectionally bitbanging the SDLC and FM0 (a.k.a. differential Manchester) based protocol at the data link and physical layers, sending and responding to control frames with CRC calculation and checking, and collision avoidance and retransmission. It can also respond to any number/combination of node IDs for use in bridging applications. It can be interfaced directly to user-mode software on a Raspberry Pi or BeagleBone or full PC, or it can be part of a larger embedded system. It slices, it dices, etc.
Project Status
Stable enough to release a v2.0.0.
Caveats
Because of the PIC12F1840's limited memory and the way its UART is used, the host's UART needs to be able to handle a baud rate of 1 Mbps. Conventional UARTs don't expect to be pushed beyond 115.2 kbps. In addition, the PIC has a 128-byte receiver queue, which is considerably smaller than the largest possible LocalTalk frame (605 bytes). As such, the host needs to respect when the CTS hardware flow control line is deasserted so the queue doesn't overflow and be quick about resuming transmission when CTS is reasserted so the queue doesn't underflow either.
Also, "single-chip" doesn't include the separate and necessary driver/receiver chip for RS-422/485. Sorry. =)
Code
Recent Developments
TashTalk v1 had separate pins for LocalTalk input and output, though after the fact, I realized that this wasn't necessary, and made a new version of the firmware that frees up the PIC's reset (!MCLR) pin. Grounding the reset pin holds the PIC in reset, which tristates its pins, allowing other circuitry in the same system to use the RS-422/485 transceiver for other purposes. This, for example, allows the same port to act as a LocalTalk port or a conventional serial port.
I made a simple Raspberry Pi hat to use this design (even though it doesn't use the new feature), and I have enough parts to sell a handful of kits for it at cost for $12 plus shipping - DM me if interested!
Elevator Pitch
It's a LocalTalk interface, contained entirely within a single Microchip PIC12F1840 (8 pins, ~$1.50) microcontroller.
It handles all the time-sensitive aspects of LocalTalk, bidirectionally bitbanging the SDLC and FM0 (a.k.a. differential Manchester) based protocol at the data link and physical layers, sending and responding to control frames with CRC calculation and checking, and collision avoidance and retransmission. It can also respond to any number/combination of node IDs for use in bridging applications. It can be interfaced directly to user-mode software on a Raspberry Pi or BeagleBone or full PC, or it can be part of a larger embedded system. It slices, it dices, etc.
Project Status
Stable enough to release a v2.0.0.
Caveats
Because of the PIC12F1840's limited memory and the way its UART is used, the host's UART needs to be able to handle a baud rate of 1 Mbps. Conventional UARTs don't expect to be pushed beyond 115.2 kbps. In addition, the PIC has a 128-byte receiver queue, which is considerably smaller than the largest possible LocalTalk frame (605 bytes). As such, the host needs to respect when the CTS hardware flow control line is deasserted so the queue doesn't overflow and be quick about resuming transmission when CTS is reasserted so the queue doesn't underflow either.
Also, "single-chip" doesn't include the separate and necessary driver/receiver chip for RS-422/485. Sorry. =)
Code
GitHub - lampmerchant/tashtalk: An interface for Apple's LocalTalk networking protocol.
An interface for Apple's LocalTalk networking protocol. - lampmerchant/tashtalk
github.com
Recent Developments
TashTalk v1 had separate pins for LocalTalk input and output, though after the fact, I realized that this wasn't necessary, and made a new version of the firmware that frees up the PIC's reset (!MCLR) pin. Grounding the reset pin holds the PIC in reset, which tristates its pins, allowing other circuitry in the same system to use the RS-422/485 transceiver for other purposes. This, for example, allows the same port to act as a LocalTalk port or a conventional serial port.
I made a simple Raspberry Pi hat to use this design (even though it doesn't use the new feature), and I have enough parts to sell a handful of kits for it at cost for $12 plus shipping - DM me if interested!