Interupt ATtiny 25-20 PU

Gast #2913656
Lesenswert?

Hallo,

ich versuche einen Interupt zu Starten.
Kann mir jemand dabei helfen?

#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/iotn25.h>

  int8_t Takt;

int Schreibe (int8_t Takt, int8_t Fehler1, int8_t Fehler2)
{
      PORTB = (Takt << PB0) | (Fehler1 << PB3) | (Fehler2 << PB4);
}


ISR(TIMER0_OVF_vect)
  {
    if (Takt==1)
    {
      Takt=0;
    }
    else
    {
      Takt=1;
    }
  }

int main(void)
{
    sei();
  wdt_enable (WDTO_2S);

  int8_t Fehler1;
  int8_t Fehler2;
  int8_t Schalter1;
  int8_t Schalter2;
  int8_t Ausgang1;
  int8_t Ausgang2;

  DDRB= (1 << DDB0) | (0 << DDB1) | (0 << DDB2) | (1 << DDB3) | (1 << 
DDB4) | (1 << DDB5);

Fehler1=0;
Fehler2=0;

    while(1)
    {



wdt_reset();
Ausgang1=1;
Ausgang2=1;
Schalter1=PINB1;
Schalter2=PINB2;
    Schreibe(Takt,Ausgang1,Ausgang2);
return 0;
}

ich möchte dabei den Takt für die Lichtschranken vorgeben etwa 10 
Hz(externe beschaltung).
Gast #2913723
Lesenswert?

Zu Return 0;
Ich habe ein paar Zeilen auskomentiert.
Return 0 mach dabei keine Probleme .

Ich bin ein Anfänger.
Wie kann ich den Timer und overflow aktivieren?
Bzw. Was muss in das Programm eingefügt werden um
Interrupt auszulösen.

Gruß Eduard
Gast #2913774
Lesenswert?

Für TIMSK habe ich folgende Infos.
Adresse  0x39
Name TIMSK
Bit 7 -
Bit 6 OCIE1A
Bit 5 OCIE1B
Bit 4 OCIE0A
Bit 3 OCIE0B
Bit 2 TOIE1
Bit 1 TOIE0
Bit 0 -

Was kann ich mit diesen Infos anfangen?

PS. bei dem Programm fehlen nur ein paar Klammern am ende.
Gast #2913869
Lesenswert?

Sorry,

Ich programmiere in der Regel CodeSys, Step 7, und VBA.
C++ habe ich Grundkentnisse.
Das ist meine 1 Berührung mit Mikrocontroller.
Deswegen stelle ich Fragen die für andere selbstverständlich sind.

Bei mir geht es nur darum mit einem Takt PB0 zwei Gabellichtschranken
Anzusteuern und falls auf PIN1 bzw. PIN2 keine Rückmeldung kommt
Wird PB3 bzw. PB4 auf 1 geschaltet. Etwa so.
If (Takt==1 and Schalter1==0)
{
Fehler1=1;
}
Else
{
Fehler1=0;
}
#2913884
Lesenswert?

Eduard schrieb:
> Sorry,
>
> Ich programmiere in der Regel CodeSys, Step 7, und VBA.
> C++ habe ich Grundkentnisse.
> Das ist meine 1 Berührung mit Mikrocontroller.
> Deswegen stelle ich Fragen die für andere selbstverständlich sind.
Und das hindert dich jetzt daran ein Datenblatt zu lesen bzw. Tutorials 
durchzulesen?
Was erwartest du von uns? Das wir dir jetzt den Code schreiben? Du hast 
es doch fast. Fehlt nur noch ein bisschen Eigeninitiative.

Kleiner tipp, du kannst auch in deiner "ISR(TIMER0_OVF_vect)" direkt den 
Takt auf einen Port geben (toggle)
1
ISR(TIMER0_OVF_vect){
2
  PORTB ^= (1<<PB0);
3
}
Musst vorher aber noch den Timer initialisieren. Aber das steht ja in 
den Tutorials und Datenblatt genau beschrieben

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