Probleme mit Taktung AVR

OP #4434660
Lesenswert?
• ▲
▼
Hey Leute,

ich brauche eure Hilfe.
Nach einer längeren Pause habe ich mich wieder an ein neues 
Mikrocontrollerprojekt gewagt. Jetzt wollte ich mit den Basics anfangen, 
doch leider bekomme ich es scheinbar nicht mal gebacken eine einfache 
LED im Sekundentakt blinken zu lassen.

Mir ist leider mein Oszilloskop beim Umzug kaputt gegangen, sonst könnte 
ich den genauen Takt bestimmen. Ich habe aber über mein Handy eine 
Stoppuhr laufen lassen und konnte schon nach etwa sechs-mal-LED-blinken 
feststellen, dass die LED definitiv nicht annähernd im Sekundentakt 
blinkt. (Daher schließe ich aus, dass es an der Ungenauigkeit des 
internen Quarzes liegt)
Normalerweise sollte der interne Quarz von Werk aus mit 1Mhz takten 
(8Mhz mit CKDIV8 FuseBit gesetzt --> 1Mhz) oder? Leider blinkt die LED 
nicht annähernd im Sekundentakt. Auch nach anschließen eines externen 
Quarzes (8Mhz mit 2x22pF zu GND; CKDIV8 FuseBit gesetzt --> 1Mhz; 
SUT_CKSEL FuseBit auf Extern gestellt) blinkt die LED nicht annähernd im 
Sekundentakt. Das heißt ich kann den Fehler beim Quarz ausschließen. Nur 
wo liegt dann der Fehler? Habe auch anstatt der delays versucht das 
Problem mit Timern zu lösen - leider auch erfolglos. Habe auch schon 
einen anderen Controller vom selben Typ (Attiny2313A-PU) auf das Board 
gesteckt - auch ohne Erfolg. Nachstehend noch ein paar Infos. Ich hoffe 
ihr könnt mir helfen. Danke schon mal!

Controller: Attiny2313A-PU
Programmer: AVR Dragon in SPI mode
Nutze noch AVR-Studio 4

PINBELEGUNG: siehe Datenblatt (http://www.atmel.com/images/doc2543.pdf)
PIN01: RESET zu AVR Dragon
PIN10: GND
PIN12 (PINB0): LED mit Widerstand zu GND
PIN17: MOSI
PIN18: MISO
PIN19: SCK
PIN20: VCC mit 100nF zu GND

MEIN CODE:
1
#include <avr/io.h>
2
#define F_CPU 1000000UL
3
#include <util/delay.h>
4
int main(void)
5
{
6
  DDRB |= 1<<PINB0;
7
  while(1)
8
  {
9
    PORTB |= 1<<PINB0;
10
    _delay_ms(1000);
11
    PORTB &= ~(1<<PINB0);
12
    _delay_ms(1000);
13
  }
14
}
OP #4434975
Lesenswert?
• ▲
▼
Es funktioniert endlich! Ich bin super erleichtert! Habe nochmal einen 
anderen externen Quarz angeschlossen. Der Quarz den ich davor 
angeschlossen hatte tickt wohl nicht mehr ganz richtig ;)

Ich finde die Ungenauigkeit des internen Quarzes ziemlich hoch, ist das 
normal?
In 5 Minuten wechselte die LED 288 mal ihren Zustand (an/aus) mit dem 
internen Oszillator. Normalerweise sollte sie 5Min x 60/Min=300 mal 
ein/aus schalten. Das ergibt eine Abweichung von 4% (bei 1Mhz immerhin 
40000Hz) Ist der interne Oszillator wirklich so ungenau?
#4434978
Lesenswert?
• ▲
▼
@  Jonas S. (j0s)

>Ich finde die Ungenauigkeit des internen Quarzes ziemlich hoch, ist das
>normal?

Es gibt keinen internen Quarz, nur einen internen RC-Oszillator.

>In 5 Minuten wechselte die LED 288 mal ihren Zustand (an/aus) mit dem
>internen Oszillator. Normalerweise sollte sie 5Min x 60/Min=300 mal
>ein/aus schalten. Das ergibt eine Abweichung von 4% (bei 1Mhz immerhin
>40000Hz) Ist der interne Oszillator wirklich so ungenau?

Ja. Kann man aber kalibrieren.

https://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Erg.C3.A4nzende_Hinweise_zur_Taktversorgung_.28kann_.C3.BCbersprungen_werden.29

Antwort schreiben

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.

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.