본문 바로가기

메이커 Maker

AVR 퓨즈 비트의 올바른 구성 정보

반응형

 

AVR 퓨즈 구성은 섬세한 작업으로, 간과되거나 숙달하기 어려운 경우가 많습니다. 다음은 AVR 퓨즈 구성에 대한 몇 가지 핵심 사항과 고려 사항입니다. ATmega128 퓨즈의 구체적인 정의와 기능은 이 책의 관련 장을 참조하십시오. 전체 요약은 부록에 수록되어 있습니다.

 

(1) AVR 장치 설명서에서 퓨즈 비트는 프로그래밍됨(Programmed)과 프로그래밍되지 않음(Unprogrammed)으로 정의됩니다. "프로그래밍되지 않음"은 퓨즈 상태가 "1"(비활성화됨)임을 의미하고, "프로그래밍됨"은 퓨즈 상태가 "0"(허용됨)임을 의미합니다. 따라서 퓨즈 비트를 구성하는 과정은 실제로 퓨즈 비트를 프로그래밍되지 않은 상태 "1" 또는 프로그래밍된 상태 "0"으로 구성하는 것입니다.

 

(2) "√" 방식을 선택하여 퓨즈 비트 상태 값을 결정하는 프로그래밍 도구 소프트웨어를 사용할 경우, 먼저 소프트웨어 지침을 주의 깊게 읽고 "√"가 퓨즈 비트 상태를 "0"으로 설정하는 것을 의미하는지 "1"로 설정하는 것을 의미하는지 확인하십시오.

 

(3) CVAVR에서 프로그래밍 다운로드 프로그램을 사용할 때는 특히 주의해야 합니다. CVAVR 프로그래밍 다운로드 인터페이스가 처음 열릴 때 대부분의 퓨즈 비트의 초기 상태는 "1"로 정의되므로 프로그래밍 메뉴 옵션에서 "all" 옵션을 사용하지 마십시오. 이 경우 "all" 옵션은 퓨즈 비트의 초기 상태 정의에 따라 칩의 퓨즈 비트를 구성하지만, 실제로는 사용자가 요구하는 구성 결과가 아닌 경우가 많습니다. "all" 옵션을 사용하려면 먼저 "read->fuse bits"를 사용하여 칩의 퓨즈 비트 실제 상태를 읽은 다음 "all" 옵션을 사용해야 합니다.

 

(4) 새 AVR 칩을 사용하기 전에 먼저 퓨즈 비트 구성을 확인한 다음, 실제 필요에 따라 퓨즈 비트를 구성하고 각 퓨즈 비트의 상태를 기록해야 합니다. (5) AVR 칩이 암호화된 후에는 칩 내부의

 

플래시 메모리와 E2PROM에 있는 데이터만 읽을 수 없습니다. 퓨즈 비트의 상태는 읽을 수 있지만 구성을 수정할 수는 없습니다. 칩 삭제 명령은 플래시 메모리와 E2PROM의 데이터를 지우고 동시에 두 잠금 비트의 상태를 잠금 해제 상태인 "11"로 설정합니다. 그러나 칩 삭제 명령은 다른 퓨즈 비트의 상태를 변경하지 않습니다.

 

(6) 올바른 작동 절차는 다음과 같습니다. 칩의 잠금 해제 상태에서 실행 코드와 데이터를 다운로드하고, 관련 퓨즈 비트를 구성한 후, 마지막으로 칩 잠금 비트를 구성합니다. 칩이 잠금 해제된 후 퓨즈 비트가 잘못 구성된 것으로 확인되면 칩 삭제 명령을 사용하여 칩의 데이터를 지우고 잠금을 해제해야 합니다. 그런 다음 실행 코드와 데이터를 다시 다운로드하고 수정합니다. 구성 관련 퓨즈 비트를 설정하고 마지막으로 칩 잠금 비트를 재구성합니다.

 

