Port D ====== D0--RXD UART D1--TXD UART D2<--INT0 вход nIRQ, low D3<--вход кнопки 1 D4-->выход Low (на VT) D5<--вход кнопки 2 D6-->выход, приём/передача RF ------------------------------------------ Port B ====== B0-->nRES,low сброс RF12B B1<-->(DCLK/CFIL) B2-->выход(FSK) B3<--вход(nINT) ------- B4->nSEL B5<-SDO B6->DO(MO) B7->SCK /////////////////////////////////////////////////////////////////////////////// //работа на прерывании или стр.55 interrupt [USI_OVERFLOW] // Universal Serial Interface initialization // Mode: Three Wire (SPI) // Clock source: Register & Counter=USICLK // USI Counter Overflow Interrupt: Off USICR=0x12; ================================================== Прием информации от GPS-модуля. Прием информации происходит по прерыванию от модуля USART. Принятые байты заносятся в буфер до приема кода 0x0A. После этого проверяется заголовок, обязательные символы массива и допустимость принятых данных. При соответствии, принятые данные переписываются в текущие. Но, объём SRAM ВСЕГО 128байт, а пакет может достигать 255байт. Поэтому, пока без прерываний и буфера. // USART initialization, прерывания по RX, TX // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 57600 UCSRA=0x00; UCSRB=0xD8; UCSRC=0x06; UBRRH=0x00; UBRRL=0x0F; // 15 для 57600 и 14,745600 MHz ============ Без прерываний: UCSRA=0x00; UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x0F; ================================================ из Торнадо UCSRA=0x02;//удвоение скорости обена UCSRB=0x18;//разрешение приёма, передачи UCSRC=0x86;//8data, 1stop, Asynchronous, выбор регистра UCSRC UBRRH=0x00; UBRRL=0x19;//Baud Rate: 38400 (Double Speed Mode) ============================================= // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-10: Off // Interrupt on any change on pins PCINT11-17: Off MCUCR=0x00; GIMSK=0x00; с прерываниями: MCUCR=0x00; GIMSK=0x40; //вкл прерывания!!! GIFR=0x40; //вкл прерывания!!! //================= GPS ===================================================// Сообщения начинаются символом «$» и заканчиваются символом «*», за которым последовательно идут две шестнадцатеричные цифры контрольной суммы «hh», символы возврата каретки и перевода строки . В качестве разделителя полей данных используется символ «,» 1.3 Контрольная сумма равна восьмибитному «исключающему ИЛИ» всех символов между символами «$» и «*» (не включая их). Передается в виде двух шестнадцатеричных цифр (символов) старшей тетрадой вперед. //========== МУСОР ======================================================// //#define WAIT_NIRQ_LOW() while(PIND&(1<>8); UBRRL = (unsigned char) baudrate; UCSRA = ( 1<>8;//8bit отправляем сарший байт в сдвиговый регистр USISR |= (1<