2018년 4월 12일 목요일

2018년 3월 9일 금요일

Folder 자동으로 생성, 번호순으로

참조: Link

FOR /L %N IN (1,1,500) DO md "JiraIssue_%N"

요약
FOR /L 는 기본 키워드로서 For Loop를 돌려주고
이때 N은 변수 명으로 1부터 1씩 500까지 번호를 돌려주면서 폴더 만들고(md) 그때의 이름은 JiraIssue_%N 이다.

---

FOR /L
Conditionally perform a command for a range of numbers.

Syntax 
      FOR /L %%parameter IN (start,step,end) DO command

Key
   start       : The first number 
   step        : The amount by which to increment the sequence
   end         : The last number

   command     : The command to carry out, including any
                 command-line parameters.

   %%parameter : A replaceable parameter:
                 in a batch file use %%G (on the command line %G)

2018년 3월 2일 금요일

I2C 는 무엇인가?

참조: Link

I2C 버스는 동일한 회로 기판에있는 구성 요소간에 쉽게 통신 할 수 있도록 1980 년대 초에 Philips에서 설계되었습니다. Philips Semiconductors는 2006 년 NXP로 이름이 변경 되었습니다.

I2C 라는 이름은 "Inter IC"를 의미 하는데. IIC 또는 I²C 버스라고도 불립니다.

본래의 통신 속도는 초당 최대 100kbps로 정의되었으며 많은 애플리케이션에서는 더 빠른 전송을 필요로하지 않습니다.  fastmode 는 400kbit이며 - 1998 년부터 - 고속 3.4Mbit 옵션도 사용할 수 있습니다. 최근에는 fast mode plus 라고 이들의 중간 범위의 전송 속도가 지정되었습니다. 이 외에도 Ultra Fast Mode UFM이 있지만 솔직히 실제 I2C 버스는 아니라고 할 수 있습니다.

I2C는 단일 보드 에서뿐만 아니라 케이블을 통해 연결된 구성 요소를 연결하는 데에도 사용됩니다. 단순함과 유연성은이 버스를 많은 어플리케이션에 매력적으로 만드는 주요 특징입니다.

가장 중요한 기능은 다음과 같습니다.

  • 케이블은 2 개만 사용 합니다.
  • 예를 들어 RS232와 같은 엄격한 baudrate 요구 사항이없는 경우 마스터는 버스 클럭을 생성합니다
  • 간단한 마스터 / 슬레이브 관계가 모든 구성 요소 사이에 존재합니다.
  • 버스에 연결된 각 장치는 고유 한 주소로 소프트웨어 주소 지정이 가능합니다
  • I2C는 중재 및 충돌 감지를 제공하는 진정한 다중 마스터 버스입니다.


더 배우고 싶습니까?
I2C 도구 및 소프트웨어를 찾고 계십니까?

당신이 고속 I2C 솔루션 을 찾든 USB I2C 인터페이스 찾든 상관없이, 버스를 모니터링하든 자신의 애플리케이션을위한 소프트웨어 플랫폼이 필요하든, 우리는 당신을 도울 수 있습니다!.

2018년 3월 1일 목요일

PyQt 사용간 메모

Python Code(Anaconda 환경) 에서는 문제없이 실행 되었는데 Pyinstaller로 exe 로 변형한 다음에는 출력 에러가 떴다.
문제는 PyQt의 plainTextEdit 에서 .toPlainText() 로 가져온 string format 이 QString 이었는데 이것이 처리되는것에 문제가 생긴 것이었고 str() 으로 변경한 후에는 문제가 사라졌다.

2018년 2월 26일 월요일

Silicon Lab Download Warning message

Silicon Laboratories 에서 build 된 hex 파일을 다운로드 할 때 Warning message

Warning! An attempt was made to modify address 2200 which is restricted!
Continue download?

말 그대로 수정이 금지된 메모리 주소인 2200 을 수정하려고 한다는 이미이며

실제 사용 가능하지 않는 메모리 영역에 쓰려고 할 때 이 문제가 발생 하였다.

구체적으로는 어떤 상황이었나면
1. C8051F582(64k flash) 에서 사용하던 코드를 C8051F547(8k flash) 에서 사용하려고 해서 위 Warning이 떴고 실제 Code영역의 크기가 10k 를 넘었다.
2. 프로그램의 버전을 Linker 의 옵션으로 주었고 "CODE(?CO?VER(0x7FF6))" 이 때 사용하는 영역인 0x7FF6 이 사용 가능한 메모리 크기를 넘어 위 메시지가 떴다.


2018년 2월 23일 금요일

Cross Compiler

크로스 컴파일러(cross compiler)는 컴파일러가 실행되는 플랫폼이 아닌 다른 플랫폼에서 실행 가능한 코드를 생성할 수 있는 컴파일러이다. 크로스 컴파일러 툴은 임베디드 시스템 혹은 여러 플랫폼에서 실행파일을 생성하는데 사용된다. 이것은 운영 체제를 지원하지 않는 마이크로컨트롤러와 같이 컴파일이 실현 불가능한 플랫폼에 컴파일하는데 사용된다. 이것은 시스템이 사용하는데 하나 이상의 플랫폼을 쓰는 반가상화에 이 도구를 사용하는 것이 더 일반적이게 되었다.

내 PC에서 Compile 할 때 특정 Chip 에서 돌아가는 명령을 만들고 싶다면(Assembly, Binary) 해당 Chip 에서 받아들일 수 있는 명령을 만드는 Compiler를 만들어야 한다.

Clock Stretching

참조: Link

송신에는 clock stretching 이 있고 수신에는 Clock stretching 이 없는 이유
송신일 때는 데이터를 보내고 다음 클럭 신호를 보낸 후 잠시 응답을 기다려야 함
수신 모드일 때는 데이터를 받고 다음 클럭 신호를 받아 응답을 해줘야 함

둘의 차이점은
송신은 데이터를 보낸 후 응답을 기다리는 것이고,
수신은 데이터를 받은 후 응답을 해주는 것이다.

송신은 자신의 속도로는 끝났지만 기다려 주기 때문에 송신때만 clock stretching 이 있다.

참조: Link

I2C 통신에서 마스터 장치는 클럭 속도를 결정합니다. RS232와는 달리 I2C 버스는 마스터와 슬레이브가 사전 정의 된 baud rate와 정확하게 동기화되는 것을 완화할 수 있도록 명시적인 클럭 신호를 제공합니다.

I2C 슬레이브가 마스터가 제공하는 클럭 속도와 상호 작용할 수없고 약간 느려질 필요가있는 상황이 있습니다. 이것은 클럭 스트레칭이라고하는 메커니즘에 의해 수행됩니다.

I2C 슬레이브는 버스 속도를 줄여야하는 경우 시계를 잡고 있을 수 있습니다. 반면에 마스터는 클럭 신호를 하이 상태로 해제 한 후 클록 신호를 다시 읽고 라인이 실제로 하이가 될 때까지 기다려야합니다.

Bandwidth
클럭 스트레칭은 다소 이상하게 들리지만 일반적인 관행입니다. 그러나 공유 버스의 전체 대역폭은 상당히 줄어들 수 있습니다. 따라서 특히 여러 장치가 공유하는 I2C 버스의 경우 클록 스트레칭의 영향을 평가하는 것이 중요합니다. 가장 느린 I2C 장치가 버스 성능을 지배하지 않도록하십시오.