(7) ISP 직렬 다운로드 프로그래밍을 사용할 때 SPIEN 퓨즈 비트는 "0"으로 설정해야 합니다. 칩이 공장 출고될 때 SPIEN 비트는 기본적으로 "0"으로 설정되어 ISP 직렬 다운로드 데이터가 허용됨을 나타냅니다. 이 비트가 프로그래밍된 상태 "0"일 때만 AVR의 SPI 포트를 통해 ISP 다운로드를 수행할 수 있습니다. 이 비트가 프로그래밍되지 않은 상태 "1"로 설정되면 ISP 직렬 다운로드 데이터가 즉시 금지됩니다. 이때 SPIEN 상태는 병렬 모드 또는 JTAG 프로그래밍을 통해서만 "0"으로 재설정하여 ISP를 열 수 있습니다. 일반적인 상황에서는 SPIEN 상태를 "0"으로 유지해야 합니다. ISP 프로그래밍을 허용하더라도 해당 핀의 I/O 기능에는 영향을 미치지 않습니다. 하드웨어 회로 설계 시 직렬 저항 또는 분리 점퍼 사용 등 ISP 인터페이스와 병렬로 연결된 장치가 분리되어 있는 한,

 

(8) 시스템에서 다운로드 프로그래밍이나 실시간 온라인 시뮬레이션에 JTAG 인터페이스를 사용하지 않는 경우 디버깅 중이고 JTAG 인터페이스의 핀을 I/O 포트로 사용해야 하는 경우, 퓨즈 비트 JTAGEN을 "1"로 설정해야 합니다. 칩이 공장에서 출고될 때 JTAGEN 상태는 기본적으로 "0"으로 설정되어 있습니다. 이는 JTAG 인터페이스가 허용됨을 의미하며, JTAG의 외부 핀은 I/O 포트로 사용할 수 없음을 의미합니다. JTAGEN 상태가 "1"로 설정되면 JTAG 인터페이스가 즉시 비활성화됩니다. 이 경우 JTAG는 "0"으로만 재설정할 수 있으며, 병렬 모드 또는 ISP 프로그래밍을 통해 JTAG를 열 수 있습니다.

 

(9) 일반적인 상황에서는 퓨즈 비트를 설정하여 RESET 핀을 I/O로 정의하지 마십시오(예: ATmega8 퓨즈 비트 RSTDISBL 상태를 "0"으로 설정). 이렇게 하면 ISP 다운로드 프로그래밍을 진행할 수 없게 됩니다. ISP 모드 프로그래밍으로 들어가기 전에 RESET 핀을 로우(Low)로 설정하여 칩을 리셋 상태로 전환해야 하기 때문입니다.

 

(10) 내부 RC 발진기가 있는 AVR 칩을 사용할 경우, 퓨즈 비트 CKSEL 설정에 특히 주의하십시오. 정상적인 상황에서 CKSEL 비트 상태는 칩이 공장에서 출고될 때 내부 1MHz RC 발진기를 시스템 클록 소스로 사용하도록 기본 설정되어 있습니다. 외부 발진기를 시스템 클록 소스로 사용하는 경우, 먼저 CKSEL 퓨즈 비트를 올바르게 설정해야 합니다. 그렇지 않으면 전체 시스템의 타이밍에 문제가 발생합니다. 설계에서 외부 발진기(또는 특정 발진기 소스)를 시스템 클록 소스로 사용하지 않는 경우, CKSEL 퓨즈를 실수로 외부 발진기(또는 다른 발진기 소스)를 사용하도록 설정하지 않도록 주의하십시오. 이렇게 되면 ISP 프로그래밍을 통해 칩을 작동시킬 수 없게 됩니다(ISP는 칩의 시스템 클록이 작동하고 타이밍 제어 신호를 생성해야 하기 때문). 칩이 "고장난" 것처럼 보입니다. 이 문제를 해결하는 유일한 방법은 칩을 제거하고 병렬 프로그래밍 또는 JTAG(JTAG가 활성화되어 있고 대상 보드에 JTAG 인터페이스가 있는 경우)를 사용하는 것입니다. 또 다른 해결책은 칩의 크리스털 핀에 여러 유형의 발진기 클록 신호를 일시적으로 중첩하는 것입니다. ISP는 칩을 작동시키고, 내부 1MHz RC 발진기를 시스템 클럭 소스로 사용하도록 CKSEL을 즉시 구성한 다음, 실제 상황에 따라 CKSEL을 올바르게 재구성할 수 있습니다.

 

