PIC
PICDEM.net
For at få picdem.net op og køre har vi brugt
- PIC18F452
- RTL8019AS
- HiTech C 9.50
- MPLAB IDE 7.43
- Microchip TCP/IP Stack v. 2.20
Læg mærke til at stack'en skal være v2.20 da dette er den eneste version der understøtter RTL8019AS chippen.
For at få det til at køre har vi gjort følgende:
- Brugt projektfilen fra demo-programmet, da denne allerede har de forskellige settings på plads. Vi prøvede at lave vores egen projektfiler men uden større held.
- Modificeret ARPtsk.C. For at få arp til at køre på fornuftig vis bør linie 202 ændres fra
if(Cache.IPAddr.Val == IPAddr->Val || Cache.IPAddr.Val == AppConfig.MyGateway.Val)
Til
if(Cache.IPAddr.Val == IPAddr->Val)
- For at få TCP koden til at køre ordentligt har vi også lavet en compiler
#define
forSTACK_USE_TCP
via project->build options->project->compiler. Det gælder for flere af USE_* sætningerne i stacktsk.h at for at være sikker på at de tager effekt så skal man lave en sådan compiler makro.
Pic 18F452: I2C Programming W/O interrupts
(Remember to set direction SCK/SDA ports)
Initialization
- Enable Serial Bit = 1 (SSPEN=SSPCON<5>)
- Synchronous Serial Port Mode Select Bits = 1011 (SSPM3-SSPM0=SSPCON<3:0>
Common Start
- Start Enable Bit = 1 ( SEN=SSPCON2<0>)
- DelayMs(1)
- Load Address into SSPBUF
- Test Buffer Full status bit (BF=SSPSTAT<0>)
- loop until buffer bit is cleared
- Test acknowledge bit (ACK=SSPCON2<6>)
- if not acknowleded, abort
Write:
- Load data byte into SSPBUF
- Test Buffer Full status bif (BD=SSPSTAT<0>)
- Loop until bit is cleared
- Test acknowledge bit (ACKSTAT=SSPCON<6>)
- if not acknowledged, abort
Read
- Recieve Control Enable bit = 1 (RCEN=SSPCON<3>)
- Test Buffer Full status bit (BF=SSPSTAT<0>)
- Set acknowledge data=1 if data is recieved (ACKDT=SSPCON2<5>)
- Enable Acknowlede bit=1 (ACKEN=SSPCON<4>)
- Read data from SSPBUF
Common termination
- Stop Enable bit=1 (PEN=SSPCON2<2>)
Repeated start
- Repeated start enable bit =1 (RSEN=SSPCON2<1>)