Blinkende LED

Gast #1510843
Lesenswert?

Habe gerade mein erstes Programm auf einem ATtiny25 zum laufen 
gebracht:
1
#include <avr/io.h>
2

3
int main(void)
4
{
5
  unsigned long int n = 0;
6
  DDRB |= 0x04;
7
  PORTB |= 0x04;
8
  while(1)
9
  {
10
    n++;
11
    if(n & 0x40000) PORTB |= (1<<2);
12
    else PORTB &= ~(1<<2);
13
  }
14
}
Das kann aber so nicht der Weisheit letzter Schluss sein, das müsste 
doch mit Timerinterrupt auch gehen!

Nur habe ich absolut keine Ahnung wie ich das in C programmieren 
könnte.
Kann mir das mal jemand zeigen?
Ich weiss, solche blöden Anfängerfragen nerven den einen oder anderen.
Bitte nicht hauen  :-)
Gast #1510926
Lesenswert?

> Sorry, so schlau bin ich noch nicht,
Dann lese den Link und werde es. ;-)
> hat mal jemand einen Code-Schnipsel, wie ich den Timer auf 1 Sekunde
> setzen kann und dann Interrupt-routine.
Man hat dir den Weg gezeigt, gehe ihn nun bitte. Alles andere wäre 
sinnlos.
Gast #1512053
Lesenswert?

Weil in dem Link alles bereits drinsteht. Ob du das da im Link liest 
oder hier, bleibt sich vom Informationsgehalt her gleich.

Lesen musste schon selber. Vorbeikommen und dir das Ding programmieren 
wird niemand.
Gast #1519303
Lesenswert?

Habe dieses jetzt zusammengestoppelt:
1
  TCCR1 = 0b00001110;  // Prescaler = CK / 8192
2
  TIMSK |= (1 << TOIE1);  // Timer1 Overflow Interrupt Enable
3
  sei();      // Enable Interrrupt
4

5

6

7

8

9

10

11
ISR(TIMER1_OVF_vect)
12
{
13
  PORTB ^= (1 << PORTB4); // Led an PB4 toggeln
14
}
Seltsam, es funktioniert, ich sollte mich freuen...
Aber ist es so auch OK?
Oder hab ich was vergessen?
Gast #1519338
Lesenswert?

Vlad Tepesch schrieb:
> das klappt nur bei den neueren AVRs

Ist ATtiny25 ein neuerer AVR?
Anscheinend, den
1
PINB = (1 << PIN4); // Led an PB4 toggeln
läßt die LED an PB4 blinken.
Das Datenblatt der ATtiny25 sagt:
Writing a logic one to PINxn toggles the value of PORTxn, independent on 
the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a 
port.
1
staun(Bauklötze);

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