Разработка телекоммуникационной системы для поддержки научно-исследовательской деятельности ИО РАН

Разработка подсистемы сбора гидрофизических параметров, которая может применяться для автономного океанологического зондирующего комплекса мониторинга, прогнозирования экологической обстановки морской экосистемы антропогенного воздействия на океан.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 16.08.2009
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Энергетической характеристикой является плотность потока мощности [Вт/м2]. Биологический эффект воздействия определяется внесистемной единицей эр: 1 эр - это поток (280 - 315 нм), который соответствует потоку мощностью 1 Вт.

Воздействие ультрафиолетового излучения сказывается при длительной работе за компьютером. Максимальная доза облучения: 7.5 мэр*ч/ за рабочую смену; 60 мэр*ч/ в сутки.

Для защиты от ультрафиолетового излучения применяют: защитные фильтры или специальные очки (толщина стекол 2 мм, насыщенных свинцом); одежду из фланели и поплина; делают побелку стен и потолка (ослабляет на 45-50%).

Производственное освещение тоже заслуживает внимания. Рациональное освещение помещений - один из наиболее важных факторов, от которых зависит эффективность трудовой деятельности человека.

Назначение его состоит в том, чтобы: 1) снижать утомляемость, 2) увеличивать условия зрительной работы, 3) способствовать повышению производительности труда и качества продукции, 4) оказывать благоприятное воздействие на психику, 5) уменьшать уровень травматизма и увеличивать безопасность труда.

К освещению предъявляются следующие требования:

В рабочей зоне освещение должно быть в такой мере, чтобы рабочий имел возможность хорошо видеть процесс работы не напрягая зрение и не наклоняясь (менее чем на 0,5 метра до глаз) к объекту.

Освещение не должно создавать резких теней, бликов и оказывать слепящее действие. Глаза должны быть защищены от прямых источников света.

Спектральный состав света должен быть приближен к естественному свету.

Уровень освещенности должен быть достаточен и соответствовать условиям зрительной работы.

Уровень освещенности должен обеспечивать равномерность и устойчивость уровня освещенности.

Освещение не должно создавать блескости как самих источников света, так и предметов, находящихся в рабочей зоне.

Требования к освещению в вычислительных центрах:

Местное освещение не рекомендуется. Используется общее освещение. Максимальная освещенность 400 лк, блескость менее 15 ед., пульсация менее 10%.

Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Допускается установка светильников местного освещения для подсветки документов. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещенность экрана более 300 лк. [9]

Следует ограничивать прямую блесткость от источников освещения, при этом яркость светящихся поверхностей (окна, светильники и др.), находящихся в поле зрения, не должна быть более 200 кд/ кв. м.

Следует ограничивать неравномерность распределения яркости в поле зрения монитором и ПЭВМ, при этом соотношение яркости между рабочими поверхностями не должно превышать 3:1 - 5:1, а между рабочими поверхностями и поверхностями стен и оборудования 10:1.

Лампы рекомендуется использовать белого света, холодного белого света, наиболее близкие к естественному свету. Мощность ламп 36-40 Вт, температура 3000-4200 градусов Кельвина, тогда они не дают высокого ультрафиолетового излучения.

Основной поток естественного света должен быть слева. Солнечные лучи и блики не должны попадать в поле зрения работающего с ПЭВМ.

Стоит подумать и о производственных шумах.

Шум - это совокупность звуков с различными частотами и фазами, беспорядочно изменяющимися во времени и вызывающими неприятные ощущения у человека.

Звуковая волна характеризуется звуковым давлением, интенсивностью звука, частотой и скоростью распространения. Воздействие осуществляется не только через слуховой аппарат, но и через костную систему.

Органы слуха человека воспринимают:

Звуковое давление 2*10-5 - 2*102 Па;

Интенсивность 10-12 - 102 Вт/м2;

Минимальное звуковое давление и интенсивность, которые воспринимаются человеком, называются порогом слышимости.

Воздействие шума на человека:

Шум повышает расход энергии при одинаковой физической нагрузке, ослабляет внимание, замедляет скорость химических реакций.

Угнетается центральная нервная система, изменяется частота дыхания и пульса, нарушается обмен веществ, возникают сердечно-сосудистые заболевания.

При выполнении основной работы на мониторах и ПЭВМ, уровень шума не должен превышать 65 дБА.

На рабочих местах в помещениях для размещения шумных агрегатов вычислительных машин (АЦПУ, принтеры и др.) уровень шума не должен превышать 75 дБА. Шумящее оборудование (АЦПУ, принтеры и др.), уровни шума которого превышают нормированные, должно находится вне помещения с монитором и ПЭВМ.

Снизить уровень шума в помещениях с мониторами и ПЭВМ можно использованием звукопоглощающих материалов с максимальными коэффициентами звукопоглощения в области частот 63 - 8000 Гц для отделки помещений (разрешенных органами и учреждениями Госсанэпиднадзора России), подтвержденных специальными акустическими расчетами.

Дополнительным звукопоглощением служат однотонные занавеси из плотной ткани, гармонирующие с окраской стен и подвешенные в складку на расстоянии 15 - 20 см от ограждения. Ширина занавеси должна быть в 2 раза больше ширины окна.

К рабочему месту с ЭВМ тоже нужно отнестись серьезно:

Рабочие места с компьютерами должны размещаться таким образом, чтобы расстояние от экрана одного видеомонитора до тыла другого была не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м.

Экран видеомонитора должен находиться на расстоянии 600 - 700 мм, но не ближе 500.

Высота рабочей поверхности стола должна регулироваться в пределах 680-800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.

Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.

Рабочий стул (кресло) должен быть подъемно-поворотным и регулируемым по высоте и углам наклона сиденья и спинки, а так же - расстоянию спинки от переднего края сиденья.

Рабочее место должно быть оборудовано подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 градусов; поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.

Рабочее место с персональным компьютером должно быть оснащено легко перемещаемым пюпитром для документов.

Площадь на одно рабочее место с ПЭВМ для взрослых пользователей должна составлять не менее 6,0 кв. м., а объем не менее 20,0 куб. м.

Для внутренней отделки интерьера помещений с мониторами и ПЭВМ должны использоваться диффузно - отражающиеся материалы с коэффициентом отражения для потолка - 0,7 - 0,8; для стен - 0,5 - 0,6; для пола - 0,3 - 0,5.

Поверхность пола в помещениях эксплуатации мониторов и ПЭВМ должна быть ровной, без выбоин, нескользкой, удобной.

Для очистки и для влажной уборки, обладать антистатическими свойствами.

Для повышения влажности воздуха в помещениях с компьютерами следует применять увлажнители воздуха, ежедневно заправляемые дистиллированной или прокипяченной питьевой водой. Перед началом и после каждого часа работы помещения должны быть проветрены.

Самочувствие и здоровье персонала ЭВМ при исполнении выбранных методов и способов защиты от опасных и вредных факторов будут обеспечены.

Используемая литература

1. Статья «Океанология»http://ru.wikipedia.org/wiki/Категория: Океанология

2. Океанология. Средства и методы океанологических исследований Смирнов Г.В., Еремеев В.Н., Агеев М.Д., Коротаев Г.К., Ястребов В.С., Мотыжев С.В…М.: Наука, 2005

3. Стационарный комплекс для долговременных измерений океанологических параметров в реальном масштабе времени. С.А. Свиридов, Н.А. Пальшин, В.А Соловьев, АВ. Зарецкий, А.А. Метальников, М.В. Осипенко, Ю.Б. Филипчук, Институт океанологии им. П.П. Ширшова РАН, Москва, 2007

4. Подводная обсерватория как средство экологического мониторинга водной толщи и морского дна Римский-Корсаков Н.А., Свиридов С.А., Соловьев В.А., Зарецкий А.В., Метальников А.А. Институт океанологии им. П.П. Ширшова РАН, Москва, 2007

