본문 바로가기

프로그래밍 언어11

AVR EEPROM 읽고 쓰기 AVR EEPROM을 Read 하거나 Write 하기 위해서는 주소가 필요합니다. uint8_t eeprom_read_byte (const uint8_t *addr) void eeprom_write_byte (uint8_t *addr, uint8_t value) uint16_t eeprom_read_word (const uint16_t *addr) void eeprom_write_word (uint16_t *addr, uint16_t value) void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t n) void eeprom_write_block (void *pointer_eeprom, const void *pointe.. 2023. 9. 14.
입력 출력 간단하게 구현하기(AVR input output) Atmel Studio 를 사용하다보면 Port 출력 및 입력이 조금 불편합니다. 다른 컴파일러 같은경우 PORTA.1 = 1 이런식으로 가능하지만 Atmel Studio 의 경우는 지원하지 않아 복잡하죠 어떤곳은 Bit 를 Set 하거나 Clear 하는 함수를 사용하기도 합니다. C언어에서 if 문 대신 간단하게 사용할 수 있는 삼항 연산자라는게 있습니다. if문 if(비교) { 참} else {거짓} 삼항연산자 비교 ? 참 : 거짓 이걸간단하게 응용하면 #define outb(x,y,z) (z ? (x |= (1 y) & 1) 사용법 Output #define LED(x) outb(PORTA,7,x) //Port A 7번 핀 LED(1); // LED 켜기 LED(0); // LED 끄기 Input .. 2023. 9. 14.
[C#] 파일다이얼로그 , OpenFileDialog, SaveFileDialog OpenFileDialog using System.IO; //Path string document = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Program"; //Create Folder DirectoryInfo di = new DirectoryInfo(document); if (di.Exists == false) di.Create(); OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = document; //default folder ofd.DefaultExt = "dat"; ofd.Filter = "DAT Files(*.dat)|*.dat"; if (.. 2023. 8. 14.
volatile & Cache Volatile Microprocessor의 출력은 메모리상의 출력번지에 값을 쓰게 되면 그 값이 출력핀으로 나오게 됩니다. 메모리와 출력핀이 같이 연결되어 있다고 해서 Memory Mapped I/O라고 부르게 됩니다. 다시말해 출력은 메모리에 값을 쓰는것이다라고 할 수 있겠네요 (PC의 경우는 Isolated I/O 방식을 사용합니다.) 컴파일러는 프로그램을 해석해서 기계어로 변환하는 프로그램입니다. 같은기능을 여러가지 방법으로 구현할 수 있습니다. 사람이 구현하다 보니 필요없는 기능을 넣는경우도 있고 컴파일러 입장에선 더 효율적인 방법을 찾게 됩니다. 이걸 옵티마이즈(Optimize)라고 합니다. void outp(출력번지,mask,A); //메모리에 쓰기함수 A=0; outp(출력번지,mask,A.. 2023. 7. 13.