'embeded'에 해당되는 글 822건

  1. 2012.01.11 AVR TWI 예제
  2. 2012.01.10 i2c 정리 (4)
  3. 2012.01.03 AVR EEPROM / CODE section 관련
  4. 2011.12.29 AVR ATmega용 JTAG과 AVR32 호환성?
  5. 2011.12.29 아두이노 (arduino)
  6. 2011.12.29 ATMEL AVR 시리즈별 플래시 / 메모리 용량 (2)
  7. 2011.12.28 avr ddr pin port
  8. 2011.12.26 winAVR에서 코드 영역에 변수 선언하기 (4)
  9. 2011.12.10 ARM infocenter
  10. 2011.11.28 I2C (2)
24CXX EEPROM 을 이용한 TWI 예제라는데
데이터시트를 살펴보면 8bit 레지스터를 위한 주소를 가지는 녀석이다.
용량이 큰녀석들은 16bit 주소를 사용하므로 nongnu에서 공개하는 소스대로 사용하면 안될듯 하다.
[링크 :  http://www.nongnu.org/avr-libc/user-manual/group__twi__demo.html



[링크 :  http://pdf1.alldatasheet.com/datasheet-pdf/view/200505/SANYO/LE24C0221M.html]


'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

AVR ISP 핀 순서  (0) 2012.01.22
AVT FFT + DAC = 보청기?  (0) 2012.01.18
AVR TWI 예제  (0) 2012.01.11
AVR EEPROM / CODE section 관련  (0) 2012.01.03
AVR ATmega용 JTAG과 AVR32 호환성?  (0) 2011.12.29
ATMEL AVR 시리즈별 플래시 / 메모리 용량  (2) 2011.12.29
Posted by 구차니

댓글을 달아 주세요

embeded/i2c2012.01.10 23:32
i2c는 1선은 데이터 1선은 클럭을 보내는 구조인데
문서마다 조금씩 다르게 나오고 칩마다 설명이 달라서 모호한 감이 없진 않지만..

아무튼 용어를 정의하자면

i2c는 Master와 Slave로 구성되며

 - Master는 SCL을 통해 클럭을 생성하며, 데이터를 요청하는 주체가 되는 녀석이고
 - Slave는 Master의 요청에 따라 데이터를 받거나 요청시 보내주는 녀석이다.

2개의 선로를 통해 통신을 하며

 - SDA는 데이터를 주고 받으며(즉, Master 기준 Input / Output 전환이 필요하다)
 - SCL은 데이터 구분을 위한 클럭을 Master에 의해서 유지하게 된다.

통신을 주고 받기 위해 Slave에는 Address가 부여된다.

 - 7bit의 경우 상위 4bit의 host Address 하위 3bit의 동일 장치에 대한 구분용 device address가 존재한다.
 - 10bit도 존재한다.(자세한 내용은 http://www.i2c-bus.org/addressing/10-bit-addressing/ 참조)

Bus Empty / Start(start&start continue) / 1bit (data&ACK) / STOP 의 상황이 있다.

 - Bus Empty 는 SCL 과 SDA가 모두 High로 아무도 버스를 사용하지 않는 상황
 - Start는 SCL이 High인 상황에서 SDA가 High 에서 Low로 떨어지는 상황
 - Stop은 SCL이 High인 상황에서 SDA가 Low 에서 High로 올라가는 상황
 - 1bit는 SCL을 SDA가 감싸면서 Low -> High-> Low로 변화하는 상황이다.

통신은 다음의 순서를 따른다.
 - Bus Empty 인 것을 확인하고(둘다 high 임을 확인)
 - Start로 SDA와 SCL을 low로 설정하고
 - 7bit Address를 보내고 1bit의 Write/Read를 보내고(대개는 합쳐서 1byte로 처리함)
 - ACK를 수신하기 위해 SDA의 방향을 Master기준 input으로 변경하고 SCL만 출력한다. (클럭만 내고 처리안하기도 함)
 - 실어보낼 데이터를 전송하고(1byte)
 - ACK를 수신하기 위해 SDA의 방향을 Master기준 input으로 변경하고 SCL만 출력한다. (클럭만 내고 처리안하기도 함) 
 - 더이상 전송할 데이터가 없으면 SDA와 SCL을 high로 설정해 Stop임을 알리고 버스를 놓는다.

i2c 장치에 따라서 다음과 같이 전송을 하게 된다.
(장치내부의 레지스터 주소로 앞의 DATA를 1바이트나 2바이트로 사용하기도 한다.)
 - S / ADDR / ACK / DATA / P
 - S / ADDR / ACK / DATA / ACK / DATA / ACK / P
 - S / ADDR / ACK / DATA / ACK / DATA / ACK / Sr / DATA / ACK / DATA / ACK / P


 

 

 

음.. 이녀석은 STOP이 잘못그려진듯? SCL이 LOW에서 High 변화되어 한다.
[링크 : http://achiven.tistory.com/entry/I2c란]

2011/11/28 - [하드웨어] - I2C

'embeded > i2c' 카테고리의 다른 글

i2c mode - tm4c  (0) 2018.04.26
i2c BUS에 pull-up, pull-down  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
i2c 정리  (4) 2012.01.10
I2C  (2) 2011.11.28
SMBus 넌 머냐? - System Management Bus  (2) 2009.01.14
Posted by 구차니
TAG I2C

댓글을 달아 주세요

  1. sunny

    음.. 이녀석은 STOP이 잘못그려진듯? SCL이 LOW에서 High 변화되어 한다. --> Low에서 High로 변화되어야 하는 것이 아니고, SCL이 "High일때" SDA가 Low에서 High로 변화되는 게 Stop 이라고 알고 있습니다. 즉, "High일때"가 중요한 조건이 되는 것이라고 저는 생각하고 있습니다... ^^

    2012.11.07 11:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 문서들 마다 우후죽순이라 어느게 맞는지 잘 모를때 요약한거라
      틀린게 있을수도 있습니다. 한번 다시 확인해서 본내용에 정정해야겠네요 ^^ 내용감사합니다.

      2012.11.07 11:17 신고 [ ADDR : EDIT/ DEL ]
  2. hotline

    음.. 지금 I2C 막 공부 시작해서 블로그 몇개 돌아다니고 있는데..
    그림4 를 말씀하시는거면
    STOP 맞게 그려진거 아닌가요?
    STOP 은 'SCL 이 High' 일때 'DATA' 가 low 에서 high 로 바뀌면 인거 같은데 맞지않나요?
    뒤에 쩜선이야 뭐. .SCL에 high 였다는걸 표현하기 위함인거같고..

    2013.03.18 17:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 위에 두개와 너무 다른 양상인게 혼돈을 일으키게 하더라구요 ㅠ.ㅠ

      2013.03.18 22:27 신고 [ ADDR : EDIT/ DEL ]

음.. eeprom 자체에 바로 넣을수 있는 녀석도 있었다는 사실을 발견!

#define  PROGMEM   __ATTR_PROGMEM__
#define  EEMEM   __attribute__((section(".eeprom")))

[링크 :  http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html]
[링크 :  http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html]   

[링크 : http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=38417]

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

AVT FFT + DAC = 보청기?  (0) 2012.01.18
AVR TWI 예제  (0) 2012.01.11
AVR EEPROM / CODE section 관련  (0) 2012.01.03
AVR ATmega용 JTAG과 AVR32 호환성?  (0) 2011.12.29
ATMEL AVR 시리즈별 플래시 / 메모리 용량  (2) 2011.12.29
avr ddr pin port  (0) 2011.12.28
Posted by 구차니

댓글을 달아 주세요

혹시나 AVR32에서도 ISP를 쓸수있나 찾아봤더니
데이터 시트에서도 ISP 검색은 하나도 안나와고 JTAG만 나오는데..
This is not for AVR32.
AVR32 is JTAG device and Atmel's Jtag mkII required.
While there are many mkII compatible devices for AVR8 the protocall and commands for supporting AVR32 are not known, so original mkII is the only choice at this time..... 

[링크 : http://www.edaboard.com/thread95651.html

JTAG도 ATmega용은 대부분 AT90, ATmega 시리즈만 지원한다고 되어 있다.
AVR 마이크로 컨트롤러 중에서
AT90CAN128,
ATmega128, ATmega16, ATmega162,  ATmega169, ATmega32, ATmega323, ATmega64만 지원합니다. 
 
[링크 : http://devicemart.co.kr/goods/view.php?seq=27471

아무튼, AVR32을 지원하다는 JTAG은 조금더 비싸긴한데..
AVR JTAG과 AVR32 JTAG을 구분해서 포트를 만들어 놓았고
VCC와 RST 관련이 조금 다른것 봐서는 호환이 안될수도 있을것 같긴한데...
써보기 전에는 알수도 없고... 써볼지도 모르는 상황이라 흐음...

[##_http://minimonk.net/script/powerEditor/pages/1C%7Ccfile29.uf@187F1C454EFC6EA812D96D.jpg%7Cwidth=%22442%22%20height=%22202%22%20alt=%22%22%20filename=%2229653_1.jpg%22%20filemime=%22image/jpeg%22%7C_##]


[링크 : http://devicemart.co.kr/goods/view.php?seq=29653] 

흐음.. AVR JTAG MKII 를 검색해보니 아래의 하드웨어 지원목록이 나오는데.. 다른넘들은 우찌될랑가?
AT32 AT90 ATmega ATtiny ATtiny
AT32AP7000
AT32AP7001
AT32AP7002
AT32UC3A0128
AT32UC3A0256
AT32UC3A0512
AT32UC3A1128
AT32UC3A1256
AT32UC3A1512
AT32UC3A3128


AT32UC3A3128S
AT32UC3A3256
AT32UC3A3256S
AT32UC3A364
AT32UC3A364S
AT32UC3B0128
AT32UC3B0256
AT32UC3B064
AT32UC3B1128
AT32UC3B1256
AT32UC3B164

AT90CAN128
AT90CAN128
AT90CAN32
AT90CAN32
AT90CAN64
AT90CAN64

AT90PWM1
AT90PWM2
AT90PWM216
AT90PWM2B
AT90PWM3
AT90PWM316
AT90PWM3B
AT90USB1286

AT90USB1287
AT90USB162
AT90USB646
AT90USB647
AT90USB82

ATmega1280
ATmega1281 ATmega1284PATmega128   ATmega128A
ATmega128RZAV  ATmega128RZBV
ATmega16  ATmega162
ATmega164P  ATmega164P
ATmega164PA  ATmega165
ATmega165P  ATmega168
ATmega168  ATmega168P
ATmega168PA  ATmega169
ATmega169P  ATmega16A
ATmega16U2  ATmega16U4
ATmega2560  ATmega2561
ATmega256RZAV  ATmega256RZBV
ATmega32  ATmega324P
ATmega324P  ATmega324PA
ATmega325  ATmega3250
ATmega3250P  ATmega325P
ATmega328P  ATmega329
ATmega3290  ATmega3290P
ATmega329P  ATmega32A
ATmega32C1  ATmega32M1
ATmega32U2  ATmega32U4
ATmega406  ATmega48
ATmega48  ATmega48P
ATmega48PA  ATmega64
ATmega640  ATmega644
ATmega644P  ATmega644P
ATmega644PA  ATmega645
ATmega6450  ATmega649
ATmega6490  ATmega64A
ATmega64C1  ATmega64M1
ATmega64RZAPV  ATmega64RZAV
ATmega88  ATmega88
ATmega88P  ATmega88PA
ATmega8U2

ATtiny13
ATtiny13A
ATtiny167
ATtiny2313
ATtiny24
ATtiny24
ATtiny24A
ATtiny25
ATtiny25
ATtiny261
ATtiny261
ATtiny43U
ATtiny44
ATtiny44
ATtiny44A
ATtiny45
ATtiny45
ATtiny461
ATtiny461
ATtiny48
ATtiny84
ATtiny84
ATtiny85
ATtiny85
ATtiny861
ATtiny861
ATtiny87
ATtiny88

 
ATxmega128A1
ATxmega128A3

ATxmega128A4
ATxmega16A4
ATxmega192A1
ATxmega192A3
ATxmega256A1
ATxmega256A3
ATxmega256A3B
ATxmega32A4
ATxmega384A1
ATxmega64A1
ATxmega64A3
ATxmega64A4


[링크 : http://enshop.avrvi.com/index.php?route=product/product&product_id=35]
Posted by 구차니

댓글을 달아 주세요

embeded/arduino(genuino)2011.12.29 22:33



문득 어디서 주워들은게 있어서 찾아 봤는데
AVR을 기반으로 AVRStudio가 아닌 독자적인 IDE와 API를 제공하는 open source 개발환경이다.
기본적인 보드의 회로까지 공개하고 있는 장점이 있다는데

windows용을 받아보니 프로그램 안에 java가 들어있고,
단순하면서 상당히 깔끔하고 잘만들어져 있다.



아두이노 파일은 확장자는 ino 이며
일반적인 AVRStudio의 문법과는 조금 다르게 구성되어 있다. 


아두이노화(?)된 녀석이다 보니
라이브러리도 범용으로 include를 이런식으로 가능하도록 해놓았는데
처음에는 이게 머야~ 싶긴 하지만 확실히 기계어스러운 AVR 보다는 조금은 더 이해하기 쉬운듯


[링크 : http://www.arduino.cc/]



사족 1. 검색하다 보니 FTDI 드라이버가 내장되어 USB로 연결한다는데
          다른 AVR과는 다르게(?) 보드 자체에 ISP를 내장시키는 타입이다. 

'embeded > arduino(genuino)' 카테고리의 다른 글

아두이노 나노 - 시리얼 테스트  (3) 2016.03.27
아두이노 나노 v3.0 / v3.1  (0) 2016.03.27
지름 도착 - 아두이노 나노/표준서보  (0) 2016.03.26
아두이노 버전별 차이점  (0) 2015.10.05
아두이노 부품들...  (0) 2015.06.29
아두이노 (arduino)  (0) 2011.12.29
Posted by 구차니

댓글을 달아 주세요

내장 SRAM은 16KB가 최대이고, Flash는 128KB EEPROM은 4KB가 최대이다.


Device
Flash (Kbytes) SRAM (Kbytes) EEPROM (Bytes)
ATmega8 8 1 512
ATmega8515 8 0.5 512
ATmega8535 8 0.5 512
ATmega16 16 1 512
ATmega32 32 2 1024
ATmega64 64 4 2048
ATmega128 128 4 4096
ATmega162 16 1 512
ATmega48 4 0.5 256
ATmega88 8 1 512
ATmega168 16 1 512
AT90CAN128 128 4 4096
ATmega325 32 2 1024
ATmega3250 32 2 1024
ATmega6450 64 4 2048
ATmega645 64 4 2048
ATmega329 32 2 1024
ATmega3290 32 2 1024
ATmega649 64 4 2048
ATmega6490 64 4 2048
ATmega640 64 8 4096
ATmega1281 128 8 4096
ATmega2561 256 8 4096
ATmega2560 256 8 4096
ATmega1280 128 8 4096
ATmega644 64 4 2048
AT90CAN32 32 2 1024
AT90CAN64 64 4 2048
AT90USB1286 128 8 4096
AT90USB1287 128 8 4096
AT90USB647 64 4 2048
AT90USB646 64 4 2048
ATmega164P 16 1 512
ATmega324P 32 2 1024
ATmega165P 16 1 512
ATmega169P 16 1 512
ATmega644P 64 4 2048
AT90PWM1 8 0.5 512
ATmega329P 32 2 1024
ATmega3290P 32 2 1024
ATmega325P 32 2 1024
ATmega3250P 32 2 1024
AT90USB82 8 0.5 512
AT90USB162 16 0.5 512
AT90PWM216 16 1 512
AT90PWM316 16 1 512
ATmega48P 4 0.5 256
ATmega88P 8 1 512
ATmega168P 16 1 512
ATmega328P 32 2 1024
AT90PWM3B 8 0.5 512
AT90PWM2B 8 0.5 512
ATmega32U4 32 3.3 1024
ATmega1284P 128 16 4096
ATmega16U4 16 2.1 512
ATmega16A 16 1 512
ATmega32A 32 2 1024
ATmega88PA 8 1 512
ATmega324PA 32 2 1024
ATmega48PA 4 0.5 256
ATmega164PA 16 1 512
ATmega64A 64 4 2048
ATmega128A 128 4 4096
ATmega8A 8 1 512
ATmega168PA 16 1 512
ATmega8U2 8 0.5 512
ATmega16U2 16 0.5 512
ATmega32U2 32 1 1024
ATmega644PA 64 4 2048
ATmega16M1 16 1 512
ATmega32M1 32 2 1024
ATmega64M1 64 4 2048
ATmega169PA 16 1 512
ATmega48A 4 0.5 256
ATmega88A 8 1 512
ATmega168A 16 1 512
ATmega328 32 2 1024
ATmega164A 16 1 512
ATmega324A 32 2 1024
ATmega644A 64 4 2048
ATmega1284 128 16 4096
AT90PWM81 8 0.25 512
ATmega165PA 16 1 512
ATmega325A 32 2 1024
ATmega3250A 32 2 1024
ATmega645A 64 4 2048
ATmega645P 64 4 2048
ATmega6450P 64 4 2048
ATmega6450A 64 4 2048
ATmega169A 16 1 512
ATmega329A 32 2 1024
ATmega649A 64 4 2048
ATmega3290A 32 2 1024
ATmega649P 64 4 2048
ATmega6490A 64 4 2048
ATmega6490P 64 4 2048
ATmega329PA 32 2 1024




[링크 : http://atmel.com/dyn/products/param_table.asp?category_id=163&family_id=607&subfamily_id=760]
Posted by 구차니

댓글을 달아 주세요

  1. 도움이 되었습니다.

    2014.04.01 21:48 신고 [ ADDR : EDIT/ DEL : REPLY ]

매번 헷갈리는 지라...
아무튼  PORT는 값을 쓰는 용도
PIN은 값을 읽어 들이는 용도
DDR은 읽는용으로 쓸지 쓰는 용으로 쓸지를 정해주는 용도이다.
DDR 값이 0 이면 PORT 에 쓰고
DDR 값이 1 이면 PIN 으로 읽어 오면 된다.

PORTA - Port A Data Register
DDRA  - Port A Data Direction Register
PINA  - Port A Input Pins Address 

The DDxn bit in the DDRx Register selects the direction of this pin.
If DDxn is written logic one, Pxn is configured as an output pin.
If DDxn is written logic zero, Pxn is configured as an input pin. 

Three I/O memory address locations are allocated for each port,

one each for the Data Register - PORTx,
Data Direction Register - DDRx,
and the Port Input Pins - PINx.

The Port Input Pins I/O location is read only, while the Data Register and the Data Direction Register are read/write.
In addition, the Pull-up Disable - PUD bit in SFIOR disables the pull-up function for all pins in all ports when set.

[링크 : http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf] 

[링크 : http://donghwada.tistory.com/entry/ATmega-Pin-Configurations-DDR-PORT-PIN]
Posted by 구차니
TAG Atmel, AVR, DDR, pin, port

댓글을 달아 주세요

PROGMEM 매크로는 RAM에 변수를 선언하는게 아니라
보조 기억 장치에 데이터를 저장하게 하는 선언이다.

#include <avr/pgmspace.h>
// #define PROGMEM   __ATTR_PROGMEM__
// #define pgm_read_byte ( address_short   )     pgm_read_byte_near(address_short)
// #define pgm_read_byte_far ( address_long   )     __ELPM((uint32_t)(address_long))
// #define pgm_read_byte_near ( address_short   )     __LPM((uint16_t)(address_short))
  
unsigned char mydata[11][10] PROGMEM; 
[링크 : http://blog.naver.com/6k5tvb/120124621988]



근데.. 그냥 c에서 이렇게 하는게 머더라... -_-
Posted by 구차니
TAG PROGMEM

댓글을 달아 주세요

  1. 히히,, 잘 모르는 내용이지만...^^
    그래도 새해 인사는 드려야죠^^
    해피한 새해 되시길 빌어용^^

    2011.12.26 20:35 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • ㅠ.ㅠ C언어에서도 code 영역에 변수로만 선언하고
      메모리로 올리지 않는게 있었던거 같은데 기억이 안나요 ㅠ.ㅠ

      혹시 선언자 아시면 좀 알려주세요 ㅠ.ㅠ

      2011.12.26 22:20 신고 [ ADDR : EDIT/ DEL ]
  2. 크리스마스는 잘 보내셨나요?
    전 감기에 걸려서 고생 중이지요...-_-

    2011.12.27 15:05 신고 [ ADDR : EDIT/ DEL : REPLY ]

embeded/ARM2011.12.10 21:15
ARM 에서 부동소수점 지원하나 검색하다가 걸려나온
의외의 득템이다! 싶은 링크

[링크 : http://infocenter.arm.com/help/index.jsp]

'embeded > ARM' 카테고리의 다른 글

arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
winARM  (0) 2012.01.12
ARM infocenter  (0) 2011.12.10
ARM NEON  (0) 2011.08.04
arm용 linux 패치  (0) 2011.06.20
ARM JTAG / Wiggler + H-JTAG  (0) 2010.07.16
Posted by 구차니

댓글을 달아 주세요

embeded/i2c2011.11.28 17:54

I2C

SDA의 폭이 SCL 보다 크다는 점은
아마도.. SCL의 Rising edge에 트리거 되서 SDA의 값을 읽기 때문이 아닐까? 라는 망상중

Timing sheet


아무튼, ACK는 slave가 쓰는건데
그렇다면.. Master에서 ACK에 대한 SCL은 생성하지 않아도 되는걸려나?
흐음.. Slave->Master를 보면 ACK가  색상이 다르네 -_- 어렵다 ㅠ.ㅠ

Master -> Slave (Write)


Slave -> Master (Read)


[링크 : http://www.best-microcontroller-projects.com/i2c-tutorial.html]

[링크 : http://en.wikipedia.org/wiki/I2C]
[링크 : http://achiven.tistory.com/entry/I2c란]
[링크 : http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html]

[링크: http://i2c2p.twibright.com/spec/i2c.pdf]

'embeded > i2c' 카테고리의 다른 글

i2c mode - tm4c  (0) 2018.04.26
i2c BUS에 pull-up, pull-down  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
i2c 정리  (4) 2012.01.10
I2C  (2) 2011.11.28
SMBus 넌 머냐? - System Management Bus  (2) 2009.01.14
Posted by 구차니
TAG I2C

댓글을 달아 주세요

  1. sunny

    Slave->Master(Read)에서는 master가 Ack를 줘야 되는 걸로 알고 있습니다. 즉 master가 "나 데이터가 필요해(read)"라고 버스에 커맨드(slave read address)를 주면 slave가 버스에 데이터를 내보내고, master가 ack를 줘야만 다음 데이터를 진행하겠죠...

    2012.11.07 11:08 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 앗 i2c글을 다 보셨네요 ㅎㅎ
      처음에 직접구현하려고 했던건데 TI 칩에서는 i2c 라이브러리를 제공해서 신경을 안쓰고 있었네요. 나중에 한번 다시 정리해보도록 하겠습니다.

      2012.11.07 11:19 신고 [ ADDR : EDIT/ DEL ]