embeded2017.04.19 17:22

와.. 8bit 마이컴에서 float 연산이 미친건 알았지만

이렇게 까지 성능 차이 날 줄이야...


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


결론 : 8bit에서 32bit 정수 연산만 해도 미친짓급.. ㄷㄷㄷ 그러니 8051에서 float 곱하기는 삼가하자?

신고

'embeded' 카테고리의 다른 글

프로세서별 연산량 벤치마크(float)  (0) 2017.04.19
PCB 마킹 의미  (0) 2016.07.28
COM26T2844VTX 관련...  (0) 2016.03.16
링커 스크립트 문법(ld syntax)  (0) 2015.12.17
시리얼 저항 / 직렬 저항 / 댐핑 저항  (0) 2015.12.17
microchip PIC  (0) 2015.09.08
Posted by 구차니

댓글을 달아 주세요

캐리어 주파수가 도대체 머지...


[링크 : http://blog.naver.com/sigsaly/220556597729]

[링크 : http://cafe.naver.com/circuitsmanual/162950]

[링크 : http://blog.naver.com/realutopia/120013694779]

[링크 : http://blog.naver.com/ecima/80014298773]


In PWM, the frequency is usually fixed to a value. For analog servos the frequency is 30-50 Hz, and for digital servos it is 300 to 400 Hz.

[링크 : http://pcbheaven.com/wikipages/How_RC_Servos_Works/]



+

2017.05.20

캐리어는 모르겠고 PWM 주파수는 간단하게 말해서 PWM 파형에 대한 주파수 임(응?)

PWM duty 비의 정밀도랑은 상관없이 "PWM 명령어 주기"를 의미하므로

다르게 해석하면, 얼마나 명령어를 자주 보낼수 있냐에 가까운 개념

높은 응답성을 필요로 한다면 높은 PWM 주파수가 필요하고 반대급부로 pwm 하나의 명령 자체의 길이는 짧아진다.

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

avr pwm 관련  (0) 2017.04.19
IAR AVR은 start section 설정이 안되나?  (0) 2017.02.17
avr hex start addres 다시 설정이 가능할까?  (0) 2017.02.12
우리로봇기술 사이트 폐쇄  (0) 2016.08.24
avr iar __flash winavr PROGMEM  (0) 2016.07.06
부품들 정리  (0) 2016.04.16
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M3 Ti2017.04.04 11:41

이걸 샀는데 헉.. 2.54mm 간격이 아니네?!?!

아무튼.. 얘는 Serial Wire Debugger라.. JTAG 핀을 제공하지 않는다.

[링크 : http://www.devicemart.co.kr/1320869]


그림판으로 장난질.

SWD는 SWC SWD SWO 세개 이고

JTAG은 TCK TMS TDI TDO 인데

TDI를 제외한 3개의 핀은 연결이 가능한 듯 하다


데이터시트상 핀 배열은 이런데.. 

핀설명은 아래와 같음

+

[링크 : http://forum.falinux.com/zbxe/?document_srl=796669...readed_count]


+

실험을 해보니 다 필요 없고..

최소사양(?)인 SWCLK +SWDIO(I/O) 딱 두줄이면 끝..

지금까지 JTAG으로 쓴 줄 알았는데 SWD로 쓰고 있었다는거에 한번 더 깜놀..

신고
Posted by 구차니

댓글을 달아 주세요

embeded/80512017.03.27 15:02


클래식이던 확장이던 IDATA와 DATA는 존재하는데

DATA와  IDATA의 차이에 대해서 keil 사이트에 설명이 모호한데

direct와 indirect의 차이로 설명이 된다. 근데.. 감이 안오는데....


IDATA

This memory is indirectly accessed using 8-bit addresses and is the on-chip RAM of the 8051.


DATA

This memory is directly accessed using 8-bit addresses and is the on-chip RAM of the 8051.

[링크 : http://www.keil.com/support/man/docs/c51/c51_le_memtypes.htm]

    [링크 : http://www.keil.com/support/man/docs/c51/c51_le_data.htm] DATA

    [링크 : http://www.keil.com/support/man/docs/c51/c51_le_idata.htm] IDATA


어라..? IDATA accessed with @R0 or @R1

레지스터에 값을 저장하고 그 값을 통해 간접 접근을 하는 거군?


[링크 : http://measure.feld.cvut.cz/.../A51___Keil_Macro_Assembler_and_Utilities.pdf]

신고
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M3 Ti2017.03.27 10:52

UART Flag에 BUSY는

어라? 전송에 대한 것?

UART Busy
When this bit is 1, the UART is busy transmitting data. This bit remains set until the complete byte, including all stop bits, has been sent from the shift register. This bit is set as soon as the transmit FIFO becomes non-empty (regardless of whether UART is enabled).
  




신고
Posted by 구차니

댓글을 달아 주세요

embeded/raspberry pi2017.03.25 15:36

라즈베리 완전체(?) 햇을 만들려고 하다가 망했어 ㅠㅠ


점퍼 연결해서 쓰기 귀찮아서

대충 만능보드 이용해서 만들려고 하다가 또 실패인가...

아무튼 DHT-11은 노릇노릇하게 익어버렸고

머가 문제인지 멘붕..

다행히도 라즈베리 쪽은 손상이 없는거 같긴한데

가속도 센서 / 초음파 거리 센서는 살아있는지 확인을 해야 할 듯 ㅠㅠ


SAMSUNG | SHV-E120K | Aperture priority | Average | 1/15sec | F/2.6 | 0.00 EV | 4.0mm | ISO-64 | Off Compulsory | 2017:03:25 15:02:37


SAMSUNG | SHV-E120K | Aperture priority | Average | 1/15sec | F/2.6 | 0.00 EV | 4.0mm | ISO-80 | Off Compulsory | 2017:03:25 15:02:48


DHT-11 센서 분해하니 안쪽에 이런식으로 온도/습도 센서 부분이 있고

여기를 자세히 보면 강우 센서가 아주 미세한 모양을 한것 처럼 중앙 부분에 있다.

SAMSUNG | SHV-E120K | Aperture priority | Average | 1/15sec | F/2.6 | 0.00 EV | 4.0mm | ISO-64 | Off Compulsory | 2017:03:25 15:13:36


뒤에는 하나도 안써있어서 무슨 칩인지 알수 없으나.. 마이컴이 아닐까 생각된다.

SAMSUNG | SHV-E120K | Aperture priority | Average | 1/15sec | F/2.6 | 0.00 EV | 4.0mm | ISO-80 | Off Compulsory | 2017:03:25 15:10:55


태워먹고는 멘붕와서 만든 보드도 확 버려 버릴까 고민 ㅠㅠ

신고
Posted by 구차니

댓글을 달아 주세요

embeded/raspberry pi2017.03.25 13:11

예전에 iot로 검색해서 보다 보니 귀찮고 헷갈려서 다시 정리

PWM은 2개 포트뿐이니.. 동시에 두개가 한계겠네..




rpi.pdf


신고
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M3 Ti2017.03.24 10:58

얘랑은 좀 다른 이야기인데...

rs232 to rs485로 쓰다 보니

485쪽은 TXEN 하면 RX쪽이 Hi-Z로 설정되면서

아마도 0x00으로 들어 오는 듯?


그리고 driverlib에도 RX만 disable 시키는 건 없으니

함수를 하나 만들어서 RX만 disable enable을 시켜서 일단 우회

void

UARTDisable(uint32_t ui32Base)

{

    //

    // Check the arguments.

    //

    ASSERT(_UARTBaseValid(ui32Base));


    //

    // Wait for end of TX.

    //

    while(HWREG(ui32Base + UART_O_FR) & UART_FR_BUSY)

    {

    }


    //

    // Disable the FIFO.

    //

    HWREG(ui32Base + UART_O_LCRH) &= ~(UART_LCRH_FEN);


    //

    // Disable the UART.

    //

    HWREG(ui32Base + UART_O_CTL) &= ~(UART_CTL_UARTEN | UART_CTL_TXE |

                                      UART_CTL_RXE);


일단 정석(?)적인 해결책은 RX에 pull-up을 달아 주는 것

[링크 : https://e2e.ti.com/support/microcontrollers/stellaris_arm/f/471/t/45318]


OD나 PUD 안먹더라니, 직원이 push-pull로 작동한다고 하면 그런거겠지? ㅠㅠ

[링크 : https://e2e.ti.com/support/microcontrollers/stellaris_arm/f/471/t/88669]



9.2.2.27 GPIOPinTypeUART

Configures pin(s) for use by the UART peripheral.

Prototype:

void

GPIOPinTypeUART(unsigned long ulPort,

unsigned char ucPins)

Parameters:

ulPort is the base address of the GPIO port.

ucPins is the bit-packed representation of the pin(s).

Description:

The UART pins must be properly configured for the UART peripheral to function correctly. This

function provides a typical configuration for those pin(s); other configurations may work as well

depending upon the board setup (for example, using the on-chip pull-ups).

The pin(s) are specified using a bit-packed byte, where each bit that is set identifies the pin to

be accessed, and where bit 0 of the byte represents GPIO port pin 0, bit 1 represents GPIO

port pin 1, and so on.

Note:

This cannot be used to turn any pin into a UART pin; it only configures a UART pin for proper

operation. 


신고
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M3 Ti2017.03.23 14:21

uart의 baudrate를 설정해주는 녀석은

내부적으로 UARTDisable()과 UARTEnable()을 포함하는데

UARTEnable()은 fifo enable을 포함한다.(얘가 악의 축)


그리고 UARTDisable()은 TX 할게 있으면 다 보낼때 까지 기다려주는 역활을 한다.



void

UARTConfigSetExpClk(uint32_t ui32Base, uint32_t ui32UARTClk,

                    uint32_t ui32Baud, uint32_t ui32Config)

{

    // Stop the UART.

    UARTDisable(ui32Base);


    // Set the baud rate.

    HWREG(ui32Base + UART_O_IBRD) = ui32Div / 64;

    HWREG(ui32Base + UART_O_FBRD) = ui32Div % 64;


    // Set parity, data length, and number of stop bits.

    HWREG(ui32Base + UART_O_LCRH) = ui32Config;


    // Clear the flags register.

    HWREG(ui32Base + UART_O_FR) = 0;


    // Start the UART.

    UARTEnable(ui32Base);


void

UARTEnable(uint32_t ui32Base)

{

    //

    // Check the arguments.

    //

    ASSERT(_UARTBaseValid(ui32Base));


    //

    // Enable the FIFO.

    //

    HWREG(ui32Base + UART_O_LCRH) |= UART_LCRH_FEN;


    //

    // Enable RX, TX, and the UART.

    //

    HWREG(ui32Base + UART_O_CTL) |= (UART_CTL_UARTEN | UART_CTL_TXE |

                                     UART_CTL_RXE);

}


void
UARTDisable(uint32_t ui32Base)
{
    //
    // Check the arguments.
    //
    ASSERT(_UARTBaseValid(ui32Base));

    //
    // Wait for end of TX.
    //
    while(HWREG(ui32Base + UART_O_FR) & UART_FR_BUSY)
    {
    }

    //
    // Disable the FIFO.
    //
    HWREG(ui32Base + UART_O_LCRH) &= ~(UART_LCRH_FEN);

    //
    // Disable the UART.
    //
    HWREG(ui32Base + UART_O_CTL) &= ~(UART_CTL_UARTEN | UART_CTL_TXE |
                                      UART_CTL_RXE);
}



근데 도대체!!! 뒤에 0x00은 왜 붙는거야?

신고
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M3 Ti2017.03.15 10:07

테스트 코드

19200bps와 38400bps를 오가면서 1바이트씩 보내는 예제


  SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);

GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);


while(1)

{

UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 19200, UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE);

UARTCharPut(UART1_BASE,'A');

MDINDLY_mSec(100);

UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 38400, UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE);

UARTCharPut(UART1_BASE,'B');

MDINDLY_mSec(100);

}



근데 도대체.. 예전에는 왜 안되었던 거지??


+

추가로

FIFO 설정은 UARTConfigSetExpClk 에서 무조건 Enable 시키니 주의

신고
Posted by 구차니

댓글을 달아 주세요