반응형

사용하는 플러그인으로는 "amchart" 이다.

엘리멘토 플로그인과 함께 사용.

 

 

1. 플러그인 설치 (install) 후 활성화 (active)

amchart 검색 후 설치, 활성화 (클릭하면 확대)

 

2. 새페이지에 엘리멘토로 HTML블록 만들기

    (엘리멘토 플러그인이 없다면 아래 참고)

https://ansan-survivor.tistory.com/1108

 

[Wordpress] 워드프레스 시작시 필수 플러그인 설치 (무료 기본 플러그인)

워드프레스를 운영할 때 기본적으로 설치하면 좋을 플러그인 몇가지를 추려보았다. 일단 설치 방법은, Plugins - Add New 에서 검색 후 설치 1. Elementor과 Essential Addons for Elementor 엘리멘토는 드레그..

ansan-survivor.tistory.com

    새로운 페이지에 엘리멘토로 열어본다. 그리고 왼쪽에 HTML을 넣어준다.

 

3. 데모페이지에서 원하는 차트의 코드를 불러온다.

    아래 데모 페이지

https://www.amcharts.com/demos/

 

Chart Demos - amCharts

 

www.amcharts.com

원하는 차트 선택
스크롤 다운 후, 소스코드를 복사
그리고 붙여넣기 (편집창에서는 디스플레이가 안될 수 있다)
업데이트 또는 퍼브리쉬

(결과) 그래프가 잘 출력됨을 볼 수 있다. (배경이 검정색이라 x,y 축이 안보이는 것임)

 

 

마찬가지로 다른 그래프도 비슷하다.

 

 

반응형
반응형

(아트멜 스튜디오7이 마이크로소프트에게 인수되었나? UI가 상당히 똑같다.)

 

 

보통 코드 에디터들을 보면 몇 줄을 한번에 주석처리해서 잠깐 생략하고 돌리기도 한다.

대부분 단축키가 Ctrl + / 를 하면 되나, 비주얼 스튜디오, 아트멜 스튜디오는 먹히지 않는다.

 

비주얼 스튜디오의 복수 주석처리 단축키는 Ctrl + K + C 동시에 눌러야 한다.

주석 해제Ctrl + K + U 이다.

Ctrl + K + C

그러나 우리가 대부분 익숙한 Ctrl + / 으로 바꿔주고 싶을 때 아래와 같이 한다.

 

1. Tools - Option

    (한글버전 : 도구 - 옵션)

2. Keyboard - "edit.com" 이라고 검색 - Edit.CommentSelection 선택.

    (한글버전 : 키보드 - "편집.선택"검색 - 편집.선택영역을주석으로처리 선택.)

 

3. 기존의 단축키 제거

 

4. 새로운 단축키 입력 "Ctrl + /" (커서를 두고 키보드로 친다) - Assign (할당)

할당을 하면 해당 단축키가 입력된다.

반응형

(결과)

이제 Ctrl + / 를 누르면 해당 여러 줄들이 주석 처리가 된다.

 

반응형
반응형

OrCAD PCB에서는 Constraint Manager설정이 중요하다.

그런데 여기서 특정 Net들을 따로 묶어서 Class Set (Cset)을 지정할 수 있다.

 

그러면 Set에서 세팅한 설정들을 아주 쉽게 Net에 적용시킬 수 있다.

 

1. Constraints 실행

 

2. (Physical 설정 예) Physical의 Set부분을 클릭, 기본적으로는 Default만 있다.

 

 

3. 새로운 Cset을 추가한다. (예시로 POWER)

 

4. 네트그룹(Net Group)만들기

    - 원하는 항목을 복수 선택하여 아무거나 마우스 위에 올리고 우클릭 (Ctrl + 클릭 : 복수선택)

이렇게 그룹으로 묶였다.

 

5. 만든 Set를 Net에 적용한다.

(결과) 이제 해당 묶음만 새로운 Set가 적용되었다.

 

반응형
반응형

OrCAD Capture의 회로설계를 마치고 PCB 설계를 위해 Netlist를 넘기는 과정에서 아래와 같은 에러가 발생할 수 있다.

Annotate 관련 에러인데, 분명 풋프린트를 다 알맞게 넣었고, 아무리봐도 문제가 없는데 이러한 에러가 발생할 때...

 

"ERROR(ORCAP-36036): Multiple pin 6's which have different nets connected for U4 ~~" 이러한 메세지가 발생하면 복잡하다... 그러나 해결했던 과정을 쓴다.

 

