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

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.