산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

마이크로컨트롤러 타이머의 실시간 시계(RTC)

이 문서는 마이크로컨트롤러 내부의 RTC를 설명하는 마이크로컨트롤러 타이머 시리즈의 세 번째입니다.

이 기사는 마이크로컨트롤러 타이머에 대한 시리즈의 세 번째 기사입니다. 첫 번째 기사에서는 대부분의 타이머 유형의 주요 기능을 설명하고 주기적인 타이머를 다루고, 두 번째 기사에서는 펄스 폭 변조 MCU 타이머를 다룹니다.

실시간 시계(RTC)는 1초 타임베이스를 유지하기 위한 전용 타이머입니다. 또한 RTC는 소프트웨어나 하드웨어에서 시계 시간과 달력 날짜를 추적하는 데 자주 사용됩니다. RTC의 많은 기능은 매우 전문화되어 있으며 높은 정확도와 매우 안정적인 작동을 유지하는 데 필요합니다. I 2 와 인터페이스하는 마이크로컨트롤러 외부에 RTC 장치가 있습니다. C 또는 SPI 버스.

이 문서에서는 마이크로컨트롤러 내부의 RTC에 대해 설명합니다.

실시간 시계 개요

실시간 시계의 기본 기능은 1초 간격을 생성하고 연속 카운트를 유지하는 것입니다.

아래 다이어그램에서 이에 대한 표현을 볼 수 있습니다.

그림 1. 이 타이밍 다이어그램은 RTC의 기본 기능을 보여줍니다.

또한 초 카운터를 읽고 3초 후에 이벤트 B가 발생하도록 예약하는 프로그램 기능 A가 표시됩니다. 이 동작을 알람이라고 합니다. 초 카운터는 계속 실행되고 중지 및 시작되지 않습니다. RTC의 두 가지 기본 요구 사항은 정확성과 지속적인 작동입니다.

다음 다이어그램은 RTC의 일반적인 하드웨어 기능을 보여줍니다.

그림 2. 실시간 시계 하드웨어 기능

RTC에는 외부 수정과 외부 주파수 기준을 사용하는 옵션이 있는 자체 내부 발진기가 있는 경우가 많습니다. 모든 클럭 소스는 32,768Hz에서 실행됩니다. 외부 클록 소스를 통해 TCXO(온도 보상 수정 발진기)와 같은 매우 정확하고 안정적인 장치를 사용할 수 있습니다.

클럭 소스는 멀티플렉서로 선택되고 클럭을 1초 클럭을 생성하기 위해 32,768(215)의 인수로 나누는 프리스케일러에 입력됩니다.

기본 RTC에는 일반적으로 32비트 이상인 초 카운터가 있습니다. 일부 RTC에는 시간과 달력 날짜를 추적하는 특수 카운터가 있습니다.

시간 및 날짜 카운터가 없는 기본 RTC는 이러한 목적으로 소프트웨어를 사용합니다. 일반적인 옵션은 출력 핀의 1Hz 구형파입니다. RTC에는 프로세서 인터럽트를 생성하는 몇 가지 가능한 이벤트가 있습니다.

RTC에는 나머지 마이크로컨트롤러의 전원이 꺼졌을 때 작동을 허용하는 전용 전원 핀이 있는 경우가 많습니다. 이 전원 핀은 일반적으로 배터리 또는 별도의 전원 공급 장치에 연결됩니다.

RTC 정확도 및 주파수 보정

RTC의 정확도는 32,768Hz 클럭 소스에 따라 다릅니다. 잘 설계된 수정 발진기에서 오류의 주요 원인은 수정입니다. 매우 정확한 타이밍을 위해 외부 TCXO를 사용하거나 보다 저렴한 크리스털 및 내부 발진기와 함께 특수 주파수 보상 기술을 사용할 수 있습니다. 수정의 오류에는 세 가지 주요 원인이 있습니다.

