Taktprobleme beim Umstieg auf Mega328P

OP #3484350
Lesenswert?

Hallo!

Für ein Projekt habe ich ein relativ umfangreiches Programm für den 
Mega8 geschrieben. Das Problem ist, dass ich aufgrund diverser 
zusätzlicher Ideen inzwischen an die Kapazitätsgrenze gekommen bin und 
deshalb auf einen anderen chip ausweichen möchte. Aufgrund der 
zusätzlichen Funktionen bei gleichzeitig gleicher Grundausrüstung bin 
ich beim Mega328P gelandet. Dieser sollte bei weitem genug Speicher 
bieten und könnte ggf sogar noch durch den Mega168P ersetzt weren.

Als Entwicklungsumgebung dient das AVR Studio 5 in Verbindung mit einem 
STK 500.

Die Portierung auf den neuen Chip schien einfach. Einige Registernamen 
ändern ect. Leider funktioniert die Kommunikation über RS232 nicht wie 
gedacht, weshalb ich skeptisch wurde.

Ich habe nun rausgefunden, dass mein Mega328P anscheinend zu langsam 
arbeitet. Zum Vergleich habe ich folgendes Programm auf die beiden Chips 
aufgespielt:

/*
 * MEGA328P_Test.c
 *
 * Created: 12.01.2014 19:59:29
 *  Author: YD
 */

#define F_CPU 8000000

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

int main(void)
{

  DDRB = 0xFF;
  TCCR1A = (1<<COM1A1|1<<COM1A0|1<<WGM11|1<<WGM10);
  TCCR1B = (1<<CS11);
  OCR1A = 0x0200;

  sei();
    while(1)
    {
    _delay_ms(5000);
    PORTB ^= 0x2F;
    }
}

Zudem sind die Fuses so eingestellt, dass beide auf 8MHz intern laufen 
sollten.

Der Mega 8 toggelt damit recht genau im 5s Takt die freien Pins an 
PortB, was genau dem entspricht, was der Fall sein sollte.

An PB1 wird ein PWM Signal mit etwa 500Hz ausgegeben. Soweit ist also 
alles in Ordnung.

Nun kommt der Mega 328P ins Spiel.Das Toggeln findet etwa alle 40s 
statt, PB1 hat eine PWM mit ca 61Hz. Es wirkt so, als würde der Chip 
etwa 1/8 der gewünschten Frequenz sehen.

Da es auf mehreren Chips das selbe Verhalten zeigt, gehe ich davon aus, 
dass ich irgendetwas übersehen habe. Gibt es da einen bekannten Bug, bzw 
eine Sache, die gerne übersehen wird? Irgendein Fuse Setting, dass über 
die Oszillator Einstellung hinaus geht?

Vielen Dank im Vorraus für hilfreiche Antworten.
#3484422
Lesenswert?

> Fragt sich, warum die 328 standartmäßig mit diesem Fuse kommen.

Das ist notwendig, weil manche Leute einen 8MHz Quarz dran haben, aber 
den Prozessor nur mit 2V versorgen. Da kann der aber gar nicht mit 8MHz 
Befehle ausführen, weil die Gatter/Speicher/Flipflops bei 2V nicht 
schnell genug arbeiten.

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