main.c :
Code:#define CPU_Frequency 4000000 // 4Mhz-Quarz #define UART_BAUD_RATE 9600 // 9600 Baud #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> #include <stdlib.h> #include "funktionen.c" #include "bitdef.h" typedef unsigned char BYTE; typedef unsigned short WORD; //************************************************************************************************************************ void warten(int t) //ermöglicht Pausen { int h; for (;t>0;t--) { for (h=70;h>0;h--) {} } return; } void uart_init() { outp( (CPU_Frequency / (UART_BAUD_RATE*16L))-1 , UBRRL ); outp( 0, UBRRH ); outp( (1 << URSEL) | (3 << UCSZ0), UCSRC); outp( (1 << RXCIE) | (1 << TXEN) | (1 << RXEN), UCSRB); sei(); } void uart_nachricht(char* senden) { for (; *senden != '\0'; senden++) { loop_until_bit_is_set(UCSRA, UDRE); UDR=*senden; } loop_until_bit_is_set(UCSRA, UDRE); UDR = 13; } SIGNAL (SIG_UART_RECV) { char ch; ch = inp (UDR); // Datenregister auslesen /* if (inp (USR) & (1 << OR)) { // OverRun Bit gesetzt ? // Es ist was verloren gegangen / zu lange aufs Auslesen gewartet... uart_nachricht("UART: Overrun-Bit gesetzt! Nicht schnell genug ausgelesen!"); } */ char buffer[1]; buffer[0] = '\0'; buffer[1] = '\0'; buffer[0] = ch; uart_nachricht("Daten empfangen! Char: "); uart_nachricht(buffer); } int main() { DDRA = B00000111; // PortA Pin 0,1,2 als Ausgang, Rest als Eingang DDRC = 0xff; // PortC als Ausgang int x = 0; // ADC-Wert ADCSRA = _BV(ADEN) | _BV(ADPS2); //Aktivierung des ADC, festlegen eines Prescalers von 16 --> 4Mhz/32=125kHz //Starten einer einzelnen Konvertierung //Start einer Wandlung uart_init(); uart_nachricht("Initalisierung..."); uart_nachricht("Übertragungsrate: 9600 Baud"); for (;;) { // bei 30 läuft der Motor stabil! PORTA = B00000001; // Rote-LED an // motor... PORTC = B00001010; warten(3000); PORTC = B00001001; warten(3000); PORTC = B00000101; warten(3000); PORTC = B00000110; warten(3000); } }







Zitieren

Lesezeichen