5. Развернутый научный отчет за прошедшие 12 месяцев работы по проекту конкурсов «офи» - 2006, «офи» - 2007 и «офи_ц» - 2007. Свиридов С.А., Соловьев В.А., Зарецкий А.В., Метальников А.А. Институт океанологии им. П.П. Ширшова РАН, Москва, 2007

6. Сборник трудов X Международной конференции «Современные методы и средства океанологических измерений» Свиридов С.А., Пальшин Н.А., Соловьев В.А., Зарецкий А.В., Метальников А.А. Москва, 2007 г.

7. ГОСТ 12.1.005. - 88 Общие санитарно-гигиенические требования к воздуху рабочей зоны. - М.: изд. ГС РФ, 1988 г.

8. СНиП 41.01.2003. Отопление, вентиляция, и кондиционирование. - М.: изд. ГС РФ, 2004 г.

9. СНиП 23.05.95 Естественное и искусственное освещение - М.: изд. ГС РФ, 1996 г.

10. Правила устройства электроустановок 7-е изд. - М.:, изд. Энергосервис, 2002 г.

Приложение 1

Принципиальная схема устройства и перечень компонентов.

Приложение 2

Листинг

1) Работа с флеш

 // #########################################################################

 // Compiler: AVR-GCC 3.4.3

 // #########################################################################

#include <avr/io.h>

#include <avr/interrupt.h>

#include <avr/signal.h>

#include «dos.h»

#define sbi (portn, bitn) ((portn)|=(1<<(bitn)))

#define cbi (portn, bitn) ((portn)&=~(1<<(bitn)))

 // ######################################################

unsigned char MMCCommand (unsigned char command, unsigned long adress)

 // ######################################################

{

SPI_WRITE(0xFF); //Dummy write

SPI_WAIT();

SPI_WRITE(command);

SPI_WAIT();

SPI_WRITE((unsigned char) (adress>>24)); //MSB of adress

SPI_WAIT();

SPI_WRITE((unsigned char) (adress>>16));

SPI_WAIT();

SPI_WRITE((unsigned char) (adress>>8));

SPI_WAIT();

SPI_WRITE((unsigned char) adress); //LSB of adress

SPI_WAIT();

SPI_WRITE(0xFF); //dummy checksum

SPI_WAIT();

SPI_WRITE(0xFF); // 16 bit response

SPI_WAIT();

SPI_WRITE(0xFF);

SPI_WAIT();

return SPDR; // only last 8 bits used

}

 // ######################################################

unsigned char MMCReadSector (unsigned long sector, unsigned char *buf)

 // ######################################################

{

unsigned int i;

unsigned char *p, by;

unsigned long startadr;

if (sector>=maxsect) return 1; //sectornumber too big

p=buf; //using a pointer is much faster than indexing buf[i]

MMC_CS_OFF();

 //calculate startadress of the sector

startadr=sector * (unsigned long) BYTE_PER_SEC;

MMCCommand (MMC_READ_BLOCK, startadr);

do

{

SPI_WRITE(0xFF);

SPI_WAIT();

} while (SPDR!=0xFE); // wait for card response

 //the following code looks very strange!

 //the idea is not to stop the cpu while SPI module transfers data.

 //you have 16 cpu cycles until transmission has finished!

 //you can use this time to do something like storing your last data

 //or get your next data out of memory, doing some loop overhead….

 //don't wait for end of transmission until you have done something better;)

SPI_WRITE(0xFF); // shift in first byte

SPI_WAIT(); // we have to wait for the first byte, but ONLY for the first byte

by=SPDR; // get first byte, but store later!

SPI_WRITE(0xFF); // start shift in next byte

for (i=0; i< (BYTE_PER_SEC-1); i++) //execute the loop while transmission is running in background

{

 // do the for() loop overhead at this point while SPI module shifts in new data

*p++=by; // store last byte in buffer while SPI module shifts in new data

SPI_WAIT(); // wait for next byte

by=SPDR; // get next byte, but store later!

SPI_WRITE(0xFF); // start shift in next byte

}

 // last SPI_WRITE(0xFF); is shifting in crc part1 at this point

*p=by; // store last byte in buffer while SPI module shifts in crc part1

SPI_WAIT();

SPI_WRITE(0xFF); // shift in crc part2

SPI_WAIT();

MMC_CS_ON();

return 0;

}

 // ######################################################

