Licht-Trigger

OP (Firma: Rentner) #7319415
Lesenswert?

Ich komme nicht drauf, wo da der Fehler liegt. Könnte mir jemand einen Rat geben? PB1-LED leuchtet nicht. Vielen Dank!

/*

  • LICHT, NACHTRIGGERBAR
  • Created: 14.1.2023 11:20:01
  • Author : Übung 8 */

#define F_CPU 8000000UL

#include <avr/io.h> #include <avr/interrupt.h>

uint8_t timer_overflow_counter = 0, leuchtdauer = 10, leuchtdauer_led_2 = 0, tasten_flag = 0;

void init_timer_0 (void) { TCCR0B = (1<<CS01) + (1<<CS00); // Prescaler = 64 bei 8 MHz TIMSK0 = (1<<TOIE0); // Timer overflow interrupt enable TCNT0 = 6 ; // Timer mit 6 vorladen }

int main(void) {
DDRB = 0xFF ; // PORTB = Ausgang DDRD = 0xF0 ; // PD0..PD3 auf Eingang
PORTD |= (1 << PD2) ; // PD2 = Pull up

1
init_timer_0();                    // Timer0 initialisieren
2
sei();                             // Interrupts einschalten
3

4
while (1) 
5
{
6
    if (PORTD &= ~(1 << PD2))     //  Wenn Taster gedrückt wurde
7
  {
8
  tasten_flag = 1 ;          // Flag für "Taster wurde gedrückt" 
9
  leuchtdauer_led_2 = leuchtdauer;  // leuchtdauer_led2 auf Anfangswert 10 
10
  }
11
}

}

ISR(TIMER0_OVF_vect)

{ if (timer_overflow_counter <= 399)
timer_overflow_counter ++ ;
else // nach dem 400. Durchlauf: { TCNT0 = 6; // reload timer0 PORTB ^= (1 << PB0) ; // LED1 toggeln timer_overflow_counter = 0; // Zähler zurücksetzen

1
if (tasten_flag == 1)            // Taster wurde gedrückt
2
{
3
  PORTB |= (1 << PB1) ;              //LED on
4
  leuchtdauer_led_2 -- ;          // Um 1 runter zählen
5
  
6
  if (leuchtdauer_led_2 == 0)
7
  
8
  
9
  {
10
    
11
    PORTB &= ~(1 << PB1);             // LED aus

;
tasten_flag = 0;

1
  }
2
  
3
}

}

}

Verwendet wird ein ATMega48

Angehängte Dateien:
Gast #7319501
Lesenswert?

HildeK schrieb:

Ich sehe z.B. noch uint8_t timer_overflow_counter = 0 und if (timer_overflow_counter <= 399) Das passt eh nicht zusammen, uint8 geht nur bis 255.

Super Compiler, der das zuläßt und nicht sofort hustet oder spuckt.

Dreckswerkzeug -> Drecksergebnis.

Gast #7319532
Lesenswert?

Gerhard H. schrieb:

Mit 74 C lernen ist leider nicht so leicht, aber ich versuche, mich durchzubeissen. ;-)

Respekt! Ich bin nur wenige Jahre jünger und kenne das: man vergisst manchmal schneller als man lernt ...

Vielen Dank nochmals für die Tipps!

Das ist der Grundgedanke eines Forums. Auch wenn es manche ab und zu vergessen. 😉

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren