300 likes | 1.13k Views
Senior Design Project 2004/2005 Web-Enabled Caller Identification 12/09/2004 Barron Shurn Daniel St. Clair Professor Soules Design Idea - Function Caller Identification device accessible via the Web All functions Web based, no physical interface to device Web Page Function:
E N D
Senior Design Project 2004/2005Web-Enabled Caller Identification 12/09/2004 Barron Shurn Daniel St. Clair Professor Soules
Design Idea - Function • Caller Identification device accessible via the Web • All functions Web based, no physical interface to device • Web Page Function: • View/Query Call Log • Edit Call Log • Download/Archive Call Log
Design Idea - Details • Used on a Home/Business LAN • Broadband - Always Connected • Size: • Dimensions: 5”X5”X2” • Weight: Less than 2 lbs. • 5V AC/DC Power Adapter
System Block Diagram Telephone Network Holtek HT9032D Calling Line Identification Receiver + Supporting Hardware Atmel AVR AT90S8515 Caller ID Microcontroller UART 1200bps I2C Protocol Microchip 24FC515 512Kb EEPROM – Caller ID Data I2C Protocol Packet Whacker/ Realtek RTL8019AS Full Duplex Ethernet Controller Atmel AVR AT90S8515 HTTP + TCP/IP Microcontroller LAN I2C Protocol Proprietary Protocol Microchip 24FC515 512Kb EEPROM – Web Pages
MDR Specification • A functioning Caller ID data decoder. The Caller ID data will be decoded and stored in a semiconductor memory device. This data will be verifiable using a Personal Computer running microcontroller development software • A microcontroller with a minimally functional TCP/IP stack implemented so that it can respond to ping requests
Caller Identification • MDR Specification was Successful! • Decoded data from phone line • Stored data to EEPROM • Read data on EEPROM and displayed using UART + PC Terminal Software for verification
Caller Identification - Hardware • Holtek HT9032 - Decodes Caller ID data • Atmel AVR AT90S9515 – Reads + Parses Data From HT9032 and sends to EEPROM • Microchip 512Kb EEPROM - Stores Caller ID Data
Caller ID Data • Theory of operation • Data transmitted between first & second rings • Uses Frequency Shift Keying • Logic 1 sent as 1200 Hz signal • Logic 0 sent as 2200 Hz signal • Data sent at 1200 bps using standard ASCII codes • Data Transmission Scheme • Initiation String – 30 bytes – ’01’ bit pattern • Type of message – 1 byte – For Caller ID is always 04h • Length of message – 1 byte • Month/Day/Hour/Minute – 2 bytes for each field • Phone number – 10 bytes • Line Owner’s Name – Up to 15 bytes • Check sum – 1 byte
Holtek Device • Two devices available: HT9032C / HT9032D • Both devices decode Caller ID data from Frequency Shift Keying to ASCII codes which are sent out of the chip at 1200bps • Difference between two devices • HT9032C • 16 pin • outputs both raw data and “cooked” data (w/o initialization string) • Ring + Carrier Detection pins • HT9032D • 8 pin • Requires micro-controller to detect ring
Micro-Controller • Atmel AT90S8515 • Crystal Frequency: 4MHz (up to 16MHz) • Robust Instruction Set (130 Instructions) • AVR GCC C Complier (freeware) • Hardware UART • Low Power Sleep Mode • 512 byte EEPROM + 512 byte SRAM
EEPROM • 512 Kbit EEPROM (64Kbyte) • I2C Compliant • Protocol that allows EEPROM access using two lines (Serial Data Line, Serial Clock Line) • Allows for 1400 logged calls • Month/Day/Hour/Minute – 8 bytes total • Phone number – 10 bytes • Line Owner’s Name – Up to 25 bytes (8+10+25 bytes)*8 bits= 344 bits/call 512000 bit EEPROM/264 bits = 1400 calls stored *Plan to limit call log size to 500 calls
Caller ID Problems Encountered • Holtek HT9032C device not operating as expected • Device clock issues • Read UART/Write EEPROM conflict
Next Steps • Caller ID • Design manageable storage scheme • Validation • Indexing • Reliability
System Block Diagram Telephone Network Holtek HT9032D Calling Line Identification Receiver + Supporting Hardware Atmel AVR AT90S8515 Caller ID Microcontroller UART 1200bps I2C Protocol Microchip 24FC515 512Kb EEPROM – Caller ID Data I2C Protocol Packet Whacker/ Realtek RTL8019AS Full Duplex Ethernet Controller Atmel AVR AT90S8515 HTTP + TCP/IP Microcontroller LAN I2C Protocol Proprietary Protocol Microchip 24FC515 512Kb EEPROM – Web Pages
What is the Ethernet Controller • Allows device to directly connect to a network • Handles all hardware complexities • Delivers raw packets to the application • Very similar to the network interface card (NIC) in your typical Desktop PC
How to interface the Ethernet Controller • Setup microcontroller ports for I/O • NIC Initialization: • Perform Hard Reset • Perform Soft Reset by reading/writing a value to the NIC • Write to NIC configuration registers • Set MAC Address • Accept only broadcast packets (ARP + DHCP Requests) + packets intended for set MAC address
Ethernet Controller Interface • Software Emulation of 9346 EEPROM • Used to store NIC configuration data • 9346 is a 16 bit x 1k serial EEPROM • Only need 3 bytes of data from the EEPROM for using the NIC in 8-bit mode • Emulate by using 3 pins on the microcontroller • EEDO, EEDI, EESK • Time sensitive code written in inline-assembly
TCP/IP Implementation • Written in C • Main Loop • Checks NIC for a packet by polling the NIC interrupt pin • Packet Processing • Examine Packet Header (first four bytes) • Determines Packet Length • Read entire packet to microcontroller SRAM • Determine Packet Type
Packet Types • Address Resolution Protocol (ARP) • Bind IP Address to MAC Address • Internet Protocol (IP) • Internet Control Message Protocol (ICMP) • User Datagram Protocol (UDP) • Transmission Control Protocol (TCP)
ARP Packet Handling • ARP Response Packet Contents • Source MAC Address • Source IP Address • Destination MAC Address • Destination IP Address • Padding characters to meet minimum packet size requirements (64 bytes) • Number of bytes to be transmitted
IP Packet Handling - ICMP • ICMP is the protocol used for the ping function • Response packet is essentially an echoed packet with source and destination fields swapped.
ICMP Packet Handling • ICMP Packet Contents • Packet Type (ICMP = 0x00) • Destination IP Address • Source IP Address • Destination MAC Address • Source MAC Address • IP Header Checksum • Original Packet Data + Checksums
IP Packet Handling – UDP/TCP • UDP • Used for implementing DHCP • ‘Connectionless’ – No acknowledgement sent • TCP • Used for receiving HTTP (Web Server) Requests
Ethernet Controller Problems • Realtek RTL8019AS could not be reset in software. • Unable to configure • Unable to debug
Debugging • Connected HTTP + TCP/IP Microcontroller to UART + PC Terminal Software • Wrote software to perform a register dump of the NIC • NIC was unreadable • Examined NIC drivers for other processors including: • Microchip PIC 16F877 and Rabbit 2000T
Debugging • Simulated code in software environment • Monitored Registers and I/O • Quadruple Checked Wiring / Hardware Setup • Power Supply, Clock • Replaced Realtek RTL8019AS • Posted Messages on support forums
Next Step • Exhausted all of our current resources • Contact makers of the Ethernet Controller for more documentation • Worst Case Scenario: • Obtain new Ethernet controller • Crystal Semiconductor CS8900A • Popular + Well Documented