(11) IAP를 지원하는 AVR 칩을 사용할 때 BOOTLOADER 기능을 사용하지 않을 경우 퓨즈 비트 BOOTRST를 "0"으로 설정하지 않도록 주의하십시오. 0으로 설정하면 칩의 전원이 켜질 때 플래시 메모리의 0x0000부터 프로그램을 실행하지 않습니다. 칩 출고 시 BOOTRST 비트의 기본 상태는 "1"입니다. BOOTRST 구성, BOOTLOADER 프로그램 설계 및 IAP 적용에 대한 자세한 내용은 이 장의 관련 내용을 참조하십시오.

 

ATmega128의 중요 퓨즈 비트 구성

 

이전 섹션에서는 AVR 퓨즈 비트 구성의 핵심 사항과 주의 사항을 소개했습니다. 이 섹션에서는 일반적인 상황에서 ATmega128을 사용할 때 몇 가지 중요한 퓨즈 비트 구성에 대해 설명합니다.

 

(1) 퓨즈 비트 M103C. M103C는 ATmega128이 ATmega103 호환 모드에서 작동하는지 또는 ATmega128 네이티브 모드에서 작동하는지 설정합니다. ATmega128이 공장에서 출고될 때 M103C의 기본 상태는 "0"입니다. 즉, 기본적으로 ATmega103 호환 모드에서 작동합니다. 사용자 시스템 설계에서 칩을 ATmega128 모드로 작동하도록 하는 경우, 먼저 M103C의 상태를 "1"로 설정해야 합니다.

 

(2) CLKSEL0..3. CLKSEL0, CLKSEL1, CLKSEL2, CLKSEL3은 시스템의 클럭 소스를 선택하는 데 사용됩니다. 선택할 수 있는 클럭 소스는 다섯 가지 유형이 있으며, 각 유형은 더 미세하게 구분됩니다. 칩의 공장 출고 시 기본 상태는 CLKSEL3..0의 경우 "0001"이고, SUT1..0의 경우 "10"입니다. 즉, 내부 1MHz RC 발진기가 사용되고 가장 긴 시동 지연이 사용됩니다. 외부 발진기 회로의 작동 여부와 관계없이 초기 ISP 다운로드가 수행될 수 있도록 보장합니다. CLKSEL3..0 퓨즈 비트를 다시 쓸 때는 매우 주의해야 합니다. 잘못 쓰면 칩이 시작되지 않기 때문입니다. 이전 섹션 10번 항목의 설명을 참조하십시오.

 

(3) JTAGEN JTAG 인터페이스를 사용하지 않는 경우 JTAGEN 상태를 "1"로 설정해야 합니다. 즉, JTAG가 비활성화되고 JTAG 핀이 I/O 포트로 사용됩니다.

 

(4) SPIEN. SPI 모드에서 데이터 및 프로그램 다운로드가 허용됩니다. 기본 상태는 "0"입니다. 일반적으로 이 상태는 유지됩니다.

 

(5) WDTON. 워치독 타이머가 항상 켜져 있습니다. WDTON의 기본값은 "1"이며, 이는 워치독 타이머가 항상 비활성화됨을 의미합니다. 이 비트를 "0"으로 설정하면 워치독 타이머가 항상 켜져 내부 프로그램에서 제어할 수 없습니다. 이는 알 수 없는 코드가 프로그램 실행 시 레지스터에 값을 입력하여 워치독 타이머를 끄는 것을 방지하기 위해 설계되었습니다. 도망간다(감시 타이머를 끄려면 특별한 방법이 필요하지만, 안정성이 더 높다).

 

(6) EESAVE. 삭제 명령 실행 시 E2PROM의 내용을 유지할지 여부를 설정합니다. 기본 상태는 "1"이며, E2PROM의 내용이 플래시 메모리의 내용과 함께 삭제됨을 의미합니다. 이 비트가 "0"으로 설정되면 프로그램 다운로드 전 삭제 명령은 플래시 메모리 영역에만 유효하고 E2PROM 영역에는 유효하지 않습니다. 시스템 프로그램을 업데이트할 때 E2PROM의 데이터를 유지하려는 경우 이 기능이 매우 유용합니다.

 

