Разработка телекоммуникационной системы для поддержки научно-исследовательской деятельности ИО РАН
Разработка подсистемы сбора гидрофизических параметров, которая может применяться для автономного океанологического зондирующего комплекса мониторинга, прогнозирования экологической обстановки морской экосистемы антропогенного воздействия на океан.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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