📄 cs8900a.c
字号:
#include "config.h"
#include "frame.h"
#include "lib.h"
#include "cs8900a.h"
#ifdef _DEBUG
#include <stdio.h>
#endif /* _DEBUG */
static unsigned short get_reg (short reg_Addr)
{
PPP = reg_Addr;
return PPdata;
}
static void put_reg (short reg_Addr, unsigned short val)
{
PPP = reg_Addr;
PPdata = val;
}
static void
cs8900a_isr(struct contextframe *cf, int irq)
{
}
static void cs8900a_cfg(void)
{
put_reg (PP_LineCTL, (LineCTL_SerRxON | LineCTL_SerTxON) & (~(LineCTL_AUIonly|LineCTL_AutoAUI_10BT)));
put_reg (PP_TxCFG, TxCFG_TxOKiE | TxCFG_Out_of_windowiE | TxCFG_JabberiE);
put_reg (PP_BufCFG, BufCFG_Rdy4TxiE | BufCFG_RxMissiE | BufCFG_TxUnderruniE | BufCFG_TxColOvfiE |BufCFG_MissOvfloiE);
put_reg (PP_BusCTL, BusCTL_EnableRQ);
put_reg (PP_RxCFG, RxCFG_RxOKiE | RxCFG_BufferCRC | RxCFG_CRCerroriE | RxCFG_RuntiE | RxCFG_ExtradataiE);
put_reg (PP_RxCTL, RxCTL_RxOKA | RxCTL_IndividualA | RxCTL_BroadcastA);
put_reg (PP_TestCTL, PP_TestCTL|TestCTL_DisableLT);
put_reg (PP_IA + 0, 0x1700);
put_reg (PP_IA + 2, 0x4831);
put_reg (PP_IA + 4, 0xe4d4);
put_reg(PP_IntRegNum, IntRegNum_INTRQ0);
}
void init_cs8900a(void)
{
if (get_reg(PP_ChipID) != 0x630e) {
#ifdef _DEBUG
printf("No CS8900 found!\n");
#endif /* _DEBUG */
return;
}
cs8900_cfg();
GPGCON = (GPGCON & (~0xc)) | 8;
GPGUP |= 0x2;
EXTINT1 = (EXTINT1 & (~0xf0)) | 4;
EINTMASK &= (~(1<<9));
EINTPEND &= (~(1<<9));
ivt[EINT8_23] = cs8900_isr;
CLEAR_PENDING(EINT8_23);
INT_ENABLE(EINT8_23);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -