Forum: Compiler & IDEs Problem mit externem Oszillator


von Hans M. (anno)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Problem mit meinem externen Oszillator am ATmega644p

Der externe Oszillator hat eine Frequenz von 11,0592MHz.

Doch wenn ich bei mir einen Port toggle um eine bestimmte Frequenz zu 
ermitteln, bekomme ich immer nur 125us heraus.

Hier der code:

[c]

#include <ioavr.h>

int itr;
int test[3];

int main( void )
{

  UBRR0L = 0x05;
  UBRR0H = 0x00;

  UCSR0B = 0x98;

  UBRR1L = 0x05;
  UBRR1H = 0x00;

  UCSR1B = 0x98;
  itr = 0;

  while(1) {

    while(1) {

     itr++;

     PORTB |= (1 << 4);

     if(itr == 1000) {
       itr = 0;
       PORTB ^= ( 1 << 4 );

     }

    }

}
  }
  return 0;
}

[c]

im anhang sind ncoh meine eisntellungen des controllers.

von Hans M. (anno)


Angehängte Dateien:

Lesenswert?

hier noch mein 2. anhang

von gast (Gast)


Lesenswert?

Die Kalibrierung ist für den internen Osc.

von Hans M. (anno)


Lesenswert?

wie stelle ich das dann um??

von Michael U. (amiga)


Lesenswert?

Hallo,

Hans Müller schrieb:
> wie stelle ich das dann um??

garnicht, am Quarz gibt es vom AVR nichts zu calibrieren.

Verrate doch mal, was Du bei Deinem Programm eugentlich erwartest.

Gruß aus Berlin
Michael

von Hans M. (anno)


Lesenswert?

na aber wenn es doch auf intern eingestellt ist, ich aber einen externen 
oszillaitor dran hängen hab, wie ich die einstellungen am atmega ändern 
muss, dass es mit dem externen funktioniert.

von Gast (Gast)


Lesenswert?

Dafür musst du die entsprechenden Fuse Bits setzen (die Einstellungen 
kann man sich aus dem Datenblatt unter FUSE-Bits herausnehmen). Wo das 
Menü zum Einstellen der Fuse Bits beim JTAGICE ist kann ich dir nicht 
sagen.

von Michael U. (amiga)


Lesenswert?

Hallo,

Hans Müller schrieb:
> na aber wenn es doch auf intern eingestellt ist, ich aber einen externen
> oszillaitor dran hängen hab, wie ich die einstellungen am atmega ändern
> muss, dass es mit dem externen funktioniert.

wieso? laut Deinem ersten Bild stehst Du auf Ext. Crystal Osc., das 
stimmt doch so.

Der Hinweis bezog sich auf Dein 2. Bild: die Calibrier-Seite ist für den 
internen RC-Oszillator, also bei Deiner Fuseeinstellung werden diese 
Werte nicht benutzt.

Gruß aus Berlin
Michael

von didi (Gast)


Lesenswert?

Hallo zusammen,

bei den neueren AVR's, wie der 664, ist im Neuzustand das CKDIV8-FUSE
gesetzt. Dh. der Takt egal ob intern oder extern wird durch 8 geteilt.
Aber VORSICHT mit den FUSE's - immer Datenblatt studieren!!

Gruß Didi

von Uboot- S. (uboot-stocki)


Lesenswert?

didi schrieb:
> Hallo zusammen,
>
> bei den neueren AVR's, wie der 664, ist im Neuzustand das CKDIV8-FUSE
> gesetzt. Dh. der Takt egal ob intern oder extern wird durch 8 geteilt.
> Aber VORSICHT mit den FUSE's - immer Datenblatt studieren!!
>
> Gruß Didi

Ja, da bin ich auch schon drüber gestolpert...

Kann man, bei gesetzer CKDIV8-FUSE, also einen 80Mhz-Oszillator 
anschliessen auch wenn der AVR nur 20Mhz "kann" ?

Gruß

Andreas

von Falk B. (falk)


Lesenswert?

@  Uboot- Stocki (uboot-stocki)

>Kann man, bei gesetzer CKDIV8-FUSE, also einen 80Mhz-Oszillator
>anschliessen auch wenn der AVR nur 20Mhz "kann" ?

Wahrscheinlich eher nicht.

MFG
Falk

von Michael U. (amiga)


Lesenswert?

Hallo,

Uboot- Stocki schrieb:
> Kann man, bei gesetzer CKDIV8-FUSE, also einen 80Mhz-Oszillator
> anschliessen auch wenn der AVR nur 20Mhz "kann" ?

Naja, anschließen schon, ich denke aber, der AVR-interne Clock-Teiler 
wird wohl kaum 80MHz teilen, das hätte Atmel schon ins Datenblatt 
geschrieben...

Gruß aus Berlin
Michael

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.