>
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:
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:
500500200
Weight: Less
than 2 lbs.
5V AC/DC
Power Adapter
System
Block Diagram
Atmel
AVR AT90S8515
Caller
ID Microcontroller
Holtek
HT9032D
Calling
Line Identification Receiver + Supporting Hardware
Microchip
24FC515
512Kb
EEPROM 00Caller ID Data
Packet
Whacker/ Realtek RTL8019AS
Full
Duplex Ethernet Controller
Atmel
AVR AT90S8515
HTTP
+ TCP/IP Microcontroller
UART
1200bps
I2C Protocol
I2C Protocol
Proprietary
Protocol
LAN
Telephone
Network
Microchip
24FC515
512Kb
EEPROM 00Web Pages
I2C Protocol
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 00Reads + 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 0030 bytes 0000100bit pattern
Type of message
001 byte 00For Caller ID is always 04h
Length of
message 001 byte
Month/Day/Hour/Minute
002 bytes for each field
Phone number
0010 bytes
Line Owner00
Name 00Up to 15 bytes
Check sum
001 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 00ooked00data (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
008 bytes total
Phone number
0010 bytes
Line Owner00
Name 00Up 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
Atmel
AVR AT90S8515
Caller
ID Microcontroller
Holtek
HT9032D
Calling
Line Identification Receiver + Supporting Hardware
Microchip
24FC515
512Kb
EEPROM 00Caller ID Data
Packet
Whacker/ Realtek RTL8019AS
Full
Duplex Ethernet Controller
Atmel
AVR AT90S8515
HTTP
+ TCP/IP Microcontroller
UART
1200bps
I2C Protocol
I2C Protocol
Proprietary
Protocol
LAN
Telephone
Network
Microchip
24FC515
512Kb
EEPROM 00Web Pages
I2C Protocol
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 00UDP/TCP
UDP
Used for
implementing DHCP
00onnectionless00
00No 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
Questions?