1. 우선 Annotate를 다시하고 Netlist를 생성해본다. (거의 여기서 해결됨)

    xxx.dsn 클릭 - 마우스우클릭 -  Annotate

    Unconditional reference update 선택 - OK

    새로 Netlist 생성한다. (잘 넘어가는지 확인)

    대부분 여기서 해결이 되지만, 해결이 안될경우 아래와 같이 해본다.

 

 

 

2. 에러가 나는 해당파트를 지웠다가 다시 배치 (Design Cache 때문이 아닌지 의심이 듦) 후 annotate - Netlist 뽑기

에러가 나는 해당 파트를 제거하고 다시 배치 (Design Cache를 배치하는게 아닌지 확인) - 그리고 Annotate

        - 이때 allegro 폴더에 생성된  netlist.log , netrev.lst 파일을 지우고 다시 netlist를 생성한다.

          (가끔 덮어쓰기가 안되서 계속 이전것만 계속 불러오는 경우가 있다)

    xxx.dsn 클릭 - 마우스우클릭 -  Annotate

    Unconditional reference update 선택 - OK

    새로 Netlist 생성한다. (잘 넘어가는지 확인)

    

이렇게 해봤더니 해당 에러가 발생하지 않고 잘 넘어갔다.

정확한 아무리 검색해도 원인을 찾을 수 없지만... 이렇게 하니 해결됬다 아무튼

 

 

 

반응형
반응형

C언어 함수의 구조는 

[return 타입] 함수명( [input타입 변수명] )

ex)   int   main(   int a   )

 

 

함수명은 말 그대로 함수 이름 지정.

input 은 이 함수가 실행되기 위한 입력 값을 지정하는것.

return 타입은 이 함수가 연산이되어 return되는 값의 타입.

 

 

C언어 함수 만들기 템플릿은 아래와 같다.

 

<함수 선언>

<Main 함수>

<함수 정의>

 

아래 예를 보면 알기 쉽다.

#include <stdio.h>

// 함수의 선언
int Increment_num(int n);

int main(void)
{
    int a = 2;
    int num;

    num = Increment_num(a);
    printf("%d\n", num);

    return 0;
}

// 선언한 함수의 실제 정의 (몸통)
int Increment_num(int n)
{
    // 위에서 받는인자 n이 오면 증가시켜 리턴
    n++;
    return n;
}

int a 값이 함수에가서 계산되는 형태.

값이 어떻게 연산되는지 순서를 나타냄.

a값의 변화는 없다. a는 단지 함수의 입력인자(input)이 되었을 뿐이다.

그리고 함수는 a에 들어있는 값 2가 연산이 되어 n으로 리턴한다.

리턴된 값 3은 최종적으로 num에 저장된다.

 

아래와 같이 2개 그리고 그 이상의 input인자도 받을 수 있다. 다만 2개 이상의 return은 불가능하다.

아래와 같이 if 문에 맞는 결과를 따로 return하도록 함.

int Increment_num(int n, int m)
{
    if (n > m)
    {
        n++;
        return n;
    }
    else
    {
        m--;
        return m;
    }
}

* 알아두기.

 - 로컬함수 내에서 선언한 변수는 해당 함수가 수행되는 동안 유효하며, 결과를 리턴하면 메모리를 해제 하여 사라진다.

 - 변수를 전체 함수에서 사용하고 싶다면 "전역변수"으로 선언해야 함.

 

반응형
반응형

C언어는 동일한 자료형끼리 연산이 가능하다. 만약 서로 다른 자료형끼리 연산을 한다면 서로 데이터크기(byte)가 다르기 때문에 오차가 발생하여 연산이 불가능하다.

그래서 접미구에 자료형을 붙여 정확한 연산을 할 수 있다. (아래 참고)

https://ansan-survivor.tistory.com/1222

 

[C언어] C언어 소수 자료형 float와 double의 차이점. ('double'에서 'float'(으)로 잘립니다.)

일반적으로 C언어에서의 소수점 자료형 표현은 float와 double을 쓴다. 그런데 크기는 float가 작고, double이 크다. 다시말해 double이 표현할 수 있는 소수점 자리가 많다. (double > float) 그러나 기본적으

ansan-survivor.tistory.com

만약 int a = 3.0 또는 double b = 5를 넣는다면, 자료형이 맞지 않아도 알아서 출력이 된다.

3.0 은 기본적으로 "double" 자료형이지만, a는 int 자료형이기 때문에 자동으로 int로 변환되어 3이 출력된다.

