Forum: Mikrocontroller und Digitale Elektronik ATMEGA32 funktioniert nur mit internem Oszillator


von Johannes (menschenskind)


Angehängte Dateien:

Lesenswert?

Hi,

Mein µC hängt an einem 12,288MHz-Quarz mit 2 15pF Kondensatoren gegen 
Masse.
VCC, AVCC und beide GNDs sind angeschlossen.
In meinem Code schalte ich bisher ein Pin auf Ausgang und HIGH.
Die angeschlossene LED leuchet.
Setze ich nun die Fuses auf externen Quarz mit Frequenz größer 8MHz, 
dann tut sich nichts mehr.
Die Fuseeinstellungen, siehe Anhang.

Start-up-time ist auch die längste Mögliche.

Am Quarz messe ich mit meinem Multimeter 2,5V (bei 5V Betriebsspannung), 
also ist da schon mal ein Takt (wie der genau aussieht, kann ich leider 
nicht feststellen).

Habt ihr Ideen, was man bei meinem Problem machen könnte?

Danke im Voraus
Hannes

von Joachim B. (jar)


Lesenswert?

15 pF ungewöhnlich, ich habe von 16-20 MHz immer nur 22pF dran, 12 MHz 
hatte ich noch nie probiert, mir war so das ab 20 22 24 MHz kleinere 
Kondis ran sollten, aber über 20MHz hatte ich noch nie, wobei 22MHz 
(21.xxx Baudratenquarz sicher gehen soll 24MHz vereinzelt.)

Hast du Unterspannung? ab >8 MHz Spannungsdiagramm beachten!

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Bild vom Aufbau? Abblock-Cs vorhanden?

Eigentlich kann kein Takt vorhanden sein, sonst würde der µC ja laufen. 
Die Messung mit dem Multimeter ist Mist.

von Hubert G. (hubertg)


Lesenswert?

Ich kenne dein Programm nicht mit dem du die Fuses einstellst.
Wenn allerdings kein Haken eine 0 bedeutet, dann hast du auf extern 
Clock gestellt.
CKOPT aktivieren bringt in dem Fall nichts.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hubert G. schrieb:
> Wenn allerdings kein Haken eine 0 bedeutet, dann hast du auf extern
> Clock gestellt.

Wenn hingegen 'kein Haken' nur 'unprogrammiert' bedeutet (Fuse auf 1), 
dann wäre das richtig auf Ext. High Frequency Xtal mit langsamen 
Startup.

@TE: Um alle Klarheiten zu beseitigen, lies doch mal, sofern vorhanden, 
einen fabrikfrischen Mega aus und zeig uns den Screenie.

von Johannes (menschenskind)


Lesenswert?

Ok die fehlenden zusätzlichen Infos:
5V Betriebsspannung, 1µF und 100nF am VCC-Pin

Im Burn-o-mat steht Häkchen für programmiert, also '0'. Also Fuses 
richtig gesetzt, wie Matthias schrieb.

Ich habe leider nur den einen Atmega hier.

Bzgl. Takt: die Fuses sind ja für externen Quarz gesetzt und ich kann 
noch über das ISP Interface Fuses bearbeiten und den Flash schreiben, 
also scheint das ja zu funktionieren.

Hier mal der Code:
[code]
#ifndef F_CPU
#define F_CPU 12000000UL
#endif

#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>

#include "includes/light_ws2812.h"
#include "includes/test.h"

struct cRGB led[1];

void main(){
  LED_ON();
  while(1){

    LED_PORT |= (1<<LED2);
    _delay_ms(1000);

    LED_PORT &= ~(1<<LED2);
    _delay_ms(1000);
        }
}

//zugehörige Headerdatei
#ifndef _TEST_H
#define _TEST_H
#endif

#include <avr/io.h>

#define LED_DDR        DDRD
#define LED_PORT      PORTD
#define LED1        PD4
#define LED2        PD6

#define LED_ON()  LED_DDR |= ((1<<LED1) | (1<<LED2))

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Johannes H. schrieb:
> #ifndef F_CPU
> #define F_CPU 12000000UL
> #endif

Evtl. bist du hier zu vorsichtig und F_CPU ist irgendwo anders schon 
definiert - wenn auch falsch. Entfene doch mal das #ifndef und #endif

und mach nur
1
#define F_CPU 12288000UL

von Jim M. (turboj)


Lesenswert?

