�ڶ����� ���� һ�������¶ȼƻ�����atmel����������I2Cͨ��
ArticleCategory: [Choose a category, do not translate
this]
Hardware
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido
Socher
en to zh SEVEN
AboutTheAuthor:[A small biography about the author]
Guidoϲ��Linux����Ϊ���ڿ����Լ���Ӳ����˵Linuxȷʵ��һ���dz��õ�ϵͳ��
Abstract:[Here you write a little summary]
�ڵڶ����������ǽ�����һ��Һ����ʾ����LCD���������ҽ�����һ������������ι����ġ�
��һ�ζ���һϵ�����µĶ��������Ķ�
��һ����(February2005
article365).
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:[The article body]
�¶���
��
��һƪ����
�������Ѿ��������˴ֵ�Ӳ�����¶ȼƵ���Ҫ���ܲ��֣�Ҳ�����˵�Linux PC
�����ݴ��䡣����һƪ�����ǽ�����һ��Һ����ʾ����һ���dz���gtk GUI���档
��������������ס��������µ����������ҽ�����һ��I2C������ģ��ת��������ι����ġ�
Һ����ʾ��
����ʹ��һ��HD44780����LCD��ʾ������Ϊ����������ǰ��������ʹ�ù�����
��������Ը����Ƿ���ASCII�ַ���������Щ��ʾ���������������Ҳ������ʹ�á�
��������һϵ�е�����һ�����������
shop.tuxgraphics.org���ҵ�����LCD
���ڵ�����Ԫ������
����ǰ����������һ������ʹ����ͬ���������롣
ʵ��LCD�������ļ���lcd.c��lcd.h��lcd_hw.h��
���Ƿ���һ�����У�������ڱ��ĵ�����ҵ������ء�
��Щ����Ľӿڵ�ȷ�dz�����ʹ�ã�
// call this once:
// initialize LCD display, cursor off
lcd_init(LCD_DISP_ON);
// to write some text we first clear
// the display:
lcd_clrscr();
lcd_puts("Hello");
// go to the second line:
lcd_gotoxy(0,1);
lcd_puts("LCD");
the linuxfocus
September2002 article "Understanding HD44780 compatible LCD-displays"
�н�����HD44780��ʾ������ι����ġ�
���ǵ�������16x2��20x2��LCD�϶��ܹ�����
�������ǶԵ�·ͼ������һЩ���¡��ҷ�����һЩLCD�������ıȽ������и��ߵĵ��ݸ��غ��͵ĵ��衣
�������Ϊ�����и��õ�ESD����������LCD��ʾ�����ӵ�SCK��MOSI���ʱ��
��һ����ĸ������ڲ���·����п��ܻ��������롣
��һ�����������������LCD���������������˶���ĵ��衣
�����������������������������ˣ������DZʼDZ������û���Ȼ�������⡣
Ϊ�˳��ױ�����һ�����Ҹ����˵�·ͼ�����ڰ�LCD��ʾ����D7��RS�����ӵ���PD7��PD6�ϡ�
��ʹ���Ѿ����õ�·�壬����Щ�ı�Ҳ������ʲô����ġ�
��ֻҪ�ڰ��������һ����߲�����PB3��������С���жϾͿ����ˡ�
һ��С��GUI����
Ϊ�˷���ϲ������ϵͳ��GUI������û�������һ���dz���GUI��
��ֻ��������ǩ��ɣ�����������ʾi2ctemp_linux����������ߵ����
��i2ctemp_linux��ͨ��I2C���ߴӵ�·�϶�ȡ�¶ȵ������
�������Ǿ�����һ���dz�����¶ȼ��ˡ���������һЩ���ܣ�
-
������ڱ��ش�Һ����ʾ���϶�ȡ�¶�
-
��������������Ϸ�һ��GUI����
-
�����ʹ��һ��cronjob����ֵд��һ��log�ļ��н��г��ڵ�ͳ��
�����ҽ��ڱ���ʣ�µIJ��ֽ���һ�������ڲ���һЩ������
ģ��ת������ι�����
Atmega8֧������ģʽ��һ��ģʽ������Զ����ģ���źŲ����ڲ�������ʱ������һ���жϡ�
Ӧ�ó��������Ϳ������жϷ���ʱ���ٵؽ�����������Ĵ���������һ�������С�
��һ��ģʽ����Ϊ������ģʽ�����������һ��ת����������ģʽ�ٶȺܿ졣
�����Ĵ��������ڶ���ǰ�Ľ���ʱ�䣬����Ȼ���Ի��ÿ��100�ε�ת���ٶȡ�
���������˵�����㹻�ˡ��������Dz�������ģʽ��
�����ǵ�Atmega8�����ǿ���ʹ��ģ�������ADC0��ADC3��
����֮���AGND��ģ��أ����ӵ���ͨ�أ���AREF���ο���ѹ����AVCC������+5V����
��ģ��ת��������ģ���ź���AREF��Ƚϡ���AREF��ȵ�ģ���ź��൱������ֵ1023��
AREF�������κ��ⲿ0-5V֮��IJο���ѹ�������ʹ���ⲿ�ο���ѹ��
��Ҳ����ͨ��ʹ��һ���ڲ��ο���ѹ��2.56V����AVCC������ȷ��ת����
����ʹ����һ������������ͨ��ADMUX�Ĵ�����REFS0��REFS1�������ġ�
ģ��ת����һ�ο���ת��ADC0��ADC3���һ�������ߡ�
����ת��֮ǰ�����ͨ������ADMUX�Ĵ����ı�־λ��֪ͨоƬʹ����һ��ͨ����
������һ����ģ��ת��������������������ӣ�
volatile static int analog_result;
volatile static unsigned char analog_busy;
analog_busy=1; // busy mark the ADC function
channel=0; // measure ADC0
// use internal 2.56V ref
outp((1<<REFS1)|(1<<REFS0)|(channel & 0x07),ADMUX);
outp((1<<ADEN)|(1<<ADIE)|(1<<ADIF)|(1<<ADPS2),ADCSR);
sbi(ADCSR,ADSC); // start conversion
�����������ͽ�����ģ��ת��������һ�������ã����ͻ����SIGNAL(SIG_ADC)������
����һ���������ǿ��Խ����������һ��������������������һЩ��������ģ�⡰ԭ���ԡ�����
��Ϊһ������Ա��������ȼ������������ĵ�8λ���ݡ�
SIGNAL(SIG_ADC) {
unsigned char adlow,adhigh;
adlow=inp(ADCL); /* read low first, two lines. Do not combine
the two lines into one C statement */
adhigh=inp(ADCH);
analog_result=(adhigh<<8)|(adlow & 0xFF);
analog_busy=0;
}
����֮�����ǾͿ��Դ�analog_result�����л��һ��������Ϊ���õ�ģ��ת���Ľ����
����������ڳ���������κεط�ʹ�á��dz�����ʹ�á�
�������е��ж϶���Ҫ����sei();������Ϊ��ȫ�ֿɼ�����Ӧ�����������ij���ط�ʵ��
������û�г�����
�Ҽ���һ��һЩ����λ�ͱ�־λ��
-
ADEN�� ģ��ת��ʹ�ܣ�������ADSCǰ���ø�λ
-
ADIE�� ����ADC�жϣ�=��������SIGNAL(SIG_ADC)��
-
ADIF�� ADC�жϱ�־��ת��ǰ������1��
-
ADPS�� ADCʱ��Ԥ���ڱ��أ�
��������Ϊ����ʹ�õ�ʱ��Ƶ�ʱ�Ԥ�������ӳ�֮�õ�һ��50��200KHz֮���ֵ��
���г�������Ϊ2ADPS���������ã�ADPS2=1, ADPS1=0,
ADPS0=0��������100=ʮ����4����24=16�����Գ�������Ϊ16����1MHz��ʱ��Ƶ�ʺܺ��ʡ�
Atmega8�м��ֿ�ѡ�IJο���ѹ���ο���ѹ�������ǵ�ģ�������ѹ��Ƚϡ�
���൱�����ֵ�ѹֵ1023��
REFS0=0, REFS1=0 | ʹ���ⲿ��AREF���ڲ�Vref���ر� |
REFS0=0, REFS1=1 | ʹ��AVCC��AREF����Ͽ�ѡ���ⲿ���� |
REFS0=1, REFS1=1 | ʹ���ڲ�2.56V�ο���ѹ��AREF�Ͽ�ѡ���ⲿ���� |
AREF��һ����ѡ�ĵ����������������������ȶ�AREF��ѹ��
������ι����ģ�I2Cͨ�ţ�Atmega8����
���Ѿ��ڵ�һ����
(February2005 article365)
������I2CЭ������ι����ġ���������������һ���������֡�Atmega8�ж�I2Cͨ�ŵ�Ӳ��֧�֡�
������û�б�Ҫ������ȥʵ����һЭ�顣��ֻ��Ҫʵ��һ��״̬����
��һ״̬�����Ը���Atmega8��һ��Ҫ��ʲô���뿴����������ӣ�
��Atmega8�յ�һ���������Լ�����)��ַ��I2C��ʱ�����ͻ�ʹ��״̬��0x60
�������������¼�����ʹ��������״̬�룩������SIGNAL��SIG_2WIRE_SERIAL)������
-->
�������DZ���ͨ�����ü����Ĵ���������Atmega8��һ��Ҫ��ʲô��
���������Ǿ�Ҫ���������������ݰ�������֤ʵ�źš�
�����������ݱ������Ժ����Ǿͻᱻ��״̬��0x80���á�
-->
Ȼ�����ǾͿ��Զ�ȡ�����ֽڲ��Ҹ���Atmega8�����һ���ֽڵ����ݵ���ʱ��������֤ʵ�źš�
ͨ�Ž���ʱ���ǻ�õ�״̬��0xA0��ֹͣ��������Ȼ�����ǾͿ���֪ͨ���ǵ�Ӧ�ó���һ����������Ϣ�Ѿ��յ��ˡ�
I2C��ģʽȫ����״̬�������п��ܵ�״ֵ̬��Atmega8�ֲᣨ
�����ĺ���IJο�������183ҳ�����ݱ�������ϸ��������
��������Ҳ������ƣ���һ������ɡ�
������ι����ģ�I2Cͨ�ţ�Linux��
����˵һ��Ӳ������Ȼ����ʹ����I2C���ߣ������ǽ���ͨ������ʹ��һ�����豸�����豸��Linux PC��
��ĵ㵽������ӡ�������Ȼ���豸Ҫ�������ϵĵ�ѹ����ֻҪ�������ڵ��¶�·��
���ǾͿ��Խ�Լһ���������衣����������ֻ�����Ͻ���һ��4.7K�ĵ��衣
��ƽֵ������ڡ������ʹ��һ����ѹ�����ܽ�����ѹ���Ƶ�-0.7V��
��������ѹ���Ƶ����+5.1����
�ڶ�Atmega8���ڲ����˸�����˽�֮���ҵó�һ�����ۣ�
����ͨ��4.7K����ĵ����dz�С��Atmega8���뼶�ڲ��ı��������Ѿ��㹻�ˡ�
ʵ�������Dz����DZ���ʹ����ѹ�����ܡ�û����ѹ������Ҳ������ʲôӰ�졣
Linux I2C����������ʵ����һ����ȫ��I2CЭ��ջ��������Ϊ����Ҫһ��С�������й��ߣ�
����һ����Ӧ�ò��������κ�����Ŀ���ں�ģ�������������
����㿴һ��i2c_m.c�ļ��������ز��֣�����Ϳ��Կ���ÿһ��I2C��Ϣ����һ������һ�����صĹ���ġ�
Ϊ�˲�������λ�����DZ������RC232�ӿڵ�������š�
������ioctl������ʵ�ֵģ�
// set RTS pin:
int arg=TIOCM_RTS;
ioctl(fd, TIOCMBIS, &arg);
���߲���һ��0��
// clear RTS pin:
int arg=TIOCM_RTS;
ioctl(fd, TIOCMBIC, &arg);
������뽫��һЭ��ջ��ֲ��������ͬ��OS�ϣ���ֻ��Ķ���Щ�оͿ����ˡ�
�����Ķ�����ͨ��C���ԡ�
USB��RS232
���ڵ�����Щû��RS232�ӿڵıʼDZ��������û���˵������Լ�ʹ��USB-RS232ת������
������ʹ����һ��û�����ֵ�ת������������һ��Prolific 2303оƬ��
��ת������/proc/bus/usb/devices�ļ��п��������£�
Vendor=067b ProdID=2303 Rev= 2.02��
����Բ鿴��
"Use your ATEN
UC-232A USB adapter with Linux (Linuxfocus, November 2001, article 223)".
����
�������Ѿ�ʹ����һ�¶ȼ�2�����ˣ��ҷdz�ϲ��������Ϊ�����ֱ�Ӵ�Һ����ʾ���϶�ȡ�¶ȡ�
������Ҳ���Խ����е����ݴ洢�����PC�ϡ������ֱ�ӿ���Ҳ����ͳ�ƻ�ͼ���dz��ᡣ
����Ĵ�������������ʵ��ı����Ա�����ɹ���ܡ�����Խ�������һЩ������Ʒ�У�
���Ҳ��Ƽ������������������ö�ô����ˮ�����ܻ�����ȥ�ģ�����������档
NTC�dz�������ʪһ����ûʲô��ϵ�ģ�ֻҪ���ܸɾ��С�
ʹ��һ����װ�ģ��ڳ��£����ӣ�����ˮ�Ϳ����������ˡ�
����Ȼ���Դ�
shop.tuxgraphics.org
�����̵궨�����е�Ԫ������LCD��ʾ����ӡˢ��·�壬�������ȣ���
Have fun!
�����