unsigned char MMCWriteSector (unsigned long sector, unsigned char *buf)

 // ######################################################

{

unsigned int i;

unsigned char *p, by;

unsigned long startadr;

if (sector>=maxsect) return 1; //sectornumber too big

p=buf; //using a pointer is much faster than indexing buf[i]

MMC_CS_OFF();

 //calculate startadress

startadr=sector * (unsigned long) BYTE_PER_SEC;

MMCCommand (MMC_WRITE_BLOCK, startadr);

SPI_WRITE(0xFF); // do we need this TWO dummy writes?

SPI_WAIT();

SPI_WRITE(0xFF);

SPI_WAIT();

SPI_WRITE(0xFE); // start block token for next sector

for (i=0; i<BYTE_PER_SEC; i++) // execute the loop while transmission is running in background

{

 // do the for() loop overhead at this point while SPI module shifts out new data

by=*p++; // get next data from memory while SPI module shifts out new data

SPI_WAIT(); // wait for end of transmission

SPI_WRITE(by); // start shift out next byte

}

SPI_WAIT(); // wait til last byte is written to MMC

SPI_WRITE(0xFF); // 16 bit crc follows data

SPI_WAIT();

SPI_WRITE(0xFF);

SPI_WAIT();

SPI_WRITE(0xFF); // read response

SPI_WAIT();

by=SPDR & 0x1F;

if (by!= 0x05) // data block accepted?

{

MMC_CS_ON();

return 1;

}

do

{

SPI_WRITE(0xFF);

SPI_WAIT();

 // } while (SPDR!=0xFF); // wait til busy is gone

} while (SPDR == 0x00); // wait til busy is gone

MMC_CS_ON();

return 0;

}

 // ######################################################

unsigned char MMCIdentify(void)

 // ######################################################

