亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? EM4094示例Firmware
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*-------------------------------------------------------------------------------
*--  RCSId: $Id: main.c,v 1.33 2004-06-30 12:47:41+02 mjg Exp mjg $
*--         $Name:  $
*-------------------------------------------------------------------------------
*-- main.c (level1)
*-------------------------------------------------------------------------------
*-- $Log: main.c,v $*-- Revision 1.33  2004-06-30 12:47:41+02  mjg*-- key selection extension*--*-- Revision 1.32  2004-05-31 16:41:51+02  mjg*-- single carrier too slow caused CRC errors, speeded up*--
*-- Revision 1.31  2004-05-21 09:29:37+02  mjg
*-- startup inventory, to toggle EAS off for EM4034
*--
*-- Revision 1.30  2004-05-10 09:23:28+02  mjg
*-- to toggle EAS off
*--
*-- Revision 1.29  2004-05-07 08:10:25+02  mjg
*-- HW auth passed
*--
*-- Revision 1.28  2004-04-27 17:05:44+02  mjg
*-- to better test the design
*--
*-- Revision 1.27  2004-04-21 15:48:47+02  mjg
*-- FSK low data rate support
*--
*-- Revision 1.26  2004-04-21 13:05:21+02  mjg
*-- EOF ignored because of FSK and 4034 support
*--
*-- Revision 1.25  2004-04-13 11:21:39+02  mjg
*-- sync
*--
*-- Revision 1.24  2004-03-25 16:09:19+01  mjg
*-- to add delayed EOF feature
*--
*-- Revision 1.23  2004-03-25 15:13:24+01  mjg
*-- to add delayed EOF feature
*--
*-- Revision 1.22  2004-03-24 13:35:36+01  mjg
*-- error msg needs better handling
*--
*-- Revision 1.21  2004-03-15 16:59:07+01  mjg
*-- to check SPI
*--
*-- Revision 1.20  2004-02-16 08:04:12+01  mjg
*-- preliminary CD
*--
*-- Revision 1.18  2004-02-10 19:24:41+01  mjg
*-- FSK to add valid bits
*--
*-- Revision 1.17  2004-02-10 18:30:47+01  mjg
*-- dual carrier raw, decoded 1st try
*--
*-- Revision 1.16  2004-02-09 18:03:33+01  mjg
*-- raw dual carrier capture
*--
*-- Revision 1.15  2004-02-08 12:30:53+01  mjg
*-- Decode var removed, FSK polling added
*--
*-- Revision 1.14  2004-02-07 14:59:47+01  mjg
*-- Response parsing correction
*--
*-- Revision 1.13  2004-02-03 08:42:52+01  mjg
*-- hubneme II
*--
*-- Revision 1.12  2004-02-03 07:24:38+01  mjg
*-- fwd debug implemented and removed from being compiled
*--
*-- Revision 1.11  2004-01-19 14:08:05+01  mjg
*-- hubneme I
*--
*-- Revision 1.10  2004-01-14 14:57:35+01  mjg
*-- to Invenotry version 2
*--
*-- Revision 1.9  2003-12-11 17:37:21+01  mjg
*-- yes
*--
*-- Revision 1.8  2003-12-11 16:33:41+01  mjg
*-- 1TS gives too much responses, stayquiet ?
*--
*-- Revision 1.7  2003-12-10 08:15:49+01  mjg
*-- to add dbg code
*--
*-- Revision 1.6  2003-12-09 12:43:01+01  mjg
*-- to 1TS inventory
*--
*-- Revision 1.5  2003-12-09 12:42:44+01  mjg
*-- to 1TS inventory
*--
*-- Revision 1.4  2003-12-05 13:37:16+01  mjg
*-- Reset2Ready, GetSystemInfo
*--
*-- Revision 1.3  2003-12-05 08:38:56+01  mjg
*-- write update
*--
*-- Revision 1.2  2003-12-04 15:58:09+01  mjg
*-- to write
*--
*-- Revision 1.1  2003-12-01 08:18:05+01  mjg
*-- single carrier low drate level1 ok
*--
*-- Revision 1.0  2003-11-26 09:01:03+01  mjg
*-- Initial revision
*--
*-------------------------------------------------------------------------------
*/

#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/wdt.h>

#include "level4.h"
#include "level3.h"
#include "level2.h"

// ==================================================================
// capture variables

uint16_t halfDataRate;                //half period downlink data rate modul
uint8_t pulsesPerBit;                 //8 pulses for low data rate, 32 for high
uint8_t volatile sof;                 //sof and eof indication