Johannes H. schrieb:
> Mein µC hängt an einem 12,288MHz-Quarz mit 2 15pF Kondensatoren gegen
> Masse.
> VCC, AVCC und beide GNDs sind angeschlossen.

Acuh mit Abblock-Cs? Ist das vielleicht ein Steckbrett? Dann mal die 
15pF weglassen, die Steckbrett Kontakte haben selber Kapazitäten in 
dieser Größenordnung. Ansonsten: Foto vom Aufbau.

Johannes H. schrieb:
> Bzgl. Takt: die Fuses sind ja für externen Quarz gesetzt und ich kann
> noch über das ISP Interface Fuses bearbeiten und den Flash schreiben,
> also scheint das ja zu funktionieren.

ISP funktioiniert ohne Takt nicht mehr. Wenn man den verfused, muss man 
das mit HVPP oder externem Taktgenerator lösen.

von asdf (Gast)


Lesenswert?

Jim M. schrieb:
> Acuh mit Abblock-Cs?

Johannes H. schrieb:
> 5V Betriebsspannung, 1µF und 100nF am VCC-Pin

Ok, das sagt aber immer noch nichts darüber, ob wirklich JEDES Vcc-Pin 
einen 100n bekommen hat.

von Johannes (menschenskind)


Lesenswert?

Also #define F_CPU-Änderung bringt nichts.
Ohne die 15pF keine Veränderung.(Ja ein Steckbrett)

@asdf: nur VCC hat die. AVCC benötige ich für den Port theoretisch 
nicht, aber ich hab den Pin vorsichtshalber mal mit an V+ angeschlossen.

@Jim: Genau! Und deshalb scheint der µC den Takt zu akzeptieren, weil 
ISP-Programmierung ja noch funktioniert.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Johannes H. schrieb:
> 5V Betriebsspannung

echt gemessen oder nur vermutet?

weil 5V ist so eine definitive Aussage, das habe ich so noch nie auf 
einem Messgerät gesehen.

von c-hater (Gast)


Lesenswert?

Johannes H. schrieb:

> Bzgl. Takt: die Fuses sind ja für externen Quarz gesetzt und ich kann
> noch über das ISP Interface Fuses bearbeiten und den Flash schreiben,
> also scheint das ja zu funktionieren.

Das heißt: der Takt ist da. Es kann also nur an deinem Programm liegen, 
wenn irgendwas nicht so läuft, wie du es erwartest.

Oder an ungenügender Hardware, insbesondere bezüglich der Versorgung (zu 
wenig Spannung, zu wenig Block-Kapazität oder zu viel Block-Kapazität).

Schalte als erste Maßnahme einfach mal den Brownout-Detector ein. Fuse 
BODENABLE.

von Johannes (menschenskind)


Lesenswert?

5V vom USB-Port. Ich betreibe diesen Testaufbau gleich an meinem 
Programmer.

@c-hater: Spannung ist da (nachgemessen). Brown-out Detection ist 
aktiviert.
Aber was soll denn an meinem Programm da nicht korrekt sein, wenn's doch 
für internen Takt funktioniert?

Das Steckbrett samt µC lag jetzt 4 Jahre in einer Kiste. Ich weiß nicht, 
ob das noch irgendeinen Einfluss haben könnte.

Auch mit nem 16MHz-Quarz(hab leider nix Kleineres da) gibt's keinen 
Verhaltensunterschied.

von Joachim B. (jar)


Lesenswert?

Johannes H. schrieb:
> 5V vom USB-Port. Ich betreibe diesen Testaufbau gleich an meinem
> Programmer.

woher weisst du dann das die 5V vom USB 5V sind und auch am Atmel 
ankommen?

Bei mir kommen weder 5V aus den USB noch kommen die am Atmel an!

Der erste große Fehler ist eine falsche Annahme!

von Johannes (menschenskind)


Lesenswert?

Joachim B. schrieb:
> woher weisst du dann das die 5V vom USB 5V sind und auch am Atmel
> ankommen?

hatte ich angegeben:  "@c-hater: Spannung ist da (nachgemessen)."
Saubere 5,1V um genau zu sein :)

von Johannes (menschenskind)


Lesenswert?

Ok Leute, der neue ATmega32A der gerade eingetroffen ist funktioniert 
nun mit internem UND externem Takt.
Habt ihr evtl. ne Erklärung dafür?

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.