embeded/Cortex-M4 Ti2017.01.10 18:53

정체 불명으로 의외로 빈번하게 안켜져서

하나하나 죽여 나가다 보니


while(!SysCtlPeripheralReady(SYSCTL_PERIPH_HIBERNATE)) ; 

위의 구문에서 무한루프 돌고 있었던거 같은데

VDD3ON 모드도 이야기가 나오고 이것저것 나오지만..

결론은 tivaware나 tm4c 시리즈가 이상해요 인가?


I discovered this on the Launchpad. I cannot hibernate with VDD3ON turned off becauseof the way my LDO is connected.

Yes, on the EK-TM4C123 only VDD3ON is the available Hibernate Mode.

[링크 : https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/389095/1375698]


[링크 : https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/385023/1358006#1358006]

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c hibernate module 초기화 무한루프  (0) 2017.01.10
tivaware swd debug / semihosting  (0) 2017.01.10
tm4c 하이버네이트 소스...  (0) 2016.12.20
tm4c rtc trim...  (0) 2016.11.23
tm4c rtc 빨라...  (0) 2016.11.02
tm4c hibernate module 초기화 관련..  (0) 2016.11.01
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2017.01.10 18:36


[링크 : http:/ /processors.wiki.ti.com/index.php/Debug_Handbook_for_CCS]

    [링크 : http://processors.wiki.ti.com/index.php/Debug_Handbook_for_CCS#Cortex_M3.2FM4.2FTiva.2FMSP432]


음.. XDS-200 같은 고가 JTAG이 있어야 가능한건가?

ARM's Serial Wire Output(SWO) Trace capability is one such tool incorporated in Code Composer Studio for the following Cortex M based TI devices:

MSP432

Tiva C (TM4C129 and TM4C123)

CC26xx

CC13xx


Tiva/TM4C

Pre-requisites:

CCS Version 6.1.1 or higher

XDS200 debug probe firmware version 1.0.0.5 or later. (Contact your XDS200 vendor for details on how to determine debug probe version and update it if needed).

[링크 : http://processors.wiki.ti.com/index.php/SWO_Trace]


+

semihosting을 활성화 하고 그거에 맞춰서 코딩해라?

[링크 : http://www.coocox.org/forum/viewtopic.php?f=2&t=3588]

[링크 : http://www.keil.com/support/man/docs/armcc/armcc_pge1358787046598.htm]

[링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471g/Bgbjjgij.html]

[링크 : http://www.trace32.com/wiki/index.php/SemiHosting_과_그_활용]

[링크 : http://processors.wiki.ti.com/index.php/Semihosting]

[링크 : http://www.edaboard.com/thread207776.html]

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c hibernate module 초기화 무한루프  (0) 2017.01.10
tivaware swd debug / semihosting  (0) 2017.01.10
tm4c 하이버네이트 소스...  (0) 2016.12.20
tm4c rtc trim...  (0) 2016.11.23
tm4c rtc 빨라...  (0) 2016.11.02
tm4c hibernate module 초기화 관련..  (0) 2016.11.01
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.12.20 10:49

my Ti 계정 있어야 함

진즉에 검색해볼걸 그랬나...


SW-DK-TM4C123G-2.1.3.156.exeDK-TM4C123GL Kit Software60168K

[링크 : http://software-dl.ti.com/tiva-c/SW-TM4C/latest/index_FDS.html]



소스 기본 골격 자체는 lm3s1968이랑 차이가 없네

    //
    // Check to see if Hibernation module is already active, which could mean
    // that the processor is waking from a hibernation.
    //
    if(HibernateIsActive())
    {
        //
        // Read the status bits to see what caused the wake.
        //
        ui32Status = HibernateIntStatus(0);
        HibernateIntClear(ui32Status);

        //
        // If the wake is due to button or RTC, then read the first location
        // from the battery backed memory, as the hibernation count.
        //
        if(ui32Status & (HIBERNATE_INT_PIN_WAKE | HIBERNATE_INT_RTC_MATCH_0))
        {
            HibernateDataGet(&ui32HibernateCount, 1);
        }
    }

    //
    // Enable the Hibernation module.  This should always be called, even if
    // the module was already enabled, because this function also initializes
    // some timing parameters.
    //
    HibernateEnableExpClk(ROM_SysCtlClockGet());

    //
    // If the wake was not due to button or RTC match, then it was a reset.
    //
    if(!(ui32Status & (HIBERNATE_INT_PIN_WAKE | HIBERNATE_INT_RTC_MATCH_0)))
    {
        //
        // Configure the module clock source.
        //
        HibernateClockConfig(HIBERNATE_OSC_LOWDRIVE);

        //
        // Wait a couple of seconds in case we need to break in with the
        // debugger.
        //
        SysTickWait(3 * 100);

        //
        // Allow time for the crystal to power up.  This line is separated from
        // the above to make it clear this is still needed, even if the above
        // delay is removed.
        //
        SysTickWait(15);
    }

    //
    // Clear and enable the RTC and set the match registers to 5 seconds in the
    // future. Set both to same, though they could be set differently, the
    // first to match will cause a wake.
    //
    HibernateRTCSet(0);
    HibernateRTCEnable();
    HibernateRTCMatchSet(0, 5);

    //
    // Set wake condition on pin or RTC match.  Board will wake when 5 seconds
    // elapses, or when the button is pressed.
    //
    HibernateWakeSet(HIBERNATE_WAKE_PIN | HIBERNATE_WAKE_RTC);

    //
    // Request hibernation.
    //
    HibernateRequest();


신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c hibernate module 초기화 무한루프  (0) 2017.01.10
tivaware swd debug / semihosting  (0) 2017.01.10
tm4c 하이버네이트 소스...  (0) 2016.12.20
tm4c rtc trim...  (0) 2016.11.23
tm4c rtc 빨라...  (0) 2016.11.02
tm4c hibernate module 초기화 관련..  (0) 2016.11.01
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.11.23 17:08

원인 불명(?)으로

trim 값이 0x7FFF가 기본값인데

0x0114정도 들어있어서

어느 순간인가 갑자기 1초 더해지는게 아닌 2초가 더해지는 현상을 발견 -_-


결론은.. 이걸 어떻게 구워삶냐 인가..

일단 

  if(HibernateIsActive())

{

HibernateRTCTrimSet(0x7FFF);

}

식으로 되어 있어야 trim이 설정되는거 같은데 끄응... 머리 아프네

어떤 조건에서 설정이 되는지 알수가 없다보니..


+

일단은.. hibernate가 on 되어야 설정이 되는데

그렇다면.. 설정이 안된채로 넘어간적도 있다는 건가? 싶은데.. 머지?


데이터 시트 상으로는, 64초 마다 더하거나 뺸다고

그런 이유로 보고 있으면 갑자기 시간이 2초가 간다거나 하는 식으로 드러난다.

(물론 0x7FFF 보다 적을 경우는 빠르게 가고 0x7FFF < x < 0x10000 일 경우에는 느리게가는 듯?)


+

lm3s1607의 hibernate예제

클럭 초기화가 두번이네.. 일단은 이렇게 해주니 문제없이 rtc가 가동되는 듯..

     //

    // Enable the Hibernation module.

    //

    SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);


    //

    // Per an erratum, sometimes on wake the Hibernation module control

    // register will be cleared when it should not be.  As a workaround a

    // location in the non-volatile data area can be read instead.  This data

    // area is cleared to 0 on reset, so if the first location is non-zero then

    // the Hibernation module is in use.  In this case, re-enable the

    // Hibernation module which will ensure that the control register bits have

    // the proper value.

    //

    HibernateDataGet(&ulHibernateCount, 1);

    if(ulHibernateCount)

    {

        HibernateEnableExpClk(SysCtlClockGet());

        HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128);

    }


    //

    // Check to see if Hibernation module is already active, which could mean

    // that the processor is waking from a hibernation.

    //

    if(HibernateIsActive())

    {

        //

        // Read the status bits to see what caused the wake.

        //

        ulStatus = HibernateIntStatus(0);

    }


    //

    // Enable the Hibernation module.  This should always be called, even if

    // the module was already enabled, because this function also initializes

    // some timing parameters.

    //

    HibernateEnableExpClk(SysCtlClockGet());


    //

    // If the wake was not due to button or RTC match, then it was a reset.

    //

    if(!(ulStatus & (HIBERNATE_INT_PIN_WAKE | HIBERNATE_INT_RTC_MATCH_0)))

    {

        //

        // Configure the module clock source.

        //

        HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128);


        //

        // Finish the wake cause message.

        //

        RIT128x96x4StringDraw("RESET", COL(7), ROW(4), 15);


        //

        // Wait a couple of seconds in case we need to break in with the

        // debugger.

        //

        SysTickWait(3 * 100);


        //

        // Allow time for the crystal to power up.  This line is separated from

        // the above to make it clear this is still needed, even if the above

        // delay is removed.

        //

        SysTickWait(15);

    }


    //


신고
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.11.02 19:19

32.768kHz를 달았는데

10분에 10초 빨라짐..

도대체 머가 문제일까...


//*****************************************************************************

//

// Macros defining oscillator configuration options for the

// HibernateClockConfig() function.

//

//*****************************************************************************

#define HIBERNATE_OSC_LFIOSC    0x00080000

#define HIBERNATE_OSC_LOWDRIVE  0x00000000

#define HIBERNATE_OSC_HIGHDRIVE 0x00020000

#define HIBERNATE_OSC_DISABLE   0x00010000

#define HIBERNATE_OUT_WRSTALL   0x20000000

#define HIBERNATE_OUT_SYSCLK    0x00000001

#define HIBERNATE_OUT_ALT1CLK   0x00000002 


드라이버 상에서

LOWDRIVER / HIGHDRIVER는 12pF / 24pF 관련설정이고 기본은 12pF(LOW)

OSC_DISABLE은 아래의 OSCBYP 쪽인데.. 설정을 하던 안하던 동일하다..

설정문제일까.. 클럭문제일까..


일단 32.7인데 33k 정도 잡히는거 봐서 빠른게 당연한건가 싶기도 하고

오실로스코프 한계일지도 모르지만 클럭이 날뛰면서 60k로도 잡히고 1M급으로도 날뛰어서

머가 문제인지... ㅠㅠ



+

RTC trim으로 조절하라는데 끄응...

[링크 : https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/257944]


어떻게 보면.. 0x7FFF는 32,767이고 

32.768kHz 에서 카운터로 사용하는 녀석이라 빠른 만큼 조절해주면

1초를 맞출수는 있는데.. 그래도 어느정도는 하드웨어로 맞추는게 낫지 않으려나...


extern void HibernateRTCTrimSet(uint32_t ui32Trim); 




계산을 해보니 1분 = 60초에 1초가 더 빨라지는 식이니

32768hz * 60 = 1분

32768/60 = 546.1333 이니

대충.. 32222 = 0x7DDE로 trim을 설정하면 시간이 맞아 지려나?

미네랄 여전히 똑같이 빠르네 -_-

(2분 확인)


미친척 더해보자? ㅋㅋ

0x8222


---

0xFFFE 로 했는데도 속도에 차이가 없는걸 보면 다른 설정을 건드려야

trim이 적용 되는 걸..지도?

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c 하이버네이트 소스...  (0) 2016.12.20
tm4c rtc trim...  (0) 2016.11.23
tm4c rtc 빨라...  (0) 2016.11.02
tm4c hibernate module 초기화 관련..  (0) 2016.11.01
32.768kHz 크리스탈과 1Mohm 저항 유무에 따른 파형 차이  (0) 2016.10.28
tm4c FIFO 길이  (0) 2016.10.26
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.11.01 11:04

예전에는 다른거(timer라던가 uart라던가) 초기화 다 하고

hibernate 모듈을 해주어도 부팅이 문제가 없었는데

tm4c 되면서 그런가.. 안켜짐!


아무튼 초기화 루틴중 hibernate 쪽을 가장 앞으로 놓고

SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);

if(HibernateIsActive())

{

    HibernateIntClear(HibernateIntStatus(0));

return;


이렇게 처리해주니 일단 부팅은 정상적으로 잘 진행된다.

(몇번 껏다 켜야 겨우 부팅이 되었음)

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c rtc trim...  (0) 2016.11.23
tm4c rtc 빨라...  (0) 2016.11.02
tm4c hibernate module 초기화 관련..  (0) 2016.11.01
32.768kHz 크리스탈과 1Mohm 저항 유무에 따른 파형 차이  (0) 2016.10.28
tm4c FIFO 길이  (0) 2016.10.26
tm4c hibernate module oscillator 관련  (0) 2016.10.26
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.10.28 09:23

4.19MHz에서는 1Mohm 문제 없었는데

32.768kHz에서는 아래와 같이 파형이 완전 차이가 난다.


흰색(ref)가 32.768k + 1Mohm

노란색이 32.768k + 저항없음


SAMSUNG | SHV-E120K | Aperture priority | Average | 1/15sec | F/2.6 | 0.00 EV | 4.0mm | ISO-160 | Off Compulsory | 2016:10:28 09:17:11


결론 : lm3s1607 -> tm4c123 마이그레이션 중 hibernate module 클럭에서 저항은 빠져야 함


+

lm3s1607 데이터 시트상 회로

X1에 평행하게 RL이 존재하는데 저항 용량은 알아서?


tm4c1231e6pm 데이터 시트상 회로

X1에 평행한 RL이 사라졌다.

LM3S devices support a 4.194304-MHz crystal. This crystal is not supported for TM4C devices,
however a 32.768-kHz crystal is supported. In addition, an external load resistor is not required
  

[원본 : spma049a.pdf]

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c rtc 빨라...  (0) 2016.11.02
tm4c hibernate module 초기화 관련..  (0) 2016.11.01
32.768kHz 크리스탈과 1Mohm 저항 유무에 따른 파형 차이  (0) 2016.10.28
tm4c FIFO 길이  (0) 2016.10.26
tm4c hibernate module oscillator 관련  (0) 2016.10.26
tm4c 비교표  (0) 2016.10.26
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.10.26 18:10

기본값은

RX 0x02

TX 0x10


라이브러리에서 확인하면

#define UART_FIFO_TX4_8         0x00000002  // Transmit interrupt at 1/2 Full

#define UART_FIFO_RX4_8         0x00000010  // Receive interrupt at 1/2 Full


1/2이 차면 한번씩 인터럽트를 발생시키게 되어 있다.

신고
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.10.26 17:17




main clk

0~2.6V


hibernate clk

0.5~1.2v


문제 없어야 하는거 아닌가?

~HIB도 계속 high도 도대체 머가 문제지.. ㅠㅠ


+


[링크 : http://www.ti.com/lit/an/spma065/spma065.pdf]


the problem is resolved. the 1Mresistor is just the problem. thanks very much! regarding this problem, your answer is the best answer i have see in this forum.

[링크 : https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/385581]


+

아마도.. lm3s1607에서 4.1MHz 클럭을 쓰면서 1Mohm 저항을 달아서 섰는데

그걸 그대로 사용해서 그런걸지도?


+

2016.11.01

1M 저항 달아서 발진이 억눌리면서 안된 문제였음 -_-

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

32.768kHz 크리스탈과 1Mohm 저항 유무에 따른 파형 차이  (0) 2016.10.28
tm4c FIFO 길이  (0) 2016.10.26
tm4c hibernate module oscillator 관련  (0) 2016.10.26
tm4c 비교표  (0) 2016.10.26
tm4c HibernateEnableExpClk() 차이점  (0) 2016.10.22
tm4c ..어라? hibernate...  (0) 2016.10.20
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M4 Ti2016.10.26 14:29

희한하네..


암튼 ek-tm4c123 쪽 보다는 

dk-tm4c123 쪽이 더 비싸고 좋고(어?)

예제도 많은듯

[링크 : https://github.com/yuvadm/tiva-c/tree/master/boards/dk-tm4c123g]

[링크 : https://github.com/yuvadm/tiva-c]




[링크 : http://www.ti.com/lit/sg/spmt285d/spmt285d.pdf]

신고

'embeded > Cortex-M4 Ti' 카테고리의 다른 글

tm4c FIFO 길이  (0) 2016.10.26
tm4c hibernate module oscillator 관련  (0) 2016.10.26
tm4c 비교표  (0) 2016.10.26
tm4c HibernateEnableExpClk() 차이점  (0) 2016.10.22
tm4c ..어라? hibernate...  (0) 2016.10.20
tm4c123 rtc hibernate module  (0) 2016.09.28
Posted by 구차니

댓글을 달아 주세요