Forum: Mikrocontroller und Digitale Elektronik ATMEGA32 16MHz --> ATMega32 8MHz


von karthik (Gast)


Lesenswert?

Hallo,

Ich benutze ein 8MHz crystal mit zwei 22pF condensoren.
Aber mein program funktioniert nicht.

Es funktioniert gut mit dem 16 MHz external clock:
CKSEL 3...0: 0000
SUT1...0:00
#define FOSC 16000000

Ich benutze auch ein internal Timer. Die program muss e
                TCCR1B|=(1<<CS12); //Prescaling: /256
    TCCR1B|=(1<<WGM12); //Mode of operation CTC: Top OCR1A

    #if (FOSC==16000000)
    OCR1A=62500; //So many increments for 1 second
    // 16uS (microSeconds) for 1bit increment: When TCNT1
                //reaches this value it is reset to 0.
    // when F_OSC = 16MHz  --> 1 round = 0.0000000625 s
    #elif (FOSC==8000000)
    OCR1A=31250; //So many increments for 1 second
    //32uS (microSeconds) for 1bit increment: When TCNT1
                //reaches this value it is reset to 0.
    // when F_OSC = 8MHz  --> 1 round = 0.000000125 s
    #endif




Bitte helfen
Karthik

von Werner (Gast)


Lesenswert?

[quote]
#define FOSC 16000000
[/quote]

Was meinst du, was FOSC heißt...

von karthik (Gast)


Lesenswert?

FOSC ist die Clock speed:

#define FOSC   16000000// Clock Speed
#define BAUD   19200
#define MYUBRR   FOSC/16/BAUD-1


void Uart_Init(unsigned int ubrr)
{

  /* Set baud rate */
  UBRRH = (unsigned char)(ubrr>>8);
  UBRRL = (unsigned char)ubrr;
  /* Enable receiver and transmitter */
  UCSRB = (1<<RXEN)|(1<<TXEN);
  /* Set frame format: 8data, 2stop bit */
  UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

}

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.