#include "ppmc.h"
#include <stdio.h>
Include dependency graph for ppmc_internal.c:
Go to the source code of this file.
Defines | |
#define | ppmc_base_addr STG_BASE_ADDRESS |
#define | SPPDATA ppmc_base_addr |
#define | STATUSPORT ppmc_base_addr+1 |
#define | CONTROLPORT ppmc_base_addr+2 |
#define | ADDRPORT ppmc_base_addr+3 |
#define | DATAPORT ppmc_base_addr+4 |
Functions | |
int | iopl (int level) |
unsigned char | inb (unsigned int port) |
void | outb (unsigned char byte, unsigned int port) |
unsigned short | inw (unsigned int port) |
void | outw (unsigned short word, unsigned int port) |
void | BusReset (void) |
short | InitializeParPort (void) |
int | ClrTimeout (void) |
void | SelAddr (unsigned int port) |
void | WriteData (unsigned char byte) |
void | WriteData16 (unsigned short word) |
unsigned short | ReadData (void) |
unsigned short | SelRead (unsigned int port) |
void | SelWrt (unsigned int port, unsigned char byte) |
void | SelWrt16 (unsigned int port, unsigned short word) |
int | ppmcMotInit (const char *stuffstuff) |
int | ppmcMotQuit () |
Variables | |
unsigned short | STG_BASE_ADDRESS = DEFAULT_PPMC_BASE_ADDRESS |
|
Definition at line 174 of file ppmc_internal.c. |
|
Definition at line 173 of file ppmc_internal.c. |
|
Definition at line 175 of file ppmc_internal.c. |
|
Definition at line 171 of file ppmc_internal.c. |
|
Definition at line 172 of file ppmc_internal.c. |
|
Definition at line 163 of file ppmc_internal.c. |
|
Definition at line 179 of file ppmc_internal.c. Referenced by ClrTimeout(), and ppmcMotInit().
|
|
Definition at line 189 of file ppmc_internal.c. Referenced by SelAddr(), SelRead(), SelWrt(), SelWrt16(), and WriteData().
00190 { 00191 unsigned char r; 00192 00193 if (!(inb(STATUSPORT) & 0x01)) 00194 return 0; 00195 00196 /* To clear timeout some chips require double read */ 00197 00198 BusReset(); 00199 r = inb(STATUSPORT); 00200 outb(r | 0x01, STATUSPORT); /* Some reset by writing 1 */ 00201 r = inb(STATUSPORT); 00202 00203 return !(r & 0x01); 00204 } |
|
Definition at line 281 of file ppmc_internal.c. Referenced by ppmcMotInit().
00282 { 00283 #ifdef LINUX 00284 ioperm(ppmc_base_addr,5,1) ;//turn on the 5 00285 //if you want to run ecp, need to use iopl() 00286 #endif 00287 return 0; 00288 } |
|
Definition at line 234 of file ppmc_internal.c. |
|
Definition at line 207 of file ppmc_internal.c. Referenced by EncReadAll(), and ppmcDacWriteAll().
00208 { 00209 /* writes a device address to the data port and toggles address strobe low, and waits 00210 for handshake */ 00211 ClrTimeout(); 00212 // outb(inb(CONTROLPORT) & 0xDF,CONTROLPORT); // set port direction to output 00213 outb(0x04,CONTROLPORT); // set port direction to output 00214 00215 outb(port,ADDRPORT); 00216 return; 00217 } |
|
Definition at line 242 of file ppmc_internal.c. Referenced by ppmcEncoderReadLatch().
00243 { 00244 /* writes a device address to the data port and toggles address strobe low, and waits 00245 for handshake, then inputs data byte and toggles data strobe low, then 00246 high again */ 00247 ClrTimeout(); 00248 outb(inb(CONTROLPORT) & 0xDF,CONTROLPORT); // set port direction to output 00249 outb(port,ADDRPORT); 00250 outb(inb(CONTROLPORT) | 0x20,CONTROLPORT); // set port direction to input 00251 return inb(DATAPORT); 00252 00253 } |
|
Definition at line 255 of file ppmc_internal.c. Referenced by DACInit(), EncoderInit(), EncoderLatch(), RawDAC(), and SelectInterruptPeriod().
00256 { 00257 /* writes a device address to the data port and toggles address strobe low, and waits 00258 for handshake, then outputs data byte and toggles data strobe low, then 00259 high again */ 00260 ClrTimeout(); 00261 // outb(inb(CONTROLPORT) & 0xDF,CONTROLPORT); // set port direction to output 00262 outb(0x04,CONTROLPORT); // set port direction to output 00263 outb(port,ADDRPORT); 00264 outb(byte,DATAPORT); 00265 return; 00266 } |
|
Definition at line 267 of file ppmc_internal.c. Referenced by RawDAC().
00268 { 00269 /* writes a device address to the data port and toggles address strobe low, and waits 00270 for handshake, then (outputs data byte and toggles data strobe low, then 00271 high again) repeat for 2nd byte */ 00272 ClrTimeout(); 00273 outb(inb(CONTROLPORT) & 0xDF,CONTROLPORT); // set port direction to output 00274 outb(port,ADDRPORT); 00275 outb(word & 0x00FF,DATAPORT); 00276 outb(word >> 8,DATAPORT); 00277 return; 00278 } |
|
Definition at line 219 of file ppmc_internal.c. Referenced by EncoderInit().
00220 { 00221 /* writes data to the data port and toggles data strobe low, and waits 00222 for handshake */ 00223 outb(byte,DATAPORT); 00224 ClrTimeout(); 00225 return; 00226 } |
|
Definition at line 227 of file ppmc_internal.c. Referenced by ppmcDacWriteAll().
|
|
Definition at line 69 of file ppmc_internal.c. 00070 { 00071 if (port >= STG_BASE_ADDRESS && 00072 port <= STG_BASE_ADDRESS + 0x1f) 00073 { 00074 return 0; 00075 } 00076 00077 if (port >= STG_BASE_ADDRESS + 0x400 && 00078 port <= STG_BASE_ADDRESS + 0x400 + 0x1f) 00079 { 00080 return 0; 00081 } 00082 00083 printf("inb: address out of bounds: %X\n", port); 00084 return 0; 00085 } |
|
Definition at line 110 of file ppmc_internal.c. 00111 { 00112 if (port % 2) 00113 { 00114 printf("inw: alignment error: %X\n", port); 00115 return 0; 00116 } 00117 00118 if (port >= STG_BASE_ADDRESS && 00119 port <= STG_BASE_ADDRESS + 0x1e) 00120 { 00121 return 0; 00122 } 00123 00124 if (port >= STG_BASE_ADDRESS + 0x400 && 00125 port <= STG_BASE_ADDRESS + 0x400 + 0x1e) 00126 { 00127 return 0; 00128 } 00129 00130 printf("inw: address out of bounds: %X\n", port); 00131 return 0; 00132 } |
|
Definition at line 64 of file ppmc_internal.c. Referenced by ServoToGoConstructor(), main(), pptDioInit(), and stgMotInit().
00065 { 00066 return 0; 00067 } |
|
Definition at line 87 of file ppmc_internal.c. 00088 { 00089 /* allow writes to 0x80 for 1 msec delay */ 00090 if (port == 0x80) 00091 { 00092 return; 00093 } 00094 00095 if (port >= STG_BASE_ADDRESS && 00096 port <= STG_BASE_ADDRESS + 0x1f) 00097 { 00098 return; 00099 } 00100 00101 if (port >= STG_BASE_ADDRESS + 0x400 && 00102 port <= STG_BASE_ADDRESS + 0x400 + 0x1f) 00103 { 00104 return; 00105 } 00106 00107 printf("outb: address out of bounds: %X\n", port); 00108 } |
|
Definition at line 134 of file ppmc_internal.c. 00135 { 00136 if (port % 2) 00137 { 00138 printf("outw: alignment error: %X\n", port); 00139 return; 00140 } 00141 00142 if (port >= STG_BASE_ADDRESS && 00143 port <= STG_BASE_ADDRESS + 0x1e) 00144 { 00145 return; 00146 } 00147 00148 if (port >= STG_BASE_ADDRESS + 0x400 && 00149 port <= STG_BASE_ADDRESS + 0x400 + 0x1e) 00150 { 00151 return; 00152 } 00153 00154 printf("outw: address out of bounds: %X\n", port); 00155 return; 00156 } |
|
Definition at line 290 of file ppmc_internal.c. Referenced by __attribute__(), and main().
00291 { 00292 if(InitializeParPort()==-1) 00293 return -1; 00294 BusReset(); 00295 if(EncoderInit()==-1) 00296 return -1; 00297 /* if(DACInit()==-1) 00298 return -1; 00299 if(DIOInit()==-1) 00300 return -1; */ 00301 return 0; 00302 00303 } |
|
Definition at line 305 of file ppmc_internal.c. Referenced by extMotQuit().
00306 { 00307 DACQuit(); 00308 EncoderQuit(); 00309 DIOQuit(); 00310 return 0; 00311 } |
|
Definition at line 162 of file ppmc_internal.c. |