마찬가지로 아래 5도 int 이지만, b가 double이기 때문에 5.000000 으로 출력된 것이다.

 

하지만 C언어에서는 강제로 형변환하는 기능이 있다.

매우 간단하다 그저 앞에 괄호 + 자료형 을 추가하면 된다.

-> (자료형)변수

-> (자료형)값

#include <stdio.h>

int main(void)
{
	// 강제로 형 변환하기
	int a = (int)3.0;
	double b = (double)5;
	
	printf("%d, %f", a, b);

	return 0;
}

 

<알아두기>

 - 바이트가 큰 자료형이 우선시 된다. ( 크기가 큰거(double)와 작은게(int) 있을 때 큰것으로 바뀜 )

 

 

 

반응형
반응형

일반적으로 C언어에서의 소수점 자료형 표현은 float와 double을 쓴다.

그런데 크기는 float가 작고, double이 크다. 다시말해 double이 표현할 수 있는 소수점 자리가 많다. (double > float)

 

그러나 기본적으로 소수점을 아래와 같이 입력하면, 컴파일러는 숫자를 자료형 double로 인식한다.

그러면 연산에 문제가 있다. C언어는 서로 같은 자료형끼리만 연산이 가능하다. (int는 int끼리, char는 char끼리 등등)

하지만 위 연산은 그냥 숫자를 입력하면 해당 숫자는 기본적으로 double 형태의 자료형이 입력된다.

실행하면 아래와 같은 에러를 띄운다.

에러 메세지

그렇다면 내가 저장할 변수의 자료형을 float로 했으니, 계산할 값들도 역시 float값을 넣어야 한다.

그러면 숫자 뒤에 f 또는 F를 넣으면 해당 숫자가 자료형이 double이 아닌 float가 된다.

#include <stdio.h>

int main(void)
{
	float num1 = 5.789f;
	float num2 = 3.24F + 5.12f;


	return 0;
}

위처럼 계산을 하면 이제 에러가 발생하지 않음을 알 수 있다. 서로 같은 자료형이 되기 때문에...

 

그 외 각종 접미사를 통해 자료형을 명확히 지정할 수 있다.

(정수)

접미사 자료형 예시
U unsigned int unsigned int a = 123U
L long long b = 123L
UL unsigned long unsigned long c = 123UL
LL long long long long d = 123LL
ULL unsigned long long unsigned long long e = 123ULL
반응형

(소수)

접미사 자료형 예시
F float float f = 1.23U
L Long double long double g = 1.231L

 

 

 

 

 

반응형
반응형

아트메가128에 인터럽트 기능을 사용하기 전에 아트메가의 인터럽트 벡터 테이블을 알아야 한다.

인터럽트란? 아래 참고.

https://ansan-survivor.tistory.com/1220

 

MCU의 인터럽트(Interrupt) vs 폴링(Polling) 방식 차이

MCU에서 입력을 받아들이는 방법은 대표적으로 폴링(Polling)과 인터럽트(Interrupt)가 있다. 폴링방식 : polling (투표, 여론조사). 뜻 그대로 계속 입력핀의 상태를 여론조사 하듯이 확인하는 것이다.

ansan-survivor.tistory.com

 

아트메가128은 총 35개의 인터럽트 벡터가 있다. 데이터 시트를 보면 아래와 같은 페이지가 있다.

이를 한글로 보면 아래와 같다.

 <대표 인터럽트>

RESET (리셋) - 1개 (가장 최우선의 인터럽트로 다른것보다 우선순위가 높다)

INT0 ~ INT7 (외부인터럽트) - 8개

TIMER (타이머 인터럽트) - 8개

USART0 (UART 통신 인터럽트) - 3개 / USART1 (UART 통신 인터럽트) - 3개

ADC (아날로그 to 디지털 컨버터) - 1개

SPI ( SPI통신 ) - 1개

~

반응형

 

 

* 특징

 - 값이 낮은 인터럽트일 수록 우선순위가 높다!

 - 0x0000 RESET은 그 어떤 인터럽트보다 최고의 우선순위를 갖으므로, 발동시 모든것이 중단되고 리셋된다.

 - 0x0002 외부인터럽트0 (INT0) 는 두번째로 높은 우선순위로 발동시 리셋을 제외하고 바로 작동된다.

 - 외부인터럽트 뒤로 순위가 높은것은 타이머 인터럽트

 

 

반응형
1···34353637383940···181

+ Recent posts