uint8_t counter1set;                  //counter1 settings
uint8_t forward_link_type;            //forward link modulation type

uint8_t decode_number;                //decoder routine number
void (*decode)(void);                 //decoder routine variable
uint8_t enable_capture;               //enable capture (0=disable, 1=capture enable, 2=debug pulse capture)

uint16_t last_capture;                //counter1 is now reset at capture start, we make a difference
                                      //between current and last value
register uint8_t currentMaxTimeHi asm ("r10");          //actual hi value of maximum capture time

uint8_t watchdog_reset;               //watchdog activated

// ==================================================================
// level 1 local variables

register uint8_t captured_byte asm ("r6");      //store_bit current capture bits
register uint8_t captured_valid asm ("r7");     //store_bit current capture valid bits
register uint8_t capture_cnt asm ("r8");        //store_bit current capture byte index
register uint8_t captured_bit_count asm ("r9"); //store_bit current capture bit counter

uint8_t bit_pos;                      //bit position in demodulation

uint8_t edge;                         //bit_phase FSK
uint8_t last_valid;                   //last valid value for invalid sequence compression
uint8_t last_z;                       //FSK last pulse number

uint16_t old_capture;                 //one subcarrier variable
uint16_t previous_delay;              //noise delay storage variable


// ==================================================================
// function declarations


// ==================================================================

void avr_ini(void)
{

   // --------------------------------------------------------------- 
   // UART initialization                                             
   // --------------------------------------------------------------- 

   UARTIni();          // level4 uart init routine

   // --------------------------------------------------------------- 
   // 16-bit Timer/Counter1 initialization                            
   // --------------------------------------------------------------- 

   TCCR1A = 0;         // no compare otuput, no PWM mode ...  
   TCCR1B = 0;         // stopped on startup

   // --------------------------------------------------------------- 
   // I/O Ports initialization                                        
   // --------------------------------------------------------------- 

   PORTB = 0;
   PORTC = (1 << DCLK_PIN) | (0 << MOD_PIN);    //set SPI active == EM4094 normal function blocked
   PORTD = 0;                                   //    notmodulation == startup antenna on
                                                //    LED On

   DDRB = 0x02;        // PORTB.0,2-7 as input, PORTB.1 = SDA = output
   DDRC = 0x0F;        // PORTC.(3-0) = (SCK, LED, DCLK, DIN=MOD) = output, rest = input
   DDRD = 0x0C;        // PORTD.(7,3,2) = (SSN, DBG_TRANS, DBG_FORWARD) = output, rest = input, SSN=off
                                           
   // --------------------------------------------------------------- 
   // Watch Dog Setup
   // --------------------------------------------------------------- 
   cbi( MCUCSR, WDRF);  //clear watchdog reset flag
   wdt_enable(0x7);

   // --------------------------------------------------------------- 
   // General Interrupt Enable                                        
   // --------------------------------------------------------------- 

   MCUCR = ((1<<ISC11) | (1<<ISC10));          //INT1 triggered on rising edge
   GICR = 0;                                   //INT0 & INT1 disabled

   sei();                                      // General Interrupt Enable                    
}


// ==================================================================
// R E C E I V E R   C O D E
// ==================================================================

// ---------------------------------------------------------------
// store bit into capture buffer bytes

void store_bit(uint8_t b, uint8_t v)
{
#if 0
def DEBUG
  b &= 1;
  v &= 1;

  PORTD = PIND ^ (1<<DBG_TRANS);
  PORTD = PIND ^ (1<<DBG_TRANS);
//  if (b == 0) cbi(PORTD, DBG_FORWARD); else sbi(PORTD, DBG_FORWARD); // debugging bitval
  if (v == 0) cbi(PORTD, DBG_TRANS); else sbi(PORTD, DBG_TRANS); // debugging bitok
#endif

  captured_byte = (captured_byte << 1) | b;
  captured_valid = (captured_valid << 1) | v;

  if (captured_bit_count == 7) {
    captured_bit_count = 0;

    if (capture_cnt < CAPTURE_SIZE) {
      capture.capture_data[capture_cnt] = captured_byte;
      capture.capture_valid[capture_cnt++] = captured_valid;
    } else {
      TIMSK = 0;                                    //finished, disable all
      enable_capture = 0;
    }

  } else {
    captured_bit_count++;
  }
}