{

unsigned char by;

unsigned int i;

unsigned int c_size, c_size_mult, read_bl_len;

unsigned long drive_size;

 // set directions of portpins used by MMC Card

sbi (DDRB, 1); //PB1 SCK output

cbi (PORTB, 1); //PB1 SCK set 0

cbi (DDRB, 3); //PB3 MISO input

cbi (PORTB, 3); //PB3 MISO set 0

sbi (DDRB, 2); //PB MOSI output

cbi (PORTB, 2); //PB MOSI set 0

sbi (MMC_CS_DDR, MMC_CS_PIN); //MMC_CS output

sbi (MMC_CS_PORT, MMC_CS_PIN); //MMC_CS set 1

 //Init SPI with a very slow transfer rate first!

 //SPCR SPI Controlregister

 // SPIE=0; //No SPI Interrupt

 // SPE=1; //SPI Enable

 // DORD=0; //Send MSB first

 // MSTR=1; //I am the master!

 // CPOL=0; //SCK low if IDLE

 // CPHA=0; //SPI Mode 0

 // SPR1=1; //SPI Clock = f/128 = 125kHz @16MHz Clock

 // SPR0=1; //or f/64 if SPI2X = 1 in SPSR register

SPCR=0x53;

 //SPSR SPI Statusregister

 // SPI2X=1; //Double speed for SPI = 250kHz @16MHz Clock

 // SPSR=0x01;

SPSR=0x00;

for (i=0; i<10; i++)

{

SPI_WRITE(0xFF); // give min 74 SPI clock pulses before

 // sending commands

SPI_WAIT();

}

MMC_CS_OFF();

 //send CMD0 for RESET

SPI_WRITE (MMC_RESET); //command code CMD0

SPI_WAIT();

SPI_WRITE(0x00);

SPI_WAIT();

SPI_WRITE(0x00);

SPI_WAIT();

SPI_WRITE(0x00);

SPI_WAIT();

SPI_WRITE(0x00);

SPI_WAIT();

SPI_WRITE(0x95); // CMD0 needs a checksum!

SPI_WAIT();

SPI_WRITE(0xFF); // get 16 bit response high

SPI_WAIT();

SPI_WRITE(0xFF); // get 16 bit response low

SPI_WAIT();

 //repeat CMD1 til result=0

do

{

by=MMCCommand (MMC_INIT, 0);

} while (by!=0);

 //read CID

 // MMCCommand (MMC_READ_CID, 0); // nothing really interesting here

 //read CSD Card Specific Data

MMCCommand (MMC_READ_CSD, 0);

 //This worked with extrememory MMC and takeMS SD

 // SPI_WRITE(0xFF); // ignore response 0xFE

 // SPI_WAIT();

 // This waiting loop is for SanDisk 256MB SD

 // Works with my other cards too

do

{

SPI_WRITE(0xFF);

SPI_WAIT();

} while (SPDR!=0xFE); // wait for card response

for (i=0; i<16; i++) //CSD has 128 bits -> 16 bytes

{

SPI_WRITE(0xFF);

SPI_WAIT();

by=SPDR;

 // ShowHex(by);

dirbuf[i]=by;

}

SPI_WRITE(0xFF); // 16 bit crc follows data

SPI_WAIT();

SPI_WRITE(0xFF);

SPI_WAIT();

//here comes the hard stuff!

 //calculate disk size and number of last sector

 //that can be used on your mmc/sd card

c_size=dirbuf[6] & 0x03; //bits 1..0

c_size<<=10;

c_size+=(unsigned int) dirbuf[7]<<2;

c_size+=dirbuf[8]>>6;

by= dirbuf[5] & 0x0F;

read_bl_len=1;

read_bl_len<<=by;

by=dirbuf[9] & 0x03;

by<<=1;

by+=dirbuf[10] >> 7;

c_size_mult=1;

c_size_mult<<=(2+by);

drive_size=(unsigned long) (c_size+1) * (unsigned long) c_size_mult * (unsigned long) read_bl_len;

maxsect= drive_size / BYTE_PER_SEC;

MMC_CS_ON();

 //switch to high speed SPI

 // SPR1=0; //SPI Clock = f/4 = 4MHz @16MHz Clock

 // SPR0=0; //or f/2 if SPI2X = 1 in SPSR register

SPCR=0x50;

 //SPSR SPI Statusregister

 // SPI2X=1; //Double speed for SPI = 8MHz @16MHz Clock

SPSR=0x01;

return 0;

}

2) Работа с микросхемой часов реального времени

 // #########################################################################

 // File: rtc.c

 //

 // Функции для работы с микросхемой реального времени

 // RTC - 8564 JE

#########################################################################

 // Compiler: AVR-GCC 4.1.1

 // ##################################################################

#include <avr/io.h>

#include «rtc.h»

 // инициализация RTC - 8564 JE

 // инициализируем шину TWI (I2C)

void Init_Timer() {

TWBR = 29;

TWCR = (1<<TWEN); //Enable TWI-interface

}

 // декодирование байта из формата BCD

unsigned char DECODER (char x) {

unsigned char y;

y=0;

if (x&0x80) y+=80;

if (x&0x40) y+=40;

if (x&0x20) y+=20;

if (x&0x10) y+=10;

if (x&0x08) y+=8;

if (x&0x04) y+=4;

if (x&0x02) y+=2;

if (x&0x01) y+=1;

return y;

}

 // кодирование байта в формата BCD

