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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.