// ---------------------------------------------------------------
// debug routine stores the captured pulse lengths
// - very bad thing happens here, store_pulse overwrites two arrays
// - thus, capture_data & capture_valid are required placed adjacent
// - note: too much data variables is probably detected by $(OBJTOOL)
// -       warning only

void /*inline*/ store_pulse(uint8_t b)
{
  if (capture_cnt == (2 * CAPTURE_SIZE) - 0x20)         //reserve for message header
    TIMSK = 0;                       //disable all
  else
    capture.capture_data[capture_cnt++] = b;
}

// ==================================================================
// void one_subcarrier_capture(void)

uint8_t pulsesPerBit2;
uint8_t pulsesPerBit3;

SIGNAL (SIG_INPUT_CAPTURE1)
{

  uint8_t z;
  uint16_t capt, y;
  uint16_t icr;

#define TOLERANCE (3)

  icr = ICR1;   

  capt = icr - last_capture;

  if (capt > halfDataRate) {            //quite good pause?

    z = TCNT0;
    TCNT0 = 0;

#ifdef DEBUG
    PORTD = PIND ^ (1<<DBG_FORWARD); // debugging 
#endif
    y = icr - old_capture;     //y

    if (debug_mode != 1) {     //data capture

      capt += previous_delay;
      previous_delay = 0;

      if (z < (uint8_t)(pulsesPerBit-TOLERANCE)) {  //kludge because of noise
        previous_delay = capt;
        store_bit(0, 1);
        store_bit(1, 1);
      } 
      else
      if ((sof == 0) && (z >= (uint8_t)(pulsesPerBit3-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit3+TOLERANCE)))
        sof = 1; 
      else
      if (sof == 1) {
        
        if ((z >= (uint8_t)(pulsesPerBit2-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit2+TOLERANCE))) {
          store_bit(1, 0);
          store_bit(0, 0);
          if (capt < (2*halfDataRate))
            bit_pos = 0;
          else
            bit_pos = 1;
        }
        else
        if ((z >= (uint8_t)(pulsesPerBit-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit+TOLERANCE))) {
          store_bit(bit_pos, 0);      //0!
          if (capt >= (2*halfDataRate))
            bit_pos = 1;
        }
        else
        if ((z >= (uint8_t)(pulsesPerBit3-TOLERANCE)) && (z <= (uint8_t)(pulsesPerBit2+TOLERANCE)) && (capt > (3*halfDataRate))) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆视频一区二区| 亚洲欧美一区二区在线观看| 欧美日韩小视频| 成人在线一区二区三区| 国产成人精品免费在线| 久久国产精品色婷婷| 蜜臀久久99精品久久久画质超高清| 夜夜嗨av一区二区三区中文字幕| 一区二区三区在线播| 亚洲黄色在线视频| 亚洲国产aⅴ成人精品无吗| 一区二区三区免费| 亚洲欧洲韩国日本视频| 国产精品午夜春色av| 亚洲欧洲精品一区二区三区不卡| 亚洲欧洲av色图| 亚洲视频在线观看三级| 亚洲国产aⅴ成人精品无吗| 日本在线不卡视频一二三区| 激情丁香综合五月| 成人丝袜视频网| 成人黄色在线网站| 91看片淫黄大片一级在线观看| 欧美亚洲国产bt| 日韩欧美亚洲国产另类| 久久精品视频在线看| 国产精品久久久久婷婷| 亚洲不卡在线观看| 国产高清亚洲一区| 日本精品视频一区二区| 日韩欧美一区在线观看| 久久综合视频网| 国产精品美女www爽爽爽| 亚洲精品免费看| 久久99国产精品久久| 91在线无精精品入口| 91麻豆精品国产91久久久使用方法| 日韩一区二区免费电影| 亚洲欧美中日韩| 免费观看一级特黄欧美大片| 成人久久久精品乱码一区二区三区| 粉嫩在线一区二区三区视频| 欧美日韩国产美女| 久久久久久97三级| 日韩成人免费在线| 成人少妇影院yyyy| 精品日韩成人av| 亚洲国产视频网站| www.亚洲在线| 精品国产青草久久久久福利| 亚洲国产精品麻豆| 成人黄色av电影| 欧美大片在线观看一区二区| 专区另类欧美日韩| 亚洲人快播电影网| 经典三级在线一区| 欧美丰满美乳xxx高潮www| 中文字幕一区二区在线观看| 狠狠色丁香婷综合久久| 日韩免费观看高清完整版 | 99精品1区2区| 日韩精品专区在线影院重磅| 午夜精品福利在线| 91久久精品一区二区三| 亚洲国产成人一区二区三区| 国产一区二区三区免费看| 制服丝袜在线91| 午夜久久久久久久久| 91久久奴性调教| 亚洲一区影音先锋| 91美女片黄在线观看91美女| 亚洲日本电影在线| 国产精品一二三| 26uuu亚洲| 国产精品99久久久久久久女警 | 国产午夜亚洲精品羞羞网站| 精品综合久久久久久8888| 欧美一级黄色大片| 日产国产欧美视频一区精品| 欧美一区二区三区免费大片| 日韩和欧美一区二区三区| 4438x成人网最大色成网站| 美女高潮久久久| 欧美成人精品福利| 韩国av一区二区三区| 中文字幕不卡的av| 国产精品123| 亚洲欧洲日韩女同| 在线精品视频一区二区三四| 日本在线不卡一区| 欧美成人精品福利| 丰满白嫩尤物一区二区| 亚洲三级在线播放| 欧美日韩高清在线播放| 精品在线亚洲视频| 国产欧美1区2区3区| 成人av网址在线观看| 一区二区三区精品视频| 欧美午夜精品久久久久久超碰| 亚洲免费视频成人| 日韩免费视频线观看| 精品一区二区免费视频| 国产精品免费网站在线观看| 91国在线观看| 国产精品电影一区二区| 亚洲丝袜精品丝袜在线| 91啦中文在线观看| 日韩电影一区二区三区四区| 日韩精品中文字幕一区| 亚洲在线免费播放| 欧美精品电影在线播放| 日产国产高清一区二区三区| 久久久久国产精品麻豆ai换脸| 91黄色免费观看| 国产精品资源网站| 日韩专区一卡二卡| 日本一区二区三级电影在线观看 | 一本到一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 中文字幕欧美国产| 日韩一区二区在线观看视频播放| 国产黄色精品视频| 男女视频一区二区| 中文幕一区二区三区久久蜜桃| 欧美日韩成人激情| 成人av先锋影音| 激情五月婷婷综合网| 亚洲一区二区三区视频在线| 久久久久久久久免费| 欧美日韩国产一区| 成人一道本在线| 韩国av一区二区三区在线观看| 亚洲一区二区在线免费观看视频| 国产农村妇女精品| 在线成人av网站| 日本高清不卡视频| 99视频精品在线| av一区二区不卡| 丰满放荡岳乱妇91ww| 激情久久久久久久久久久久久久久久| 亚洲高清不卡在线观看| 亚洲免费在线看| 国产精品国产馆在线真实露脸 | 国内外成人在线视频| 亚洲电影激情视频网站| 亚洲人成人一区二区在线观看| 中文字幕欧美三区| 国产欧美日韩另类视频免费观看| 久久色成人在线| 久久久久亚洲蜜桃| 久久免费看少妇高潮| 日韩亚洲欧美在线观看| 欧美日韩一区高清| 欧美伊人精品成人久久综合97| 日韩一区二区三区观看| 欧美日韩亚洲综合| 在线免费亚洲电影| 91视频在线看| 99视频一区二区| 色婷婷综合久久久中文字幕| 91精彩视频在线观看| 欧美嫩在线观看| 日韩写真欧美这视频| 久久精品一区二区三区不卡 | 国产蜜臀av在线一区二区三区| 欧美一级电影网站| 2020国产精品| 久久久久久亚洲综合| 久久人人97超碰com| 国产欧美日韩另类一区| 国产精品免费视频观看| 有坂深雪av一区二区精品| 亚洲人精品午夜| 美女精品自拍一二三四| 裸体健美xxxx欧美裸体表演| 国产乱对白刺激视频不卡| 豆国产96在线|亚洲| 国产成人精品影视| 在线观看日韩电影| 精品国产一区二区三区不卡 | 国产欧美一二三区| 中文字幕精品一区| 亚洲精品国产成人久久av盗摄| 午夜婷婷国产麻豆精品| 激情av综合网| 一本久久综合亚洲鲁鲁五月天| 欧美一卡二卡三卡| 日本高清视频一区二区| 日韩精品一区二区三区四区| 久久综合九色综合久久久精品综合 | 日韩福利视频导航| 国产福利一区二区三区视频| 色婷婷av久久久久久久| 欧美一区二区精品在线| 国产欧美日韩综合精品一区二区| 亚洲国产美女搞黄色| 国产精品亚洲专一区二区三区| 欧美影院一区二区三区| 日本一区免费视频| 久久99久久精品|