Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Aufgabe 1
- -------------------------------------------------------------------------------------------------------------
- #include <asf.h>
- #include "interrupt.h"
- int main (void)
- {
- sei();
- //Konfiguration Pins
- DDRB |= (1<<PINB);
- //Konfiguration Timer
- TCCR0 |= (1<<CS02) | (1<<CS00); //prescale 1024
- TIMSK |= (1<<TOIE0); //interrupt an
- TCNT0 = 255; //1ms warten
- Count = 0;
- State = 0;
- while (1)
- {
- }
- }
- ISR (TIMER0_OVF_vect)
- {
- if (State == 0)
- {
- State = 1;
- PORTB |= (1<<PB0);
- }
- else
- {
- State = 0;
- PORTB &= ~(1<<PB0);
- }
- TCNT0 = 255; //1ms warten
- }
- Aufgabe 2
- -------------------------------------------------------------------------------------------------------------
- #include <asf.h>
- #include "interrupt.h"
- int main (void)
- {
- sei();
- //Konfiguration Ports
- DDRB = 0xFF; //alle als ausgang
- //Konfiguration ADC
- ADMUX |= (1<<REFS0) | (1<<ADLAR);
- ADCSRA |= (1<< ADEN) | (1<<ADIE);
- while (1)
- {
- ADCSRA |= (1<<ADSC); //ADC starten
- }
- }
- ISR (ADC_vect)
- {
- PORTB = ADCH; //ADC Ergebniss bei PORTB ausgeben
- }
- Aufgabe 3
- -------------------------------------------------------------------------------------------------------------
- #include <asf.h>
- #include "interrupt.h"
- volatile int Count;
- volatile int State;
- int main (void)
- {
- sei();
- //Konfiguration Ports
- DDRB |= (1<<PINB);
- //Konfiguration Timer
- TCCR0 |= (1<<CS02) | (1<<CS00); //prescale 1024
- TIMSK |= (1<<TOIE0); //interrupt an
- //Konfiguration ADC
- ADMUX |= (1<<REFS0) | (1<<ADLAR);
- ADCSRA |= (1<< ADEN);
- TCNT0 = 255; //0,25s warten
- Count = 0;
- State = 0;
- while (1)
- {
- }
- }
- ISR (TIMER0_OVF_vect)
- {
- //HIGH
- //Es wird High, dannach wird 1ms gewartet
- if (State == 0)
- {
- State = 1;
- PORTB |= (1<<PB0);
- TCNT0 = 255; //1ms warten
- }
- //LOW
- else
- {
- ADCSRA |= (1<<ADSC); //ADC starten
- while ( !( ADCSRA & (1<<ADIF)) );
- State = 0;
- PORTB &= ~(1<<PB0);
- TCNT0 = 255-ADCH; //1ms warten
- }
- }
- Aufgabe 3+
- -------------------------------------------------------------------------------------------------------------
- #include <asf.h>
- #include "interrupt.h"
- volatile int Count;
- volatile int State;
- int main (void)
- {
- sei();
- //Konfiguration Ports
- DDRB |= (1<<PINB);
- //Konfiguration Timer
- TCCR0 |= (1<<CS01); //prescale 8
- TIMSK |= (1<<TOIE0); //interrupt an
- //Konfiguration ADC
- ADMUX |= (1<<REFS0) | (1<<ADLAR);
- ADCSRA |= (1<< ADEN);
- TCNT0 = 255; //8µs warten
- Count = 0;
- State = 0;
- while (1)
- {
- }
- }
- ISR (TIMER0_OVF_vect)
- {
- //HIGH
- //Es wird High, dannach wird 1ms gewartet
- if (State == 0)
- {
- State = 1;
- PORTB |= (1<<PB0);
- TCNT0 = 255; //8µs warten
- }
- //LOW
- else
- {
- ADCSRA |= (1<<ADSC); //ADC starten
- while ( !( ADCSRA & (1<<ADIF)) );
- State = 0;
- PORTB &= ~(1<<PB0);
- TCNT0 = 255-ADCH; //8µs-2ms warten
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement