Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 3686400
- #include <avr/io.h>
- #include <util/delay.h>
- #define BAUD 9600
- #define MYUBRR F_CPU/16/BAUD-1
- void USART_Init( unsigned int ubrr) {
- // Baudrate einstellen
- UBRRH = (unsigned char) (ubrr>>8);
- UBRRL = (unsigned char) ubrr;
- // Receiver und Transmitter einstellen
- UCSRB = (1<<RXEN) | (1<<TXEN);
- // Frame-Format festlegen 8data, 2stop bit
- UCSRC = (1<<USBS)|(3<<UCSZ0);
- }
- unsigned char USART_Receive( void ) {
- // Auf empfangene Daten warten
- while ( !(UCSRA & (1<<RXC)) );
- return UDR;
- }
- void USART_Transmit( unsigned char data ) {
- /* Wait for empty transmit buffer */
- while ( !( UCSRA & (1<<UDRE)) );
- /* Put data into buffer, sends the data */
- UDR = data;
- }
- char OneWire_Reset( void ) {
- char value;
- DDRB |= (1<<PB0);
- PORTB &= ~(1<<PB0);
- _delay_us(496);
- PORTB |= (1<<PB0);
- _delay_us(65);
- DDRB &= ~(1<<PB0);
- if(!(PINB & (1<<PINB0)))
- value = '1';
- else
- value = '0';
- _delay_us(424);
- return value;
- }
- int main (void) {
- DDRB = 0xFF;
- PORTB = 0xFF;
- USART_Init(MYUBRR);
- while(1) {
- USART_Transmit(OneWire_Reset());
- _delay_ms(2000);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment