Forum: Mikrocontroller und Digitale Elektronik Atmega8 delay


von Luis (Gast)


Lesenswert?

hey,

Atmega8
C-code

Wie schalt man eine LED ein und aus ohne den _delay() zubenutzen, mit 
einer 1Sekunde Takt.
1
PORTB = 0b11111111;  //LED einschalten
2
3
_delay_ms(500);
4
5
PORTB = 0b00000000;     //LED ausschalten
6
7
_delay_ms(500);

von Karl H. (kbuchegg)


Lesenswert?

Luis schrieb:
> hey,
>
> Atmega8
> C-code
>
> Wie schalt man eine LED ein und aus ohne den _delay() zubenutzen, mit
> einer 1Sekunde Takt.

Durch den Einsatz eines Timers

FAQ: Timer

von Christian K. (the_kirsch)


Lesenswert?

Wenn du in deinem Hauptprogramm nicht warten willst, musst du einen 
Timer verwenden.

Am besten einen Timer im CTC Modus laufen lassen, dann hast du eine 
feste Zeitbasis.

von Mike (Gast)


Lesenswert?

Luis schrieb:
> Wie schalt man eine LED ein und aus ohne den _delay() zubenutzen, mit
> einer 1Sekunde Takt.
>
> PORTB = 0b11111111;  //LED einschalten
> _delay_ms(500);
> PORTB = 0b00000000;     //LED ausschalten
> _delay_ms(500);

So nicht, das wäre mit delay().

von LostInMusic (Gast)


Lesenswert?

Mutmaßliche Minimallösung:
1
      ldi  r16, 0xFF
2
      out  DDRB, r16
3
      clr  r16
4
Loop: out  PORTB, r16        
5
      com  r16
6
      rjmp Loop

Wenn Du Deinen µC mit 8 Hz taktest, ergibt das einen 1-Sekunde-Blinker.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.