<울>
  • 초기 회로 및 수정 허용오차
  • 온도에 따른 결정 드리프트
  • 크리스탈 노화
  • 아래 그래프는 RTC 정확도와 관련된 몇 가지 개념을 보여줍니다.

    그림 3. Texas Instruments에서 제공한 온도를 사용한 오류 측정을 보여주는 그래프

    이 그래프의 진한 파란색 궤적은 일반적인 초기 허용 오차와 온도에 따른 변화를 보여줍니다. 분홍색 트레이스는 온도 오류만 보여줍니다. 온도 보상의 핵심은 결정의 거동이 잘 알려져 있고 2차 방정식으로 예측된다는 사실입니다. 회로기판 제작 후 초기 오차를 측정하고 온도를 알면 가장 큰 오차 원인을 보상할 수 있다.

    노란색 밴드는 신중한 보정 후 정확도에 대한 합리적인 목표입니다. 1년에 1ppm은 약 30초라는 것을 명심하십시오. 크리스탈 노화는 보상하기 어렵습니다. 다행히도 노화는 일반적으로 연간 몇 ppm에 불과합니다.

    RTC 타이밍 변경 방법

    다음은 오류를 보상하기 위한 시스템의 일부로 RTC의 타이밍을 변경하는 두 가지 방법입니다.

    첫 번째 다이어그램(그림 4)은 초 카운터의 각 주기에 대해 프리스케일러가 계산한 오실레이터 주기 수를 나타냅니다.

    처음 2초는 일반적인 32,768주기입니다. 소프트웨어는 온도 판독값과 초기 오류를 사용하여 발진기가 약간 빠르게 실행되고 32,768 사이클이 실제로 0.99990초의 기간임을 결정합니다. 이 작은 오류를 보상하기 위해 소프트웨어는 RTC에 시간을 추가하기 위해 매 4초마다 프리스케일러의 계수를 32,781로 변경하도록 지시합니다.

    그림 4. 프리스케일러에 의해 계산된 오실레이터 사이클의 표현

    이 기술은 초에서 초로의 주기 변화가 적다는 장점이 있습니다. 그러나 이 기술은 특수 프리스케일 카운트와 특수 카운트 적용 사이의 시간(초)을 유지하기 위해 조정 가능한 프리스케일러와 추가 레지스터가 필요합니다. 나는 이것이 꽤 멋지다고 생각한다. 약간 복잡하지만 꽤 멋집니다.

    RTC에 타이밍을 조정하는 특수 프리스케일러가 없으면 어떻게 됩니까? 이 다이어그램은 다른 방법을 보여줍니다.

    그림 5. 그림 4와 같은 상황이지만 프리스케일러가 없습니다.

    이 경우 상자의 숫자는 초 카운터입니다. 표시된 카운트는 100251 다음에 100252입니다. 소프트웨어는 계속해서 조정을 계산하고 RTC 초 카운트를 추적했습니다. 오류가 정확히 1초까지 누적되면 소프트웨어는 누적 오류를 조정하기 위해 1초를 더하거나 뺍니다.

    이 기술의 단점은 조정이 완료될 때 초에서 초로의 변화가 크다는 것입니다. 이 기술은 모든 RTC와 호환된다는 장점이 있습니다.

    RTC의 보안

    보안은 흥미로운 요구 사항입니다. 서비스 사용 또는 리소스 소비에 대해 고객에게 비용을 청구하는 데 시간이 사용되는 애플리케이션이 있습니다. RTC의 해킹을 방지하거나 탐지하는 것과 관련된 광범위한 관행이 있습니다. 기술은 인클로저에 대한 침입 감지에서 마이크로컨트롤러 내의 특수 기능에 이르기까지 다양합니다.

    현재 사용 중인 마이크로컨트롤러의 RTC에는 소프트웨어가 중요한 레지스터를 영구적으로 잠글 수 있도록 하는 특수 레지스터가 있습니다. 일단 잠기면 변경할 수 없으며 해킹이나 통제 불능 코드로부터 보호됩니다. 시간을 변경하려면 마이크로컨트롤러를 완전히 재설정해야 합니다.

    시간 및 날짜

    일부 RTC에는 시간과 달력 날짜를 유지하기 위한 하드웨어 카운터가 있습니다. 여기에는 분, 시간, 일, 월, 년에 대한 카운터가 필요하고 윤년에 대한 고려가 필요합니다. 하루 중 시간과 달력 날짜도 소프트웨어로 보관할 수 있습니다.

    두드러진 예는 time.h 파일에서 볼 수 있는 C 표준 라이브러리의 함수입니다. 마이크로컨트롤러의 경우 이 시스템은 RTC의 초 카운터를 기반으로 할 수 있습니다. time.h 라이브러리를 완전히 지원하려면 4개의 작은 사용자 정의 함수를 작성해야 합니다.

    여기서 관심 있는 함수 중 하나는 라이브러리의 time( ) 함수에 의해 호출됩니다. 이 함수는 일반적으로 1970년 1월 1일인 "epoch"라고 하는 시작점 이후의 시간을 초 단위로 반환합니다. 일반적으로 읽을 사용자 지정 함수 하드웨어 타이머의 이름은 get_time() 또는 이와 유사한 변형입니다. 모든 get_time()은 초 카운터를 읽고 값을 반환합니다. 라이브러리는 나머지 작업을 수행하여 이 시간을 초 단위로 날짜와 날짜의 현재 시간으로 바꿉니다.

    32비트 초 카운터 문제

    32비트 초 카운터는 오랫동안 실행되지만 영원히 실행되는 것은 아닙니다. 제한된 카운트 범위 때문에 심각한 문제가 있을 수 있습니다. 예를 들어, C 표준 라이브러리를 사용하는 32비트 카운터와 1970년 1월 1일의 에포크를 기반으로 하는 시스템 시간은 카운터가 최대 카운트 이후에 롤오버될 때 2038년 1월에 실패할 수 있습니다. 이 문제는 Y2038 문제로 알려져 있습니다.

    NASA 딥 임팩트 우주 임무에서 혜성을 연구하는 데 실패했습니다. 주요 임무 목표는 달성되었고 우주선은 계속해서 다른 물체를 연구했습니다. 그러나 2013년 갑자기 통신이 두절되었습니다. 다음은 NASA의 공식 논평입니다.

    <블록 인용>

    "정확한 손실 원인은 알려져 있지 않지만 분석 결과 Deep Impact의 방향에 대한 통제력 상실로 이어질 수 있는 컴퓨터 시간 태깅의 잠재적인 문제가 밝혀졌습니다."

    - 2013년 NASA 보도 자료

    실패의 가능한 원인은 32비트 타이머가 0.1초 단위로 시간을 유지하다가 롤오버되어 임무가 "종료"되었기 때문입니다.

    시간과 날짜가 관련될 때 내 제안은 디자인에서 예상 수명보다 더 오래 사용하는 것입니다.

    다음 내용

    다음 기사에서는 Watchdog 타이머로 시리즈를 마무리합니다.


    산업기술

    1. 클라우드 관리를 실제 IT 관행으로 만들 때입니다
    2. 커패시터 충전 및 방전
    3. 전압 및 전류 계산
    4. 진정한 기회는 산업적 기회입니다
    5. 작업 장비:업그레이드할 시간입니까?
    6. 디지털 트랜스포메이션의 7가지 동인
    7. 고성능 가공을 받아들여야 할 때입니까?
    8. 로봇이 실시간으로 3D 변경 사항을 감지하고 공유합니다.
    9. 얼음 축적을 실시간으로 감지하는 더 나은 센서
    10. 실시간 엔터프라이즈 상호 운용성