unsigned char CODER (char x) {

unsigned char y;

y=0;

if (x>79) {y|=0x80; x-=80;}

if (x>39) {y|=0x40; x-=40;}

if (x>19) {y|=0x20; x-=20;}

if (x>9) {y|=0x10; x-=10;}

if (x>7) {y|=0x08; x-=8;}

if (x>3) {y|=0x04; x-=4;}

if (x>1) {y|=0x02; x-=2;}

if (x>0) {y|=0x01; x-=1;}

return y;

}

 // чтение времени из RTC - 8564 JE

void Timer_Read() {

unsigned char d;

TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //START TWI

while (! (TWCR & (1<<TWINT)));

TWDR=SLA_W;

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR =0;

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR =0;

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR =0;

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //START TWI - repeated start

while (! (TWCR & (1<<TWINT)));

TWDR=SLA_R;

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);

while (! (TWCR & (1<<TWINT)));

d=TWDR&0x7f;

clock.sec=DECODER(d);

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);

while (! (TWCR & (1<<TWINT)));

d=TWDR&0x7f;

clock.min=DECODER(d);

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);

while (! (TWCR & (1<<TWINT)));

d=TWDR&0x3f;

clock.hour=DECODER(d);

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);

while (! (TWCR & (1<<TWINT)));

d=TWDR&0x3f;

clock.day=DECODER(d);

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);

while (! (TWCR & (1<<TWINT)));

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA); //weekdays here

while (! (TWCR & (1<<TWINT)));

d=TWDR&0x1f;

clock.month=DECODER(d);

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA);

while (! (TWCR & (1<<TWINT)));

d=TWDR;

clock.year=DECODER(d);

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

}

 // установка времени в RTC - 8564 JE

void Timer_Set()

{

TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //START TWI

while (! (TWCR & (1<<TWINT)));

TWDR=SLA_W;

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR =0; //adress

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR =0; //write fist byte

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR =0; //write second byte

TWCR = (1<<TWINT) | (1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=CODER (clock.sec);

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=CODER (clock.min);

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=CODER (clock.hour);

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=CODER (clock.day);

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=1; //weekdays ignore

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=CODER (clock.month);

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWDR=CODER (clock.year);

TWCR=(1<<TWINT)|(1<<TWEN);

while (! (TWCR & (1<<TWINT)));

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

}

3) работа с последовательными портами

 // Compiler: AVR-GCC 3.4.3

 // ##################################################################

#include <avr/io.h>

#include <avr/interrupt.h>

#include <avr/signal.h>

#include «serial0.h»

#define sbi (portn, bitn) ((portn)|=(1<<(bitn)))

#define cbi (portn, bitn) ((portn)&=~(1<<(bitn)))

 //////////////////////////////////////////////////////////////////////////

 //  // Interrupt handlers

 //  // Global functions

 //  //////////////////////////////////////////////////////////////////////////

 //  // Initialize the serial port

 // void SER0Init(void)

{

 // Set TxD as output

sbi (TX0_DDR, TX0_PIN);

sbi (TX0_PORT, TX0_PIN);

 // Enable RxD/TxD

UCSR0B=(1<<RXEN0) |(1<<TXEN0) | (1<<RXCIE0);

 // Set baudrate

UBRR0H=(unsigned char) (UART0_BAUD_SELECT>>8);

UBRR0L=(unsigned char) (UART0_BAUD_SELECT);

 // 8bit, 1 stop, no parity

UCSR0C=(1<<UCSZ01) | (1<<UCSZ00);

}

 // Send character

 // Waits until previous character is transmitted

void SER0Putc (unsigned char c)

{

 // Wait until previous character is transmitted

while (bit_is_clear (UCSR0A, UDRE0))

;

UDR0=c;

}

 // Send a string

void SER0Puts (unsigned char * s)

{

unsigned char c;

while((c=*s++))

{

if (c == '\n')

{

 // Translate \n in \r\n

SER0Putc(0x0D);

SER0Putc(0x0A);

}

else

SER0Putc(c);

}

}

 // Send a hexadecimal number

