2018.11.08 13:47

M사 200ge 지원 바이오스 , 그리고

 기존의 안정했던 AGESA 1.0.0.4c 이후로 다시 M사의 바이오스가 다시 업데이트.

 200ge 호환성 향상이라는데 AGESA는 변화가 없는 것 같고, 오히려 wakeup 이후의 약간의 안정성이 낮아진 것 같다.

 그냥 느낌이거나 다른 장치에 의한 문제일지도 모르지만, 프로그램이 작동을 멈추고 작업관리자도 먹통이 되는 현상을 한번 만나고 다시 이전 버전으로 다운그레이드.


 200ge를 사용하지 않는다면 업데이트할 필요가 없는 듯.


(추가) AGESA PinnaclePi 1.0.0.6의 메모리 레이턴시 관련해서 전체적으로 11월 중순 정도부터 업데이트가 있을 모양. 1.0.0.4의 vfio 문제도 해결해서 나온다고 그러고 새로운 1.0.0.6의 메모리 레이턴시 향상은 Zen 1세대에서도 어느 정도 크게 나온다고 하는 듯. 이전보다 더 높은 메모리 클럭이 사용가능하다 글들이 오버클러커 포럼에 몇몇 보이고 있음.


(추가) AGESA 1.0.0.6은 그동안 불안정했던 BCLK 오버클럭킹도 문제가 없는 듯. 그래봐야 103정도의 BCLK만 가능하지만 이제서야 제대로 지원이 되는 듯.


(추가) AGESA PinnaclePi 1.0.0.6은 L2 레이턴시와 메모리 레이턴시를 줄여서 성능을 도모함. PCIe ID버그가 A사 메인보드에서 있던데 베타 버전에서의 이야기로 아직 정식 바이오스는 안나온 듯.

Trackback 0 Comment 0
2018.10.25 10:18

아두이노로 ATTiny85의 타이어1 PWM 사용하기.

 아두이노가 세상에 나온건 참 고마운 일이다. AVR 칩들의 프로그래밍을 더 쉽게 만들었다.

 돌아다니던 중에  8핀의 ATTiny85가 PWM 기능을 가진 것을 확인하고 그 기능이 정말 궁금했다.

 많은 인터넷 문서들을 읽은 후에야 그 기능을 제대로 사용할 수 있었다.


 일단 아두이노에서 ATTiny85를 사용하기 위해서는  ATTinycore라는 애드온을 넣어야 한다.

 그리고 소스 파일에 헤더를 넣고 평상시의 프로그래밍 그대로 코딩을 하면 된다.


 주의할 점은 핀 번호가 기존의 아두이노의 정의를 사용할 수 없다. 그리고 ADC 같은 경우에는 특별한 명칭의 A로 시작하는 번호를 analogRead에 사용해야 정상적으로 읽어올 수 있다.

 그리고 내부 헤더 소스파일의 정의를 보면 ATTiny85가 millis()나 delay()에 사용하는 타이머는 0번이다.


 동작 클럭은 1MHz로 하는게 좋은데, 만약 8MHz로 하려면 lfuse를 62 -> e2로 변경해야 한다. 개인적으로 쓰는 openprog가 fuse 셋팅을 지원하기는 하는데 이 div8을 fuse로 사용하면 인식이 안된다. 먹통이 되어버리는데 연속적으로 fuse를 62로 쓰기를 계속하면 다시 사용가능한 상태로 돌려진다.

 오래된 openprog 0.9.0 펌웨어와 0.9.1 컨트롤 프로그램으로는 HV 시리얼 프로그래밍이 지원되기는 하나 칩리스트 목록의 ATTiny85 설정으로 인식하지 못하는 바람에 ATTiny88로 설정해야 프로그램이 가능하다.


 ATTiny85는 타이머1은 특이하게 PLL 클럭을 소스로 PWM을 활성할 수 있다. 이 기능은 정말 놀라운게 128KHz(256KHz도 가능)의 PWM 클럭을 만들 수 있다. 컴퍼레이터의 약간의 설정 버그도 있는데 그 설정을 다 포함한 간단한 사용 코드는 아래와 같다.


  #define PWM PIN_B1


  pinMode(PWM, OUTPUT);

  // Timer1 PWM, 128KHz
  PLLCSR |= (1<<PLLE);
  while ((PLLCSR & (1<<PLOCK)) == 0x00)
    {
        // Do nothing until plock bit is set
    }
  PLLCSR |= (1<<PCKE);
  TCCR1 = (1<<CTC1)    |  // Enable PWM
          (1<<PWM1A)   |  // Set source to pck
          (1<<(CS11))  |  // PCK/2
          (1<<COM1A1);    // Clear the OC1A output line.
  GTCCR |= (1<<COM1B1);  // fix bug
  //TIMSK = (1<<OCIE1A) | (1<<TOIE1);
  OCR1A = 0;
  OCR1C = 255;


  OCR1A = 126;


 이는 6번 핀을 이용해서 PWM 클럭을 내보내는 코드로 다른 핀도 가능하다. 총 4개의 PWM이 가능하지만 3개만이 제대로 사용할 수 있다. 4개의 PWM을 모두 사용하면 6번핀은 타이머 오버플로우나 컴퍼레이터 인터럽트에서 핀의 신호를 처리해주어야 하는 번거로움이 있다. 하지만 예제와 같은 1개만이나 타이어0과 겹치지 않게 PWM을 사용하면 문제가 없다.


 여튼 대충 이렇게 PWM을 만들 수 있다.


 (추가) ATTinycore의 도움말에 설명되어 있기는 하지만, 이 타이머1의 PLL 클럭소스 방법은 2.7v 이하의 동작전압에서는 불안정하다. 그런 이유로 BOD를 2.7v로 설정하는게 좋을 수 있다.





