Forum: Mikrocontroller und Digitale Elektronik Timer und delay AVR Tiny13A


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, kann es sein dass die delay Funktion beim Atiny13 mit dem Timer 
verknüpft ist?

Denn bei meinem Programm wird soll eine LED blinken dies tut sie aber 
nur bei nicht initialisiertem Timer. Wenn ich ihn initialisiere dann 
Leuchtet sie konstant.

Hier mein quellcode:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
5
#define F_CPU 1225000UL
6
7
volatile uint8_t aus;
8
volatile uint8_t z;
9
10
void main (void)
11
{
12
DDRB |= (1 << DDB0) | (1 << DDB3);
13
DDRB &= ~(1 << DDB1);
14
15
PORTB |= (1 << PB3) | (1 << PB1);
16
  
17
TCCR0B |= (1 << CS00);
18
TIMSK0 |= (1 << TOIE0);
19
20
GIMSK = (1 << INT0);
21
MCUCR |= (1 << ISC01);
22
sei();
23
24
aus = 0;
25
z = 5;
26
27
  while(1)
28
  {
29
    if (aus == 1)
30
    {
31
      ausgabe (z);
32
      aus = 0;
33
    }
34
  }
35
  
36
}
37
38
/*
39
ISR(TIM0_OVF_vect)
40
{
41
  if (z < 6)
42
  {
43
    z++;
44
  }
45
  else 
46
  {
47
    z = 1;
48
  }
49
}
50
*/
51
ISR(INT0_vect)
52
{
53
  if (aus == 0)
54
  {
55
    aus  = 1;
56
  }
57
  else
58
  {
59
    aus  = 0;
60
  }
61
}
62
63
64
void ausgabe(uint8_t zahl)
65
{
66
  for(; zahl > 0;zahl--)
67
  {
68
    PORTB |= (1<<PB0);
69
    _delay_ms(500);
70
    PORTB &= ~(1<<PB0);
71
    _delay_ms(500);
72
  }
73
}

von greg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Hallo, kann es sein dass die delay Funktion beim Atiny13 mit dem
> Timer
> verknüpft ist?
>

Nö.

> Denn bei meinem Programm wird soll eine LED blinken dies tut sie aber
> nur bei nicht initialisiertem Timer. Wenn ich ihn initialisiere dann
> Leuchtet sie konstant.

Wenn der IRQ nicht aufgerufen wird, wird "aus" niemals 1 und dann wird 
"ausgabe" nie aufgerufen. Hat nichts mit dem Delay zu tun.

von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das ist es ja der IRQ wird aufgerufen und aus "aus = 0" wurde "aus = 1"
und die funktion ausgeben wurde ebenfalls aufgerufen da die LED leuchtet 
doch ausgehen tut sie nicht mehr und da nur "_delay_ms" dazwischen ist 
liegt es doch nah dass das programm dort hängen geblieben ist.

von MWS (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Wenn ich ihn initialisiere dann Leuchtet sie konstant.

Ein erlaubter Timerinterrupt mit auskommentierter oder unpassender ISR 
führt bei Überlauf des Timers auf den bad interrupt und dann auf den 
Resetvektor. Da die Led nach Reset bis zum nächsten Reset  eine zeitlang 
eingeschaltet ist, erscheint sie leuchtend, blinkt aber eigentlich 
schnell mit der Frequenz in der die Resets ausgeführt werden.

von Peter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oooooohmaaan! wollte alles schrittweise machen und dann liegt es daran! 
:D
Das hatte ich nicht gewust, vielen Dank!

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>DDRB |= (1 << DDB0) ....

Der PIN von INT0 soll ein Ausgang sein?

MfG Spess

von MWS (Gast)


Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Hi
>
>>DDRB |= (1 << DDB0) ....
>
> Der PIN von INT0 soll ein Ausgang sein?
>
> MfG Spess

Int0 liegt an PB1.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.