[LinuxFocus-icon]
<--  | վ���ͼ  | ����  | ����

���� | �����ڿ� | ���� | ����LF
This document is available in: English  Castellano  ChineseGB  Deutsch  Francais  

[Photo of the Author]
by Guido Socher (homepage)

��������:

Guidoϲ��Linux����Ϊ���ڿ����Լ���Ӳ����˵Linuxȷʵ��һ���dz��õ�ϵͳ��


Ŀ¼:

 

һ�������¶ȼƻ�����atmel΢����������I2Cͨ��

[Illustration]

ÕªÒª:

Atmel��Atmega8΢�������г�������ֺ�ģ����������ߡ� ���ڿ����κ�����IJ����豸��˵��ȷʵ��һ�������������

����ƪ����������������һ����β�ʹ�ö����MAX232оƬ��ֻͨ��������RS232�ӿ�����΢��������Linux PC.

_________________ _________________ _________________

 

����

����ƪ���������������my "Programming the AVR microcontroller with GCC, libc 1.0.4" article��������������GCC AVR��̻������������ⰲװ���鷳�㵱Ȼ����ʹ��the AVR programming CD (from http://shop.tuxgraphics.org/�� )


����ʹ����ô�Ƚ���������Ϊһ��΢������������ģ��������ź�ʱ�� ��϶���ҪһЩ�ӿ������������������ݻ��߶���������� ��ǰ�����ڴ˷�����������������������ͨ��΢�������е�UART��ʹ��RS232����ͨ�š� ���������ַ�ʽ��Ҫһ�������MAX232оƬ��4������ĵ������� ���⣬Atmel�����飺UARTͨ�ŵĿɿ���������Ҫһ���ⲿ���� ������������Ҫ�ö�Ķ������������ǿ�����취����ʹ�����ǡ�

PC��΢������֮�������͵�������ͨ�����٣����������ֽڣ��� ����ٶ�һ�㶼����Ҫ�����ʹ��I2C���ߣ�Э�飩�dz��ʺ��������

I2C��I2C������I��C��Ӣ�����eye-square-see����һ��˫��˫���ͨ�Žӿڡ� �����ɷ����ֹ�˾����ģ�����������Ҳ�ܵ������� ��Ҳ��Ϊʲô�����ij��̶�ͬһ��Э��ʹ�ò�ͬ�����֡� Ateml��I2C��TWI��Two Wire Interface��˫�߽ӿڣ���

���Ǻö��˿��ܲ�֪�������ǵĵ������Ѿ�ʹ����I2C���ߡ� �������е������϶���һ��I2C��������ȡ�¶ȡ�����ת���Լ����õ��ڴ������ȵ����е�Ӳ����Ϣ�� ���ҵ�����һI2C���߲�������PC�ⲿ��û�������ĽӲ������ �������ǵ÷���һЩ�µķ�����

����������������һ��TWI����һ�����ֽ�I2C�������������ġ�  

I2C/TWI������

ʵ����Atmega8���ݱ����μ��ο����ϣ��ӵ�160ҳ�������һ���dz���ϸ�������� ������������ֻ�ṩһ�����������������Ӧ���������ݱ�����������Ŀ�ˡ�

��I2C�������ܻ���һ�����豸��һ���򼸸����豸�����豸��ʼ��ͨ�Ų�����ʱ�ӡ� ���ߵ������߷ֱ��SDA�������ߣ���SCL��ʱ���ߣ��� �����ϵ�ÿһ���豸�����ж����ĵ�Դ������ͳ��RS232ͨ����ͬ���� ͨ�������߶�ͨ��4.7K�������������ӵ��߼��ߵ�ƽ�ϣ�����5V��IC�� +5V���� ��͸����������豸��ġ������ӡ� ��һ���豸�봫�͡�0��ʱֻ��Ҫ��һ���߽ӵؼ��ɣ����ߴ��͡�1��ʱ���ָߵ�ƽ��

������ÿһ���豸����һ��7λ��Ψһ��ַ�� ���豸ͨ���ͳ�һ����������ʼ״̬����ģʽ����ʼһ��ͨ�ţ� Ȼ���ٶ�������ʵ��豸����Ѱַ�� �������豸�ͳ�һ��������˵�������������д���ݡ� ���豸����һ��Ӧ��λ��ack-bit����ʾ�����������豸���ʲô�� ����֮�����������Ͽ�����9�����ص����ݣ�7λ��ַ��+һ����дλ+һ��Ӧ��λ����
| start | 7-bit slave adr | read_data bit | wait for ack | ... data comes here
Ȼ����ʲô��

��һ�����ǾͿ����շ������ˡ����͵���������8���أ�һ���ֽڣ��ı������ұ����յ�Ӧ��λ�� ���仰˵�����ϵ��������ǰ�9���صİ����͵ġ�ͨ�Ž��������豸�����ͳ�һ����ֹͣ״̬���� Ҳ����˵�����豸���մ��豸����������ʱ������֪�����͵��������� ��Ϊ��������û�Э���д�����һ��Ϣ��������Ҳ������ʲô���⡣ �������ǿ���ʹ�ñ�ʾ�ַ��������ġ�0���ֽ�������û��������Ҫ�����ˡ�

��SCLΪ��1��ʱSDA���ϵ���������Ч�ġ��磺
SDA H -\       /---\     /---\          /---\
    L   \-----/     \---/     \--------/     \------....

SCL H ----\     /-\       /-\     /-\    /-\    /-\
    L      \---/   \-----/   \---/   \--/   \--/   \-....


  | START |      1 |       1 |     0 |    1 |    0 |
ʹ����һЭ���һ���ô��������Dz���Ҫ��ȷ��ͬ��ʱ���źš� ��ʱ���ź���һ�㶶��ʱЭ�黹���Թ�����

�ϸ��˵����һ����ʹ�����ǿ���ʹ��һ���û��ռ�ij�����ʵ��I2CЭ�飬 ������Ҫ�ں�������������ض���Ӳ������UART�����dz����ǰɣ�  

�ƻ�

������ǰ���������Dz���ʹ��PC���ڲ�I2C���ߣ� �������ǿ���ʹ���κ��ⲿ�ӿ����շ����������ݱ������� �������ǽ�ʹ������PC�ϵ�RS232Ӳ���ӿڡ� ���仰˵������Ȼʹ�ø���ǰ����������ͬ��ͨ�Žӿڣ� ��������ʡ����MAX232Ӳ���͵������ȵȡ�

��Ȼ�����ѵIJ����Ǵ�ͷʵ��I2CЭ�飬�һ�������ܵ�ʱ��ѧϰ�͵��ԡ� ���������Ѿ�����ˣ������ֱ��COPY��:-)����ֻϣ������ʹ����Щ�����ʱ���ܼ�ס���ǵļ�ֵ��

��Ϊһ��ʾ���������ǽ�����һ���¶ȼơ���Ȼ��Ҳ���Բ��������Ķ���������ֻ���������ص�ơ� �Ǿ�����������ˡ�

����һƪ���������ǽ�����һ�����ص�Һ����ʾ���� Ҳ����˵�����ֱ�Ӵ�Һ����ʾ���϶����¶ȶ����õ����Linux PC��ȥ���ˡ� Ϊ�˲�ʹ��ƪ���¹������ǽ�����һƪ�ж�Һ����ʾ������˵����
ntc
NTCs ���С�����˲����㹻׼ȷ
 

The temperature sensor

������ҵ�һЩУ׼�����¶ȼƣ���һЩ��֧��I2CЭ��ģ��� �����Ƕ��ܹ�NTCs�Ƚϱ��ˣ�Ҳ�dz��ã���������Ҫ�ֹ�У׼�� ���������У׼һ����Ϳ��Ի��С�����ľ��ȡ�

NTCs��һ��������������Ƿ����Եġ�������ֻ��һ���뵼���������⣬ ����ֻ��Ҫ�ҵ����ʵĹ�ʽ�������Ե����ߵ���һ�¾����ˡ� ΢��������������һ��С�ͼ��������һЩ��ѧ����϶�û�����⡣
ntc formula
T��Tc��������Ҫ�õ����¶�ֵ��Rn��NTC��25'C�ĵ���ֵ��������� 4K��7K�ȵȵ�NTCs��Rn������Щֵ��
 

��·