'하드웨어' 카테고리의 다른 글

PinnaclePi 1.0.0.6  (0) 2018.11.23
하드디스크 스핀다운업 현상.  (0) 2018.11.20
아두이노로 ATTiny85의 타이어1 PWM 사용하기.  (0) 2018.10.25
M사 AM4 새로운 바이오스.  (2) 2018.02.04
메모리 그리고 온도 효과.  (0) 2017.11.30
window 10 FCU 버그.  (0) 2017.10.31
Trackback 0 Comment 0
2018.09.18 10:10

KiCAD로 jlcpcb 프린팅 레이아웃 만들기.


 

  http://kicad-pcb.org/


 최근 Kicad는 5.0이 새로 나왔고 기존에 있던 불편함이 많이 사라져서 쓰기가 더 좋아졌다.

 그러나 여전히 기본 라이브러리에서는 몇몇 부품들이 없는데, 라이브러리가 공개되어 있고 부품을 그리는 기능도 좋아져서 문제가 없다.


 인쇄기판을 설계할 때 단순히 회로도만 그리는 것이 아닌 각 부품마다 Foot Print를 설정해야 한다. 그렇지 않으면 그 부품은 PCB제작 프로그램에서 보이지 않는다.

 그리고 전원에 커넥터 부품을 따로 넣지 않으면, PCB에서 따로 연결되는 부분이 만들어지지 않는다. 꼭 커넥터 등을 연결해서 회로도를 그려야 한다.


 PCB 제작 플그램으로 회로도의 부품 연결과 부품의 형태를 넘기려면 NetList를 만들어야 한다. 그렇지 않으면 하나하나 작업해야 하는데, 연결부분이나 부품을 넣지 않는 실수를 하기 쉽다.


 기존의 회로에 부품을 새로 넣어서 다시 Netlist를 만들고 불러오면 이전에 그린 PCB에 추가되어서 부품이 나타난다. 그런데 가끔 몽땅 다시 불러오는 경우도 있는데, 중복된 부품들의 Foot Print이기 때문에 그럴 땐 새롭게 불러온 부품들 중에서 추가한 부품만 남겨두고 다른 것은 지워도 된다.



 그리고 하나 더 중요한게 있는데 플로트 하기 전에는 Perform rule check를 꼭 해준다. 자동화 되어서 바뀌면 체크해야 한다고 창이 뜨지만 혹시나 실수를 막기 위해서 한번 실행해주면 좋다. 배선 변경 등으로 copper fill 구역 체크도 해주고 Rat list 연결이 안된 부분이 있나 체크도 해준다.



 JLCPCB는 간편하게 PCB를 제작하는데 유용한데, PCB 제작회사에서 요구하는 약간의 규칙을 따라야 한다.

 https://support.jlcpcb.com/collection/1-faqs


 양면의 경우 7개의 레이어 gerber파일과 1개의 드릴링 파일이 필요한데 그 내용들은 아래의 그림과 같다.


 


파일의 Plot 메뉴를 열어보면 다음과 같이 나오는데, Cu 레이어와 Silk레이어, 그리고 Mask 레이어, 마지막으로 기판의 크기와 모양을 결정하는 Cuts레이어를 포함한다.

 나머지 설정은 화살표 마크가 된 2개의 항목을 더 체크하면 된다. 그리고 플로트를 하면 레이어 하나당 gerber파일이 하나씩 생성된다.


그리고 이것만이 아닌 드릴링 파일을 만들어야 하는데, 구멍을 뚫는 정보를 담는 파일이다. 여기서는 별달리 따로 필요한 설정은 없다. 체크 박스 하나만 더 체크해주면 되는데, 저 옵션을 체크하는지는 설명이 좀 애매하다. 영어 표현에 이해가 적어서 잘 모르겠다. 어쨌던 저 체크를 해도 기판은 문제없이 인쇄되어서 만들어졌다.


그렇게 drl파일이 생기는데, 생성한 모든 파일을 zip이나 rar로 압축해서 웹사이트의 인쇄도면 올리는데 업로드하면 분석해서 간단히 레이아웃을 보여준다.


제작 주문에 사용할 압축 파일 내용을 보면 대충 이렇다.




그리고 웹사이트에서 제작 주문을 한다.



나머지는 결제와 배송 방법만 선택하면 된다. AirMail이 제일 저렴하나 느리고, 최근에 중국계 물류회사 '순풍택배'란게 배송방법에 추가되어 있다. AirMail보단 약간 더 비싸지만, 약간 더 빨리온다.


 대충 이런 방법이면 쉽게 인쇄기판을 만들 수 있다.



Trackback 0 Comment 0