(7) BOOTRST. 칩 전원이 켜질 때 실행되는 첫 번째 명령어의 주소를 설정합니다. 기본 상태는 "1"이며, 실행이 시작될 때 0x0000부터 시작됨을 의미합니다. BOOTRST가 "0"으로 설정되면 프로그램은 시작 시 BOOTLOADER 영역의 시작 주소부터 실행됩니다. BOOTLOADER 영역의 크기는 BOOTSZ1과 BOOTSZ0에 의해 결정되므로 시작 주소도 그에 따라 변경됩니다.

 

(8) BOOTSZ1 및 BOOTSZ0: 이 두 비트는 BOOTLOADER 영역의 크기와 시작 주소를 결정합니다. 기본 상태는 "00"으로, BOOTLOADER 영역이 4096워드이고 시작 주소가 0xF000임을 의미합니다.

 

(9) 퓨즈 비트를 구성할 때는 ISP 방식을 사용하는 것이 좋습니다. 구성 도구는 BASCOM-AVR(ISP 다운로드에 제한이 없는 온라인 다운로드 체험판)과 STK200/STK300과 호환되는 다운로드 케이블을 사용합니다(4장 참조).

 

 

 

참고: AVR마다 퓨즈 종류가 다릅니다. 사용하기 전에 칩 설명서를 주의 깊게 읽어야 합니다.

 

설명서를 꼼꼼히 읽어 사용 방법을 익히는 것뿐만 아니라 원리와 구조를 근본적으로 이해하고 숙달하는 것도 중요합니다. 하드웨어 엔지니어에게 데이터시트는 진정한 "경전"이며, 그 외의 모든 것은 "수련 경험"입니다. "경전"에 익숙하지 않으면 "요정"이 될 수 없습니다. 이것이 바로 "M128"과 "M8"의 목적 중 하나예요!

 

 

 

mega8 퓨즈 비트: 1: 프로그래밍되지 않음(선택되지 않음) 0: 프로그래밍됨(선택됨)

 

*******************************************

 

퓨즈 비트 설명 기본 설정

 

******************************************

 

RSTDISBL: 리셋 또는 I/O 기능 선택 1 1: 리셋 기능; 0: I/O 기능(PC6)

 

WDTON: 워치독 스위치 1 1: 워치독 켜짐(WDTCR로 활성화); 0: 워치독 비활성화

 

SPIEN: SPI 다운로드 활성화 0 1: SPI 다운로드 비활성화; 0: SPI 다운로드 활성화(참고: SPI 프로그래밍을 사용하는 경우 이 항목을 사용할 수 없음)

 

EEAVE: 굽는 동안 EEPROM 데이터 보존 1 1: 보존되지 않음; 0: 보존됨

 

BODEN: BOD 기능 제어 1 1: BOD 기능 비활성화; 0: BOD 기능 활성화

 

BODLEVEL: BOD 레벨 선택 1 1: 2.7V 레벨; 0: 4.0V 레벨

 

BOOTRST: 리셋 엔트리 선택 1 1: 프로그램 실행은 주소 0x0000에서 시작합니다. 0: 프로그램 실행은 부트 섹터에서 결정된 엔트리 주소에서 시작합니다.

 

******************************************

 

BOOTSZ1/0: 부트로더 크기 및 엔트리 00

 

00: 1024Word/0xc00;

 

01: 512Word/0xe00;

 

10: 256Word/0xf00;

 

11: 128Word/0xf80

 

***************************************

 

BLB02/01: 프로그램 영역 명령어 비트 선택 11

 

11: SPM 및 LPM 명령어 모두 실행이 허용됩니다.

 

10: SPM 명령어는 프로그램 영역에 쓰는 것을 금지합니다.

 

01: 부트 영역 LPM 명령어는 프로그램 영역의 내용을 읽는 것을 금지합니다. 인터럽트 벡터가 부트 섹터에 정의된 경우 프로그램 영역에서 인터럽트를 실행하는 것이 금지됩니다.

 

00: SPM 명령어는 프로그램 영역에 쓰는 것을 금지합니다. 부트 영역 LPM 명령어는 프로그램 영역의 내용을 읽는 것을 금지합니다. 인터럽트 벡터가 부트 섹터에 정의된 경우, 프로그램 영역에서 인터럽트를 실행하는 것이 금지됩니다.

 

***************************************

 

