void changeChargeMode(volatile uint8_t *array8){ if(array8[numDischargeCharge]!=0){ //Если кол-во итераций разрядки - зарядки не достигло 0 if(array8[charge]) { //Если режим зарядки safeTimeCharge[indDisCharge][indChargeTime]=chargeTime; chargeTime=0; array8[numDischargeCharge]--; USART_SendChar('N'); sendDigitalUsart(indDisCharge+1); USART_SendChar('C'); sendDigitalUsart(safeTimeCharge[indDisCharge][indChargeTime]); USART_SendChar('D'); sendDigitalUsart(safeTimeCharge[indDisCharge][indDischargeTime]); indDisCharge++; if(array8[numDischargeCharge]==0){ setPwm(0); } } else { safeTimeCharge[indDisCharge][indDischargeTime]=dischargeTime; dischargeTime=0; } array8[charge]^=1; initCharge(array8); } }
void sprintf_u0(char *string) { unsigned char i=0; while(string[i]) { USART_SendChar(string[i++]); } USART_SendChar(0x0D); USART_SendChar(0x0A); }
int main( void ) { unsigned char key; //инициализация USART`a UBRRH = 0; UBRRL = 51; //скорость обмена 9600 бод при Fcpu = 8MГц UCSRB = (1<<TXEN); // разр передачи. UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //размер слова 8 разрядов //инициализация таймера Т0 TIMSK = (1<<TOIE0); //разрешение прерывания по переполнению TCCR0 = (1<<CS02)|(0<<CS01)|(0<<CS00); //предделитель 256 TCNT0 = 0x83; //прерывания каждые 4 мс //инициализация портов и переменных InitKeyboard(); __enable_interrupt(); while(1){ //если зафиксировано нажатие, //отправить код кнопки в терминал key = GetKey(); if (key) USART_SendChar(key); } return 0; }
void sendDigitalUsart(unsigned int sym){ if(sym==0){ USART_SendChar('0'); return; } unsigned char i=0; unsigned char arrayDigital[5]; while(sym!=0){ arrayDigital[i++]=sym%10; sym/=10; } while(i!=0) { USART_SendChar(arrayDigital[--i]+'0'); } }
void SentUart( char *data, char len) { char i; for (i=0; i<len; i++) { USART_SendChar(data[i]); } }
/* usart send string */ void USART_SendString(USART_TypeDef * const pUsart, const char * pInput) { while (*pInput != '\0') { USART_SendChar(pUsart, *pInput); pInput ++; } }
void USART_SendString(USART_TypeDef* USARTx, char* string) { while (*string != '\0') { USART_SendChar(USARTx, *string); string++; } }
int main(void) { TSDS18x20 DS18x20; TSDS18x20 *pDS18x20 = &DS18x20; char buffer[10]; // AVR serial port init USART_init(103); // Init DS18B20 sensor if (DS18x20_Init(pDS18x20,&PORTD,PD5)) { USART_SendString("Error!!! Can not find 1-Wire device attached on the bus!"); return -1; } else USART_SendString("1-Wire device detected on the bus."); USART_SendChar(0x0D); // Set DS18B20 resolution to 9 bits. DS18x20_SetResolution(pDS18x20,CONF_RES_9b); DS18x20_WriteScratchpad(pDS18x20); // Initiate a temperature conversion and get the temperature reading if (DS18x20_MeasureTemperature(pDS18x20)) { // Send the temperature over serial port USART_SendString("Current Temperature is: "); dtostrf(DS18x20_TemperatureValue(pDS18x20),9,4,buffer); USART_SendString(buffer); USART_SendChar('C'); USART_SendChar(0x0D); } else USART_SendString("CRC error!!!"); while(1); return 0; }
void UART_Test() { unsigned short ch = 0x66; USART_Config(); while(1) { USART_SendChar(ch); ch = USART_ReadChar(); OSTimeDlyHMSM(0, 0, 0, 10); } }
int main() { RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency / 100); InitializeLEDs(); MyUSART_Init(); setvbuf(stdout, 0, _IONBF, 0); printf("Hello!\r\n"); char c; while(1) { if(USART_ReceiveChar(&c)) USART_SendChar(c); SetLEDs(c); } }