Blinkende LED

Gast #1510843
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 #1510902
Sorry, so schlau bin ich noch nicht,
hat mal jemand einen Code-Schnipsel, wie ich den Timer auf 1 Sekunde 
setzen kann und dann Interrupt-routine.
Gast #1510926
> 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
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.