Hallo, ich möchte gern ein kleines Programm für das Butterfly Board schreiben, welches im 8s Zyklus eine Spannung einliest und ein ASCII-Zeichen über eine serielle Verbindung sendet. Leider passiert nichts, wenn ich das HEX-File auf das Board aufspiele. Die Programmier Verbindung zum Board habe ich erfolgreich getestet. Ich bin über jeden Tipp dankbar. mfg Ingo #include<avr/io.h> #include<avr/interrupt.h> #define Clockspeed 32000 #define Baudrate 9600 #define Baud_register (((Clockspeed / (Baurate * 16))) - 1); //Globale Variablen uint8_t temp; //Funktionen int init_timer0(); int init_adc(); int init_uart_tx(); int main(void) { //Interrupts aktivieren sei(); //PortD als Ausgang DDRD = 0xFF; //PORTB als Ausgang DDRB = 0xFF; //Timer0 intialisieren init_timer0(); //Analogwandler intialisieren init_adc(); //Serielle-Schnittstelle intialisieren init_uart_tx(); //Globale Variable intialisieren temp = 0; for(;;) { } return 0; } int init_timer0() { //aktivieren Timer0 Interrupt TIMSK0 |= (1 << TOIE0); //Clockspeed / 1024 TCCR0A |= ((1 << CS02) | (1 << CS00)); //Alle Timer0 Flags löschen TIFR0 &= 0; //Zählerstand zurücksetzen TCNT0 = 0; return 0; } int init_adc() { //Externe Referenzspannung ADMUX &= ~((1 << REFS1) | (1 << REFS0)); //Aktivieren des ADCs, 1kHz Abtastfrequenz ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS0); //Starten der AD-Wandlung ADCSRA |= (1 << ADSC); return 0; } int init_uart_tx() { //UART senden UCSRB |= (1 << TXEN); //keine Parität, ein Stopp-Bit, UCSRC |= (1 << UCSZ1) | (1 << UCSZ0); return 0; } ISR(TIMER0_OVF_vect) { //Timer0 Overflow-Flag löschen TIFR0 |= 0x01; //Zählerstand von Timer0 zurücksetzen TCNT0 = 0; //Toggle LED an PortB PORTB ^= (1 << 0); //"Single Conversion" ADCSRA |= (1 << ADSC); //Auf das Ende der Wandlung warten while (ADCSRA & (1 << ADSC)) { } //Ausgabe des Highregisters am PORTD PORTD = ~ADCH; //ASIIC Zeichen A senden UDR = 'A'; //Auf das Ende der UART Übertragung warten while (!(UCSRA & (1 << UDRE))) { } }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.