Zeiteinstellung am Attiny261A

Gast #5641595
Lesenswert?

Hallo
versuche meine ersten Schritte mit einem kleinen Board mit dem Attny261A 
zu machen. Dazu verwende ich dieses kleine Programm um 2 LEDs blinken zu 
lassen:
1
#define F_CPU 16000000UL  // Angabe der Quarzfrequenz, wichtig für die Zeit
2
#include <util/delay.h>    // Einbindung Datei Pause
3
#include <avr/io.h>      // Einbindung Datei Ausgänge
4

5
int main(void)
6
  {
7
  DDRA=0b11000000;    // Port A als Ausgang definiert
8
  PORTA=0b11000000;
9
  while(1)        // Programmschleife
10
    {
11
    PORTA &= ~(1<<PA6);  // Schaltet Pin aus
12
    _delay_ms(500);    // Pause 500 ms
13
    PORTA |= (1<<PA6);  // Schaltet Pin ein
14
    _delay_ms(500);    // Pause 500 ms
15
    
16
    PORTA &= ~(1<<PA7);  // Schaltet Pin aus
17
    _delay_ms(500);    // Pause 500 ms
18
    PORTA |= (1<<PA7);  // Schaltet Pin ein
19
    _delay_ms(500);    // Pause 500 ms
20
    }
21
  }
Das Programm läuft auch. Nur die Zeit stimmt nicht. Verwende einen 16MHz 
Keramik Schwinger. Da ich Pausen von 500ms drin habe müstte es doch mit 
einer Frequenz von 1Hz blinken. Wenn ich richtig gezählt habe dauert es 
ca. 4 Sekunden je Pause. Leider sehe ich meinen Fehler nicht. Woran 
könnte es liegen?

LG Berndt
Gast #5641636
Lesenswert?

diese seite ist recht praktisch um die fuses richtig zu konfigurieren

http://www.engbedded.com/fusecalc

CKDIV8 ist standard gesetzt bei der auslieferung, deiner läuft grade mit 
2 MHz, einfach fuses neu und richtig setzen dann gehts.
ansonsten kann man auch den vorteiler für den takt im betrieb setzen, 
dafür guck ins datenblatt
6.3 System Clock Prescaler seite 31 bzw.
6.5.2 CLKPR – Clock Prescale Register eine seite weiter

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