void SER0PutHex (unsigned char by)

{

unsigned char buff;

 // High nibble

buff = by >> 4;

if (buff < 10)

buff += '0';

else

buff += 0x37;

SER0Putc(buff);

 // Loz nibble

buff = by & 0x0f;

if (buff<10)

buff+='0';

else

buff+=0x37;

SER0Putc(buff);

}

 // Get received character from buffer

 // when no character is available the function

 // will wait

unsigned char SER0Getc(void)

{

unsigned char c;

 // Wait until at least 1 character is present

while (bit_is_clear (UCSR0A, RXC0))

;

c = UDR0;

return (c);

}

 // Check of there are characters present

 // rcnt is 0 when there are no characters

 //

unsigned char SER0CharsPresent(void)

{

return bit_is_set (UCSR0A, RXC0);

}


Подобные документы

  • Взаимодействие зондирующего излучения радиолокационных станций с морской поверхностью. Характеристики радиолокационных помех от взволнованной морской поверхности: состояние морской поверхности, скорость ветра, угол между главным лепестком диаграммы.

    реферат [391,5 K], добавлен 17.06.2019

  • Обзор существующих технологий мониторинга в телекоммуникациях. Общая характеристика кабельной системы ОАО "Хабровскэнерго", фрагмента телефонной сети и передачи данных. Выбор решения для мониторинга сети и разработка нужного программного обеспечения.

    дипломная работа [512,8 K], добавлен 25.09.2014

  • Разработка следящей системы для воспроизведения траектории, которая заранее не задана. Составление функциональной и структурной схемы системы автоматического регулирования. Расчет параметров элементов САР. Исследование системы в переходных режимах.

    курсовая работа [877,3 K], добавлен 04.11.2010

  • Разработка структурной схемы канала сбора аналоговых данных. Технические требования к функциональным узлам микропроцессорной системы. Расчет параметров согласующего усилителя, фильтра низких частот, функционального преобразователя и управляющего тракта.

    курсовая работа [334,9 K], добавлен 16.04.2014

  • Характеристика профессиональной деятельности ОАО "Ростелеком" - национальной телекоммуникационной компании. Схема организации сети в Астраханской области. Структура телекоммуникационной системы, ее установка и монтаж. Обслуживание системы управления.

    отчет по практике [232,5 K], добавлен 18.01.2015

  • Изучение взаимосвязи системотехнических параметров и характеристик при проектировании радиолокационной системы. Расчет и построение зависимости энергетической дальности обнаружения от мощности передатчика и числа импульсов в пачке зондирующего сигнала.

    контрольная работа [574,9 K], добавлен 18.03.2011

  • Методы технического расчета основных параметров коммутируемой сети с использованием ЭВМ. Разработка схем организации связи коммутационных станций, каналов, децентрализованных и централизованных систем сигнализации и синтез модулей цифровой коммутации.

    курсовая работа [4,5 M], добавлен 04.06.2010

  • Пути реализации технологии тотальной донной сейсморазведки подо льдом. Применение сетевых принципов в данном процессе. Рекомендации по выбору и оснащению автономного необитаемого подводного аппарата, обеспечивающего реализацию исследуемой технологии.

    магистерская работа [5,1 M], добавлен 02.04.2015

  • Применение гибких производственных систем, проблемы при их создании и внедрении. Обеспечение полностью автоматического и автономного цикла работы токарных станков. Разработка системы управления ГАП (РТК) для горячей штамповки. Выбор системы управления.

    курсовая работа [3,5 M], добавлен 16.12.2012

  • Разработка структурной схемы микроконтроллера. Проектирование подсистемы памяти. Разработка адресного дешифратора, "раскраска" адресной шины. Расчет нагрузочной способности шин. Разработка принципиальной схемы. Программа начальной инициализации системы.

    курсовая работа [1,3 M], добавлен 02.05.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.