BLB12/11: 부트 섹터 명령어 선택 11

 

11: SPM 및 LPM 명령어 모두 실행이 허용됩니다.

 

10: SPM 명령어는 부트 섹터에 쓰는 것을 금지합니다.

 

01: 프로그램 LPM 명령어는 부트 섹터의 내용을 읽는 것을 금지합니다. 인터럽트 벡터가 프로그램 섹터에 정의된 경우, 부트 섹터에서 인터럽트를 실행하는 것이 금지됩니다.

 

00: SPM 명령어는 부트 섹터에 쓰는 것을 금지합니다. 프로그램 LPM 명령어는 부트 섹터의 내용을 읽는 것을 금지합니다. 인터럽트 벡터가 프로그램 섹터에 정의된 경우, 부트 섹터에서 인터럽트를 실행하는 것이 금지됩니다.

 

***************************************

 

LB2/1: 프로그램 영역 암호화 비트 선택 11

 

11: 암호화되지 않음

 

10: 프로그램 및 EEPROM 프로그래밍 기능 비활성화, 퓨즈 비트 잠금

 

00: 프로그램 및 EEPROM 프로그래밍 및 검증 기능 비활성화, 퓨즈 비트 잠금

 

(참고: 먼저 다른 퓨즈 비트를 프로그래밍한 다음 암호화 비트를 프로그래밍)

 

***************************************

 

CKSEL3/0: 클록 소스 선택 0001

 

CKOPT: 수정 발진기 선택 1

 

SUT1/0: 재설정 시작 시간 선택 10

 

***************************************

 

CKSEL3/0=0000: 외부 클록, CKOPT=0: 칩의 내부 XTAL1 핀을 GND에 연결하여 36PF 커패시터를 연결하도록 허용합니다. CKOPT=1: 커패시터 비활성화

 

----------------

 

CKSEL3/0=0001-0100: 교정된 내부 RC 발진기, CKOPT는 항상 1

 

0001: 1.0M

 

0010: 2.0M

 

0011: 4.0M

 

0100: 8.0M

 

----------------

 

CKSEL3/0 = 0101-1000: 외부 RC 발진기, CKOPT = 0: 칩의 내부 XTAL1 핀이 36PF 커패시터를 GND에 연결하도록 허용합니다. CKOPT = 1: 이 커패시터를 비활성화합니다

 

.0101: <0.9M

 

0110: 0.9-3.0M 0111:

 

3.0-8.0M

 

1000: 8.0-12.0M

 

----------------

 

CKSEL3/0 = 1001: 외부 저주파 수정 발진기, CKOPT = 0: 칩의 내부 XTAL1/XTAL2 핀이 36PF 커패시터를 GND에 연결할 수 있도록 합니다.CKOPT = 1: 이 커패시터를 비활성화합니다

 

.----------------

 

CKSEL3/0 = 1010-1111: 외부 수정 발진기, 세라믹 공진기.CKOPT = 0: 고진폭 발진 출력;CKOPT = 1: 저진폭 발진 출력.101X

 

: 0.4-0.9M

 

;110X: 0.9-3.0M;

 

111X: 3.0-8.0M.

 

***************************************

 

SUT1/0: 시작 시간 선택을 재설정합니다.

 

SUT는 선택한 수정 발진기에 따라 달라집니다.

 

 

 

3. 클록 선택 목록

 

클록 소스 시작 지연 퓨즈

 

외부 클록 6 CK + 0 ms CKSEL = 0000 SUT = 00

 

외부 클록 6 CK + 4.1 ms CKSEL = 0000 SUT = 01

 

외부 클록 6 CK + 65 ms CKSEL = 0000 SUT = 10

 

내부 RC 발진기 1 MHz 6 CK + 0 ms CKSEL = 0001 SUT = 00

 

내부 RC 발진기 1 MHz 6 CK + 4.1 ms CKSEL = 0001 SUT = 01

 

내부 RC 발진기 1 MHz 6 CK + 65 ms CKSEL = 0001 SUT = 10

 

내부 RC 발진기 2 MHz 6 CK + 0 ms CKSEL = 0010 SUT = 00

 

내부 RC 발진기 2 MHz 6 CK + 4.1 ms CKSEL = 0010 SUT=01

 

