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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hvprog.c

?? AVR Dopper Programmer
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Name: hvprog.c * Project: AVR-Doper * Author: Christian Starkjohann <cs@obdev.at> * Creation Date: 2006-07-07 * Tabsize: 4 * Copyright: (c) 2006 by Christian Starkjohann, all rights reserved. * License: GNU GPL v2 (see License.txt) or proprietary (CommercialLicense.txt) * Revision: $Id: hvprog.c 566 2008-04-26 14:21:47Z cs $ */#include "hardware.h"#if ENABLE_HVPROG#include <avr/io.h>#include <avr/wdt.h>#include "timer.h"#include "utils.h"#include "hvprog.h"/* This module can handle high voltage serial and parallel programming. Serial * programming can be understood as a serial interface to parallel programming: * SDI represents programming data and SII a serial input for the control * input lines /OE, /WR, BS1, XA0, XA1, PAGEL, and BS2. * In order to handle both with similar code, we define the function * hvSetControlAndData() which takes care of the underlying mechanism. *//* control lines for high voltage serial (and parallel) programming *//*    7       6       5       4    |  3       2       1       0    n/a     XA1     XA0     BS1  |  /WR     /OE     BS2     PAGEL*/#define HVCTL_PAGEL (1 << 0)#define HVCTL_BS2   (1 << 1)#define HVCTL_nOE   (1 << 2)#define HVCTL_nWR   (1 << 3)#define HVCTL_BS1   (1 << 4)#define HVCTL_XA0   (1 << 5)#define HVCTL_XA1   (1 << 6)/* actions: */#define HV_ADDR     0#define HV_DATA     HVCTL_XA0#define HV_CMD      HVCTL_XA1#define HV_NONE     (HVCTL_XA1 | HVCTL_XA0)#define HV_PAGEL    (HVCTL_XA1 | HVCTL_XA0 | HVCTL_PAGEL)/* bytes: */#define HV_LOW      0#define HV_HIGH     HVCTL_BS1#define HV_EXT      HVCTL_BS2#define HV_EXT2     (HVCTL_BS1 | HVCTL_BS2)/* modes: */#define HV_READ     HVCTL_nWR#define HV_WRITE    HVCTL_nOE#define HV_NORW     (HVCTL_nWR | HVCTL_nOE)#define HVCTL(action, byte, mode)   ((action) | (byte) | (mode))/* high voltage parallel and serial programming commands */#define HVCMD_CHIP_ERASE    0x80#define HVCMD_WRITE_FUSE    0x40#define HVCMD_WRITE_LOCK    0x20#define HVCMD_WRITE_FLASH   0x10#define HVCMD_WRITE_EEPROM  0x11#define HVCMD_READ_SIGCAL   0x08#define HVCMD_READ_FUSELCK  0x04#define HVCMD_READ_FLASH    0x02#define HVCMD_READ_EEPROM   0x03#define HVCMD_NOP           0x00/* ------------------------------------------------------------------------- */static uchar    progModeIsPp;   /* use parallel programming primitives */static uchar    hvPollTimeout;/*Implementing High Voltage Parallel Programming:4 functions have to be implemented for HVPP:ppEnterProgmode()    This function brings the port lines into the state required for programming.ppLeaveProgmode()    This function turns off all signals to the target device.ppExecute()    This function reads data, sets data and sets control lines according to    the parameters passed to the function.ppPoll()    This function polls for "programming ready".You may have to add global variables to communicate additional parameterssuch as e.g. write pulse width. See the hvsp* function implementation formore information.*//* ------------------------------------------------------------------------- */static uchar hvspExecute(uchar ctlLines, uchar data){uchar   cnt, r = 0, port;    port = PORT_OUT(HWPIN_HVSP_SII) & ~((1<<PORT_BIT(HWPIN_HVSP_SII)) | (1<<PORT_BIT(HWPIN_HVSP_SDI)));    PORT_OUT(HWPIN_HVSP_SII) = port;    PORT_PIN_SET(HWPIN_HVSP_SCI);    cnt = 8;    PORT_PIN_CLR(HWPIN_HVSP_SCI);    do{        r <<= 1;        if(PORT_PIN_VALUE(HWPIN_HVSP_SDO))            r |= 1;        if(data & 0x80)            port |= 1 << PORT_BIT(HWPIN_HVSP_SDI);        if(ctlLines & 0x80)            port |= 1 << PORT_BIT(HWPIN_HVSP_SII);        PORT_OUT(HWPIN_HVSP_SII) = port;        PORT_PIN_SET(HWPIN_HVSP_SCI);        port &= ~((1<<PORT_BIT(HWPIN_HVSP_SII)) | (1<<PORT_BIT(HWPIN_HVSP_SDI)));        ctlLines <<= 1;        data <<= 1;        PORT_PIN_CLR(HWPIN_HVSP_SCI);    }while(--cnt);    PORT_OUT(HWPIN_HVSP_SII) = port;    /* clock out two zeros */    PORT_PIN_SET(HWPIN_HVSP_SCI);    PORT_PIN_CLR(HWPIN_HVSP_SCI);    PORT_PIN_SET(HWPIN_HVSP_SCI);    PORT_PIN_CLR(HWPIN_HVSP_SCI);    return r;}/* This function applies 'data' to the data lines, 'ctlLines' to the control * lines and returns the status of the data lines BEFORE any control lines * were changed. These somewhat strange semantics are required for * compatibility with HV serial programming. */static uchar hvSetControlAndData(uchar ctlLines, uchar data){    /* ### insert if(progModeIsPp){}else{} here */    return hvspExecute(ctlLines, data);}/* ------------------------------------------------------------------------- */#if 1void    hvspEnterProgmode(stkEnterProgHvsp_t *param){    progModeIsPp = 0;    PORT_PIN_SET(HWPIN_LED);    TCCR2 &= ~(1 << COM20);             /* clear toggle on compare match mode */    PORT_PIN_SET(HWPIN_HVSP_RESET);    PORT_PIN_CLR(HWPIN_HVSP_SUPPLY);    PORT_DDR(HWPIN_HVSP_SDO) |= (1 << PORT_BIT(HWPIN_HVSP_SDO));    TIMER_US_DELAY(40);    PORT_PIN_CLR(HWPIN_HVSP_RESET);    PORT_DDR_CLR(HWPIN_HVSP_HVRESET);   /* use internal pull-up to source current */    PORT_PIN_SET(HWPIN_HVSP_HVRESET);    TIMER_US_DELAY(15);    PORT_DDR(HWPIN_HVSP_SDO) &= ~(1 << PORT_BIT(HWPIN_HVSP_SDO));   /* prevent contention */    TIMER_US_DELAY(300);}#else/* This is the new mechanism to enter prog mode which is closer to the method * described in the ATTiny45 data sheet, but it seems to fail on some of the * ATTiny45. We therefore stick with the old method, but leave this code * for reference. */void    hvspEnterProgmode(stkEnterProgHvsp_t *param){uchar i;    progModeIsPp = 0;    PORT_PIN_SET(HWPIN_LED);    TCCR2 &= ~(1 << COM20);             /* clear toggle on compare match mode */    PORT_PIN_SET(HWPIN_HVSP_RESET);    PORT_PIN_CLR(HWPIN_HVSP_SUPPLY);    for(i = 0; i < 16; i++){    /* ATTiny[248]4 data sheet says: toggle SCI at least 6 times */        TIMER_US_DELAY(20);        PORT_OUT(HWPIN_HVSP_SCI) ^= 1 << PORT_BIT(HWPIN_HVSP_SCI);    }    PORT_DDR_SET(HWPIN_HVSP_SDO);    TIMER_US_DELAY(45);    PORT_PIN_CLR(HWPIN_HVSP_RESET);    PORT_DDR_CLR(HWPIN_HVSP_HVRESET);   /* use internal pull-up to source current */    PORT_PIN_SET(HWPIN_HVSP_HVRESET);    TIMER_US_DELAY(20);    PORT_DDR_CLR(HWPIN_HVSP_SDO);       /* prevent contention */    TIMER_US_DELAY(300);}#endifvoid    hvspLeaveProgmode(stkLeaveProgHvsp_t *param){    PORT_PIN_CLR(HWPIN_HVSP_HVRESET);    PORT_DDR_SET(HWPIN_HVSP_HVRESET);   /* output low level */    PORT_PIN_SET(HWPIN_HVSP_RESET);    PORT_OUT(HWPIN_HVSP_SII) &= ~((1<<PORT_BIT(HWPIN_HVSP_SII)) | (1<<PORT_BIT(HWPIN_HVSP_SDI)));    PORT_PIN_SET(HWPIN_HVSP_SUPPLY);    PORT_PIN_CLR(HWPIN_HVSP_RESET);    PORT_PIN_CLR(HWPIN_LED);}/* ------------------------------------------------------------------------- */void    ppEnterProgmode(stkEnterProgPp_t *param){    progModeIsPp = 1;    /* ### not implemented yet */}void    ppLeaveProgmode(stkLeaveProgPp_t *param){    /* ### not implemented yet */}/* ------------------------------------------------------------------------- */static uchar    hvspPoll(void){uchar   rval = STK_STATUS_CMD_OK;    timerSetupTimeout(hvPollTimeout);    while(!PORT_PIN_VALUE(HWPIN_HVSP_SDO)){        if(timerTimeoutOccurred()){            rval = STK_STATUS_CMD_TOUT;            break;        }    }    return rval;}static uchar    hvPoll(void){    /* ### insert if(progModeIsPp){}else{} here */    return hvspPoll();}/* ------------------------------------------------------------------------- */static uchar   hvChipErase(uchar eraseTime){uchar rval = STK_STATUS_CMD_OK;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av激情成人网| 免播放器亚洲一区| 国产精品久久久久久久久免费丝袜| 日本福利一区二区| 日韩成人av影视| 精品综合免费视频观看| 国产精品一区在线观看乱码| 国产**成人网毛片九色| 91麻豆自制传媒国产之光| 欧美三级在线视频| 欧美一卡在线观看| 国产精品区一区二区三区| 曰韩精品一区二区| 麻豆国产精品一区二区三区| 免费一区二区视频| 国产精华液一区二区三区| 精品一区二区三区在线播放| jlzzjlzz国产精品久久| 欧美在线一区二区| 国产亚洲一本大道中文在线| 亚洲精品免费一二三区| 视频在线观看一区| 琪琪久久久久日韩精品| 成人黄色片在线观看| 欧美精品色一区二区三区| 精品日韩成人av| 天天av天天翘天天综合网色鬼国产| 中文字幕乱码日本亚洲一区二区| 91精品国产综合久久蜜臀 | 欧美国产在线观看| 亚洲.国产.中文慕字在线| 亚洲福利电影网| 99麻豆久久久国产精品免费| 欧美一区二区三区免费观看视频| 欧美国产一区在线| 美女精品自拍一二三四| 欧美日韩午夜影院| 亚洲人成网站影音先锋播放| 色综合久久久久久久| 青娱乐精品视频| 欧美日韩在线播放一区| 日韩欧美视频在线| 久久久99精品免费观看| 一区二区三区四区五区视频在线观看| 婷婷综合久久一区二区三区| 色琪琪一区二区三区亚洲区| 亚洲同性同志一二三专区| 国产精品护士白丝一区av| 丝袜美腿亚洲色图| 欧美日韩一级片网站| 亚洲成a天堂v人片| 欧美日韩午夜精品| 亚洲午夜免费视频| 色8久久人人97超碰香蕉987| 亚洲色图欧美在线| 欧美日韩国产系列| 婷婷国产v国产偷v亚洲高清| 国产三级久久久| 精品日韩欧美在线| 717成人午夜免费福利电影| 99久久精品情趣| 成人夜色视频网站在线观看| 毛片av一区二区| 热久久一区二区| 婷婷成人激情在线网| 一区二区三区色| 综合中文字幕亚洲| 成人免费一区二区三区在线观看| 欧美成人三级在线| 欧美一区二区三区在线电影| 色欧美片视频在线观看| 色综合久久66| 91福利在线免费观看| 在线观看精品一区| 日本精品视频一区二区| 99视频在线观看一区三区| 成人激情小说乱人伦| 波多野结衣的一区二区三区| 成人听书哪个软件好| 粉嫩av亚洲一区二区图片| 国产激情一区二区三区四区 | 日本精品裸体写真集在线观看| 一本色道久久加勒比精品| www.日韩精品| 色诱视频网站一区| 欧美日韩一区精品| 欧美二区三区91| 日韩美女视频在线| 亚洲国产精华液网站w| 亚洲三级电影网站| 午夜久久电影网| 国产一区二区三区免费| 处破女av一区二区| 91久久国产综合久久| 91精品在线麻豆| 国产欧美一区二区精品性色| 亚洲卡通欧美制服中文| 欧美aⅴ一区二区三区视频| 国产伦精品一区二区三区免费迷 | 欧美日韩激情在线| 91免费版pro下载短视频| 精品国产一区二区三区av性色| 久久久亚洲综合| 中文字幕欧美激情| 成人欧美一区二区三区小说| 久久丝袜美腿综合| 中文av字幕一区| 免费一级片91| 国产一区91精品张津瑜| 国产精品一区二区91| 欧美不卡一区二区三区四区| 成人一区二区三区在线观看| 欧美日韩一区不卡| 日本一二三不卡| 成人福利电影精品一区二区在线观看| 欧美性大战xxxxx久久久| 亚洲欧洲日本在线| 美国毛片一区二区| 欧美一级黄色录像| 久久婷婷国产综合精品青草| 午夜电影久久久| 欧美在线不卡一区| 亚洲免费观看高清在线观看| 大白屁股一区二区视频| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品久久久久久久久快鸭 | 欧美精品vⅰdeose4hd| 亚洲美女屁股眼交3| 成人免费观看av| 国产精品久久久久久亚洲毛片| 国产一区二区不卡在线| 久久综合九色综合97_久久久| 奇米精品一区二区三区四区| 欧美精品三级日韩久久| 亚洲影视在线观看| 欧美日韩国产首页| 奇米777欧美一区二区| 精品免费日韩av| 国产一区二区三区综合| 久久久一区二区三区| 成人在线综合网站| 亚洲精选免费视频| 欧美日韩一区在线| 久久99精品一区二区三区三区| 久久只精品国产| eeuss影院一区二区三区 | 国产成a人无v码亚洲福利| 国产亚洲精品aa| 在线视频中文字幕一区二区| 五月天久久比比资源色| 26uuu精品一区二区在线观看| 国产精品一二二区| 一区二区三区在线视频观看58| 欧美日韩国产精品成人| 国内精品免费**视频| 日韩一区在线免费观看| 欧美另类变人与禽xxxxx| 九色综合狠狠综合久久| 日韩美女视频一区| 欧美一区二区在线看| 高清国产一区二区| 亚洲综合色噜噜狠狠| 欧美一区二区三区啪啪| 成人小视频免费观看| 午夜激情一区二区| 国产精品狼人久久影院观看方式| 色网站国产精品| 成人黄色av网站在线| 一级女性全黄久久生活片免费| 精品欧美乱码久久久久久1区2区| 99久久综合99久久综合网站| 狠狠色综合日日| 视频在线观看91| 一区二区日韩av| 最好看的中文字幕久久| 2024国产精品| 欧美r级在线观看| 欧美日韩一级二级| 色综合天天狠狠| 91在线视频网址| 99久久精品国产观看| 国产成人精品一区二区三区四区 | 国产精品久久777777| 久久久一区二区三区| 久久久久久综合| 2021中文字幕一区亚洲| 久久婷婷成人综合色| 国产日韩欧美一区二区三区乱码| 精品美女一区二区| 欧美xxxxx牲另类人与| 日韩美女在线视频| 精品国产99国产精品| 久久久亚洲高清| 国产精品久久久久影院| 中文无字幕一区二区三区 | xfplay精品久久| 中文字幕免费观看一区| 国产精品午夜电影| 伊人性伊人情综合网| 亚洲国产美女搞黄色|