circuit diagram
��·ͼ�����Сͼ����ͼ��
���������Ѿ�����������һ�������¶ȼƵ�������������������������NTC�������� һ�����ڲ��¶���һ�����ⲿ�¶ȡ������Ҫ������������ӣ��ȷ�˵conn3��PC2�ǿ��еģ��� �Ҳ�ϣ��������һƪ����������һ��ȫ�µĵ�·�� �����ڵ�·ͼ������������Һ����ʾ������Ҫ�ļ����ߡ�

���滹ʹ����һ����������ܡ���������Ҷ����ǻ����ĵ���ȷʵ�����á� ���磬���ڿ���PC��΢���������I2Cͨ��Э��ʱ����������I2C״̬���� ��������ʱ���ǿ���������˸���Ա����¶ȼ��ڹ�����

��ˣ���·�dz��������ˡ�΢�������е�ģ��ת������������NTC�ĵ�ѹ������ת�����¶�ֵ��

����ģ��ת����ʹ�ú��ֲο���ѹ��Atmega8������ѡ�5V��AVcc�����ڲ���2.56V�� ���ڲ������Dz���Ҫ���ⲿ��������¶ȷ�Χ�Ĵ�������ͨ����˵��+10'C��+40'C���㹻�ˡ� �������ǾͿ����ڲ����ڲ��¶�ʱʹ��2.56V�ο���ѹ�� ����1024�����ܵ���ֵ���������䵽0��2.56���ĵ�ѹ�����ϣ� ���ǿ��Եõ��dz��ߵľ��ȣ�2.5mV�ķֱ��ʣ��ȴ���������ַ��ر����ߣ���

RS232��CD�����һ�������ߣ������ӵ�I2C���ߵ�SDA���ϡ����Ǿ�����������΢�������϶�ȡ���ݡ� DTR��RTS������ߡ���PC��SDA�����������λʱ�Ϳ���DTR�� I2C���豸����������linux PC��������SCL��ʱ�ӣ��ߡ� Ҳ����˵ʱ���߾���һ��RS232������ߡ�

78L05�����ṩһ���ȶ��ĵ�Դ�Ͳο���ѹ�������ʹ���κ�7.5V��12V֮��Ľ�ֱ����Դ�� 9V��һ���ܺõ�ѡ��  

������·��

get this kit from the tuxgraphics shop
tuxgraphics.org�������б������õ���Ԫ���������һ���һ����ʴ�ĺܺõĵ�·�塣
��Ȼ��Ҳ��������ʹ����ǰ���������õ���ԭʼ��·�壬ֻ�����½�LED����pin-11�ϲ��������е���������

�������Ҫһ���ÿ��ĵ�·�Ļ��㻹����Ҫһ���µĵ�·�塣 ��Ϊ��·�dz����ӣ�ǡ���ĸ�ʴһ��ӡˢ��·����Ҫ�Ѻܴ�ľ����� ����Iznogood��linuxfocus�Ϲ���gEDA������֮����Ҳ����ʹ��gEDA�����Eagle�� gEDA�ĸ�Ҫ��ͼ����gschem�dz����á�������Eagle������һ���ܴ��Ԫ�����ſ⣬ ���Ҳ��ò�ΪAtmega8������Щ���š������dz�����ʹ�ò��Ҹ�Eagle����һ���á� ��΢�е�����ľ��ǻ���PCB�Ĺ���pcb�� ����մ�Eagleת����ʱ�����Ȼᷢ��Ԫ�������ܴ��𽺴��϶Ͽ��� Ϊ��ȷ����ȷ���𽺴����ӵ���ȷ�����������뾭������ Connects->Optimize rats-nest �������������ɵ�·ͼ����������·�塣 �������߼�ֻ���ֹ�����ע�⡣ top view, position of components

��ʹ�ó�ɫͼ������ͼ����֪��ô��ĵ���ӡʱ����ͼ�㲻�������κε������ �����dz�ɫͼ��ʵ�������ڰ�������Ԫ��������һ�档 ���������һ�����������֣���ôӡ�ڵ�·����ʱ���������������� ������ֻ��pcb�������IJ��֣������Ķ���Gimp������

