사용하려는 타이머 카운터 채널이 apb1, apb2 버스중 어디에 연결되어 있고, 클록설정과 prescaler setting,인터럽트 벡터 nvic까지 이해가 요구되네요.... ATmega128과 비교했을 때 난이도가 올라가는 이유였다고 생각됩니다. 그리고 소프트웨어 작성 방법론에 while() { }loop에서 정해진 주기안에 순서대로 돌아가는 구조와 인터럽트로 어떤 동작을 구현하는게 적합한지,또는 이둘을 어떻게 섞어서 사용할지에 대한 고민을 한다면 앞서 질문드렸던 소프트웨어 작성 방법론에 대한 답이 되지 않을까 하고 생각합니다.
수업의 16:50분 에서 injected와 regular channel의 의미가 20:00분쯤에서 다시 나옵니다. 그런데 첫부분에서 injected를 사용안하는듯한 이상을 줍니다. 그래서 이부분을 "인터럽트 같은 개념이고, 뒤에서 설명한다" 라고 말해서주시면 더 좋을것 같습니다. SAR, sigma-delta비교 https://www.digi-electronics.com/en/blogs/sar-adc-vs-sigma-delta-adc-speed-resolution-enob-and-application-selection/709.html SAR, sigma-delta, flash, pipe lined비교 https://www.facebook.com/61578305660118/posts/analog-to-digital-converters-translate-continuous-voltages-into-digital-codesbut/122188812986943522/ https://www.youtube.com/watch?v=mG8td8mqF3Y
얼마전에 면접보는데 로봇 소프트웨어 코딩을 어떻게 하겠냐고 물어 봤는데 대답을 잘 하지는 못했습니다. 많은걸 배우게 하는 면접이었던것 같습니다. 초기화, 그다음 센서나 모듈별 작동 순서 정의, 제어루프 실행 이라 말햇는데 너무도 부족한 대답이었던것 같습니다. 지금 수업에서 예로든 전동 킥보드라면 어떻게 적용해야 할까요 ? 첫번째, 운용조건(사람 1명 120kg까지 가정, 3시간 운전 가정) 설정 및 얼마안에 속도 피드백 루프를 돌아야 한다 라는 제한 조건(제어주가)을 설정. 두번째, 필요한 하드웨어 선정: 배터리 용량 결정, dc모터스펙 결정(요구되는 토크 크기 예측), stm32mcu 선택 (-->너무 고스펙 아니냐고 물어 볼수도 있을것 같습니다) 세번째, 소프트웨어 구상 : 엔코더의 회전속도 피드백을 통한 속도제어 PI컨트롤러 설계, 통신방식은 rs232/can, 대략 이렇게 대답 하면 될까요 ? 특히 소프트웨어 구조라는게 대체 어디 까지를 의미 하는지 모르겠습니다. 인터럽트로 처리한다. 아니면 상태머신으로 관리한다 등등이 대답이 될수 잇을까요 ? 그리고 서로다른 동작속도를 가진 시스템은 어떻게 관리 해야 하나요 ? 어디선가 본기억으로 ros2의 메세지 방식은 확장성에 좋지만 지연이나 놓침 현상이 있을 수 있다고 본것 같습니다. 하지만 안전이 매우 중요한 분야에서는 이런 방식이 적절치 않아 보입니다.
uart 실습코드나 최종 전체 코드에서 uart 테스트 모드로 두고 tera term을 켰고 baud rate와 같은 설정들도 맞게 했는데 화면에 깨진 문자들이 반복적으로 나타납니다. 현재 5핀<->USB 커넥터가 한개 뿐인 상황이라 일단 보드에 stlink 이용해서 펌웨어를 입히고 이후에 5핀<->USB 커넥터를 stlink에서 제거하고 uart 모듈에 연결해서 테라텀을 키고 있는 상태입니다. 혹시 제가 잘못 진행을 하고 있는건지 알려주실 수 있으신가요? 연결 방법에 대한 어떠한 자료가 없으니 헷갈립니다.. 5핀 usb 커넥터가 총 2개가 필요해서 PC에 2개가 꽂혀야 하는 건가요?
제공해주신 코드에는 main()함수가 없습니다. 부팅시에 어떻게 해당 코드를 배치 하죠 ? 예제 코드 목적은 초기화 함수 작성이라고 이해 하면 될까요 ? 그리고 1:30초에서 캐시 설명을 위해, MCU와 메모리 연결을 그리셨는데요. MCU가 아니라 CPU(core)라고 해야 하지 않나요 ? MCU는 메모리도 포함하는 개념으로 이해하고 있습니다. 예제 코드 보면서,레퍼런스 메뉴얼 보면서 레지스터 하나씩 따라가니 이제야 조금 이해되는것 같습니다. clock부터 하나씩 확실해 해 두어야 나중에 timer counter까지 자연스럽게 연결될것 같ㅌ습니다.
제공해주신 코드에는 main()함수가 없습니다. 부팅시에 어떻게 해당 코드를 배치 하죠 ? 예제 코드 목적은 초기화 함수 작성이라고 이해 하면 될까요 ? 예제 코드 보면서,레퍼런스 메뉴얼 보면서 레지스터 하나씩 따라가니 이제야 조금 이해되는것 같습니다. clock부터 하나씩 확실해 해 두어야 나중에 timer counter까지 자연스럽게 연결될것 같ㅌ습니다.
메모리맵에서 code, data, txt는 각각 어떻게 분배되어 저장되나요 ? (ZI, ZW, RO/RW) 그리고 함수 포인터를 사용한다면 메모리상의 몇번지에 저장되어 있고, 그 크기가 얼마인지 어떻게 알수 있을까요 ? 만약 uint8_t라는 포인터 변수를 선언하면, *p+1은 주소 번지 1의 증가를 의미 하나요 ?
binary로 표현하면 해당 레지스터를 0, 1 로 설정한게 바로 매칭되서 알기 쉬울텐데, 헥스로 앱력하는 이유가 있나요 ? 바이너리로 먼저 계산후 헥스로 입력하는게 규칙인가요 ? 그리고 처음에 1:00, 1분쯤 영상위치에서 Target Projedt Type을 Empty에 체크 하면, 생성된 코드를 지우지 않아도 되지 않나요 ?
예전에 모 중소기업에서, 모터드라이버 회로 검토 시키면서 저에게 소비전력을 예측하라는 지시를 내렸습니다. 사실 지금 생각하면 대체 그 모터가 어떤부하( CMG)를 얼마나 회전시킬지, 즉 기동 요구량이 얼마나 될지도 모르는데 그걸 반대로 질문하지 못한게 아쉽긴 합니다. 제가 궁금한 사항은 인버터 회로 및 운용 모드 또는 요구조건을 보고 어떻게 소비전력을 예측해야 하는지 부분입니다. 예를 들어 부하 토크가 얼마라 가정했을때 몇초동안 내에 기동해야 한다는 조건으로 부터, 회로도만 보고 손으로 소비전력이 예측가능한지, 아니면 시뮬레이션 소프트웨어로 해야하는지 궁금합니다.
송봉길 저자(ATmega128)책에서 가볍게 유니폴라, 바이폴라 결선 방법 비교가 있었던거 같습니다. 사실 다 이해하지는 못햇습니다. 두가지 구동 방법이 어떻게 다르며, 장단점이 있나요 ? 강의 자료의 전류 그림을 보면, 토크도 또한 계속 변하겠네요(회전 방향은 유지) ? 추가로, 모터에 가하는 전압 부호가 바뀌니, 전류도 부호가 바뀌나요? 아니면 전류 흐름 방향은 유지되고, 단지 크기만 변하나요 ?
sine 입력을 fet로 만들면, 손실이 커서, 스위칭으로 평균값으로 만든다는 걸로 이해하면 될까요 ? 그리고 삼각파형은 나중에 STM32에서 timeer counter(업카운터+다운카운터)동작모드로 좌우 삼각형으로 설정하여, 사용자가 입력한 신호와 비교하여 MCU가 크기 관계를 판단하여 fet 스위치(drain)을 제어 한다고 생각하면 되나요 ?