내부 RC 발진기 2MHz 6CK + 65ms CKSEL=0010 SUT=10

 

내부 RC 발진기 4MHz 6CK + 0ms CKSEL=0011 SUT=00

 

내부 RC 발진기 4MHz 6CK + 4.1ms CKSEL=0011 SUT=01

 

내부 RC 발진기 4MHz 6CK + 65ms CKSEL=0011 SUT=10

 

내부 RC 발진기 8MHz 6CK + 0ms CKSEL=0100 SUT=00

 

내부 RC 발진기 8MHz 6CK + 4.1ms CKSEL=0100 SUT=01

 

내부 RC 발진기 8MHz 6CK + 65ms CKSEL=0100 SUT=10

 

외부 RC 발진기 ≤0.9MHz 18 CK + 0 ms CKSEL=0101 SUT=00

 

외부 RC 발진기 ≤ 0.9 MHz 18 CK + 4.1 ms CKSEL=0101 SUT=01

 

외부 RC 발진기 ≤ 0.9 MHz 18 CK + 65 ms CKSEL=0101 SUT=10

 

외부 RC 발진기 ≤ 0.9 MHz 6 CK + 4.1 ms CKSEL=0101 SUT=11

 

외부 RC 발진기 0.9-3.0 MHz 18 CK + 0 ms CKSEL=0110 SUT=00

 

외부 RC 발진기 0.9-3.0 MHz 18 CK + 4.1 ms CKSEL=0110 SUT=01

 

외부 RC 발진기 0.9-3.0 MHz 18 CK + 65 ms CKSEL=0110 SUT=10

 

외부 RC 발진기 0.9-3.0MHz 6CK + 4.1ms CKSEL=0110 SUT=11

 

외부 RC 발진기 3.0-8.0MHZ 18CK + 0ms CKSEL=0111 SUT=00

 

외부 RC 발진기 3.0-8.0MHZ 18CK + 4.1ms CKSEL=0111 SUT=01

 

외부 RC 발진기 3.0-8.0MHZ 18CK + 65ms CKSEL=0111 SUT=10

 

외부 RC 발진기 3.0-8.0MHZ 6CK + 4.1ms CKSEL=0111 SUT=11

 

외부 RC 발진기 8.0-12.0MHZ 18CK + 0ms CKSEL=1000 SUT=00

 

외부 RC 발진기 8.0-12.0MHZ 18 CK + 4.1 ms CKSEL=1000 SUT=01

 

외부 RC 발진기 8.0-12.0MHZ 18 CK + 65 ms CKSEL=1000 SUT=10

 

외부 RC 발진기 8.0-12.0MHZ 6 CK + 4.1 ms CKSEL=1000 SUT=11

 

저주파 수정 발진기(32.768kHz) 1K CK + 4.1 ms CKSEL=1001 SUT=00

 

저주파 수정 발진기(32.768kHz) 1K CK + 65 ms CKSEL=1001 SUT=01

 

저주파 수정 발진기(32.768kHz) 32K CK + 65 ms CKSEL=1001 SUT=10

 

저주파 석영/세라믹 발진기(0.4-0.9MHz) 258 CK + 4.1ms CKSEL=1010 SUT=00

 

저전력 석영/세라믹 발진기(0.4-0.9M) 258 CK + 65ms CKSEL=1010 SUT=01

 

저전력 석영/세라믹 발진기(0.4-0.9M) 1K CK + 0ms CKSEL=1010 SUT=10

 

저전력 석영/세라믹 발진기(0.4-0.9M) 1K CK + 4.1ms CKSEL=1010 SUT=11

 

저전력 석영/세라믹 발진기(0.4-0.9M) 1K CK + 65ms CKSEL=1011 SUT=00

 

저진동 석영/세라믹 발진기(0.4-0.9M) 16K CK + 0ms CKSEL=1011 SUT=01

 

저진동 석영/세라믹 발진기(0.4-0.9M) 16K CK + 4.1ms CKSEL=1011 SUT=10

 

저진동 석영/세라믹 발진기(0.4-0.9M) 16K CK + 65ms CKSEL=1011 SUT=11

 

중진동 석영/세라믹 발진기(0.9-3.0M) 258 CK + 4.1ms CKSEL=1100 SUT=00

 