��лshop.tuxgraphics.org �� ���dz��۱������ᵽ�����е�������������Ϳ���רע��������Ȥ�IJ��ֲ����Գɹ���װ���·�ˡ�  

���������������һ��Putting everything together

����װ���·ʱע��Ԫ�����ļ����Ƿdz���Ҫ�ģ����������� �����ܡ���ѹ�����ܡ�78L05��LED��΢�����������м��Եġ�

���㽫΢�������������֮ǰ��Ӧ���ȼ����Դ���֡� �����Դ�����������㲻���ò�����ȷ�Ķ����������п����ջ�΢�������� ���������һ����Դ������һ��9V�ĵ�أ��õ�ѹ����һ�£�ȷ������΢����������������ϵõ�ǡ��5V�ĵ�ѹ�� ��һ���Ͱѵ�·�ӵ���Linux PC��RS232���ϣ� ʹ�ø����ź��������i2c_rs232_pintest����
i2c_rs232_pintest -d 1 -c 1
i2c_rs232_pintest -d 0 -c 1
i2c_rs232_pintest -d 1 -c 0
�ó�����������RS232���RTS������SCL��ʹ��-cѡ���DTR������SDA��ʹ��-dѡ��ĵ�ƽֵ�� RS232�ڵĵ�ѹ��ԼΪ+/-10V��������ѹ������֮����Ӧ��ֻ�ܲ⵽-0.7�����߼�0����+4-5V(�߼�1����

ֻ��ͨ����������֮����ܲ���΢��������  

ʹ��I2C����ͨ��

���أ��μ��ο����ϣ�linuxI2Ctemp.tar.gz�ļ�����ѹ��I2Cͨ�������������ļ���ʵ�֣�
i2c_avr.c -- the i2c statemachine for the atmega8
i2c_m.c   -- the complete i2c protocol on the linux side
�Ҹ���atmega8�ӵ�ַ3�������ʹ������C������atmega8�����ַ�����hello����
address_slave(3,0); // tell the slave that we will send something
i2c_tx_string("hello");
i2cstop(); // release the i2c bus

on the microcontroller side you would receive this "hello" string with
i2c_get_received_data(rec_buf);
�dz��òµ¥£ï¿½ï¿½ï¿½Î¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ò²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Æ¡ï¿½ ����Կ�i2ctemp_avr_main.c�е��¶ȶ�������ô���ġ�  

�¶��Ƕ��٣�

���벢��΢������װ�ش��룬ֱ����linuxI2Ctemp������Ŀ¼��ִ���������
make
make load
����������������i2c_rs232_pintest��i2ctemp_linux
make i2c_rs232_pintest
make i2ctemp_linux
���������ֱ��ʹ��bin��Ŀ¼���Ѿ�����õİ汾��

����ȡ�¶ȣ�ֻ��Ҫ���У�
i2ctemp_linux
�����ӡ�����ں�������¶ȡ���ΪI2C���߷dz����� �����������վ����ʾ�����ҽ��鲻Ҫֱ����web������������i2ctemp_linux�� �������һ��cron job�����������������д��һ��HTML�ļ��С� ��linuxI2Ctemp���е�README�ļ�����һ��ʾ���ű���  

����

I2CЭ�鼸������Ҫ�����Ӳ���������Ѿ�Ϊ�շ����������������Ż��� ������������Լ���΢����������ͨ�ţ�������������Ҫ�ġ�����һ���dz�Ư���Ľ��������

����ƪ����������Ҫ������Ӳ�������ϡ������ϲ����ƪ�����ҽ���дһƪ��������������ι����ģ� �ر����������ģ��ת����I2CЭ�������ʵ�ֵġ� ��һƪ��������Ҳ��������һ��Һ����ʾ���Լ����϶Ⱥ����϶�֮���ת����  

�����

 

����ƪ���·�������

ÿƪ���¶��и��Եķ���ҳ�档�����ҳ����������ύ���ۣ�Ҳ���Բ鿴�������ߵ����ۣ�




��ҳ��LinuxFocus�༭��ά��
© Guido Socher
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
������Ϣ:
en --> -- : Guido Socher (homepage)
en --> zh_CN: SEVEN <seven1240/at/163.com>

2005-02-07, generated by lfparser version 2.51