중진동 석영/세라믹 발진기(0.9-3.0M) 258 CK + 65ms CKSEL=1100 SUT=01

 

중진동 석영/세라믹 발진기(0.9-3.0M) 1K CK + 0 ms CKSEL=1100 SUT=10

 

중간 석영/세라믹 발진기(0.9-3.0M) 1K CK + 4.1ms CKSEL=1100 SUT=11

 

중간 석영/세라믹 발진기(0.9-3.0M) 1K CK + 65ms CKSEL=1101 SUT=00

 

중간 석영/세라믹 발진기(0.9-3.0M) 16K CK + 0ms CKSEL=1101 SUT=01

 

중간 석영/세라믹 발진기(0.9-3.0M) 16K CK + 4.1ms CKSEL=1101 SUT=10

 

중간 석영/세라믹 발진기(0.9-3.0M) 16K CK + 65ms CKSEL=1101 SUT=11

 

높은 석영/세라믹 발진기 (3.0-8.0M) 258 CK + 4.1ms CKSEL=1110 SUT=00

 

고진공 석영/세라믹 발진기(3.0-8.0M) 258 CK + 65ms CKSEL=1110 SUT=01

 

고진공 석영/세라믹 발진기(3.0-8.0M) 1K CK + 0ms CKSEL=1110 SUT=10

 

고진공 석영/세라믹 발진기(3.0-8.0M) 1K CK + 4.1ms CKSEL=1110 SUT=11

 

고진공 석영/세라믹 발진기(3.0-8.0M) 1K CK + 65ms CKSEL=1111 SUT=00

 

고진공 석영/세라믹 발진기(3.0-8.0M) 16K CK + 0ms CKSEL=1111 SUT=01

 

고출력 석영/세라믹 발진기(3.0-8.0M) 16K CK + 4.1ms CKSEL=1111 SUT=10

 

고출력 석영/세라믹 발진기(3.0-8.0M) 16K CK + 65ms CKSEL=1111 SUT=11

 

참고: 1. 공장 기본 설정

 

: CKOPT=1(미설정) 시 최대 동작 주파수는 8MHz입니다.

 

내부 RC 발진은 1MHz입니다. 6 CK + 4.1ms CKSEL=0001 SUT=01

 

 

 

 

 

 

 

프로그래밍 모드로 진입할 수 없고 "연결 오류"라는 메시지가 나타나면 다음과 같이 해결할 수 있습니다. 제가 직접 시도해 봤는데 잘 작동합니다. (이 글도 재게시되었습니다.)

 

AVR의 퓨즈 구성을 변경하고 전원을 다시 켠 후 ISP를 사용하여 다운로드하려고 하면 "프로그래밍 모드로 진입하지 못했습니다"와 같은 메시지가 나타납니다. 퓨즈가 잘못되어 칩이 어떤 클럭 주파수를 사용해야 하는지 알지 못하고 오작동하는 것일 가능성이 높습니다(이는 내부 RC 발진기에만 해당).

 

외부 능동 수정 발진기를 추가하면 문제를 해결할 수 있습니다.

 

51 시리즈 마이크로컨트롤러의 ALE 핀을 M16의 XTAL1 핀에 연결하여 외부 클럭 소스로 사용할 수 있습니다. 제가 직접 시도해 보니 즉시 작동하여 잘못 설정된 퓨즈를 빠르게 복구했습니다.

 

 

 

포럼 재게시:

 

 

 

AVR-frighter를 사용하여 ATMEGA8 마이크로컨트롤러를 프로그래밍하고 있는데, 프로그램이 내부 크리스털 발진기를 사용하고 있어서 속도가 매우 느립니다. 외부 크리스털 발진기를 사용하려면 어떻게 설정해야 하나요? 24M 크리스털을 사용하고 있는데, 외부 크리스털과 함께 사용하려면 어떤 설정이 더 필요할까요?

 

 

 

문제 해결: 퓨즈가 올바르게 구성되지 않았고, 외부 크리스털이 진동하지 않았으며, 주파수 카운터가 측정할 수 없었습니다. 아래와 같이 구성했더니 작동했습니다. M8은 M16과 동일합니다.

 

자료 출처 

 

 

 

반응형