mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Taktfrequenz beim Mega 2560!


Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

kämpfe mit einem mekrwürdigen Problem:

Habe zwei Boards von unterschiedlichen Herstellern, jedes mit einem Mega 
2560 bestückt. Beide haben ein Uhrenquarz, Beide extern mit 16 MHz 
getaktet.

Auf dem ersten Board läuft ein selbstentwickeltes Programm einwandfrei - 
unter anderem blinkt eine LED im (nahezu) Sekundentakt. Das Programm 
wurde mit STK500 (ohne Bootloader) geflashed.

Auf dem anderen Board blinkt diese LED bei gleichem Programm und 
gleichen Fuses wesentlich schneller - ~ Faktor 8 - 10. Auch sekündliche 
Meldungen über das UART kommen nun mit Zeitraffer-Geschwindigkeit.

Runtersetzen der Geschwindigkeit um Faktor 8 über CKSEL hat nichts 
gebracht - kein Effekt.

Merkwürdig war: Habe das zweite Programm zuerst mit Bootloader geflashed 
und dann versucht mit BootLoader das eigentliche Programm zu laden. Hat 
aber nicht geklappt.

Habe dann mit dem STK500 auch im zweiten Board das Programm über ISP 
geflashed ... dann kam es zu dem oben beschriebenen Phänomen.

Wie gesagt - Programm an sich läuft - aber eben zu schnell. UART funzt 
auch ... Meldungen werden übertragen , aber zu schnell.

Hat dazu jemand eine erste Idee ?


Danke im voraus!

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hendrik L. schrieb:
> Faktor 8 - 10.

Hört sich nach der CKDIV8-Fuse an. Würde ich mal danach schauen, auch 
wenn du meinst das die fuses identisch sind. Nach deiner Hardware- und 
Fehlerbeschreibung, ist das für mich die einzige logische Erklärung.

Gruß Skriptkiddy

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Hört sich nach der CKDIV8-Fuse an. Würde ich mal danach schauen, auch
>wenn du meinst das die fuses identisch sind. Nach deiner Hardware- und
>Fehlerbeschreibung, ist das für mich die einzige logische Erklärung.

Aber nur wenn bei identischen Programmen bei einem die serielle 
Übertragung nicht geht.

MfG Spess

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Aber nur wenn bei identischen Programmen bei einem die serielle
> Übertragung nicht geht.

Stimmt. Hatte ich nicht bedacht.

Dann ist aber meiner Meinung nach an der Fehlerbeschreibung was faul.

Gleicher µC
+Gleiche Taktversorgungen
+Gleiche Fuses
---------------------------
=Gleicher Takt


Und aus gleichem Takt folgt bei gleichem Programm (selbes Hexfile 
vorrausgesetzt) schließlich das selber Verhalten.


Ich könnte mir aber vorstellen, das er das Programm eventuell nocheinmal 
kompiliert hat und dabei nen falschen Takt angegeben hat. Wenn dann 
Delays verwendet werden, könnte es trotz richtig initialisiertem UART zu 
falschen Timings im Programmablauf kommen.


Gruß Skriptkiddy

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Dann ist aber meiner Meinung nach an der Fehlerbeschreibung was faul.

Oder beim 'langsamen' Programm nur das Blinken getestet.

Mfg Spess

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Oder beim 'langsamen' Programm nur das Blinken getestet.

Durchaus denkbar.

Grüße Skriptkiddy

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee- Programm ist sehrausführlich getestet.

Aber Eure Diskussion hat mich darauf gebracht, dass ja das Problem 
eigentlich nur mit dem Uhrenquarz zusammenhängen kann!

Wenn die UART-Kommunikation funktioniert ....!

Werde mich malum die "Sekunden-Interrupts" kümmern. Sicherheitshalber 
werde ich auch mal das Programm vom funktionierenden Board auslesen und 
in das andere Board flashen ... Nicht, dass ich den Source Code 
zwischenzeitlich irgendwo verschlimmbessert habe.

Werde berichten.

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe noch einmal die Programme ausgelesen (verifziert) - sind beide die 
exakt gleichen Versionen!

Mmmmh - da muss ich mal weiter forschen. Werde erst einmal mit dem Oskar 
die Uhrenquarz Frequenzen messen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hendrik L. schrieb:
> Aber Eure Diskussion hat mich darauf gebracht, dass ja das Problem
> eigentlich nur mit dem Uhrenquarz zusammenhängen kann!

Du weißt aber schon, daß man einen Uhrenquarz nur dann braucht, wenn 
Batteriebetrieb nötig ist, d.h. Stromsparen.

Ansonsten ist es einfacher, den CPU-Quarz zu zählen.
Dann muß man sich auch nicht mehr mit dem Asynchronmodus des T2 
rumplagen. Da sind ja ziemliche Umstände nötig, ehe Register und Bits 
gültig sind.


Peter

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem kenne ich.
Allerdings mit anderen Controllern (48, 88, 168).
Bei denen lag es an der Versorgungsspannung. Die Atmegas, die ich kenne, 
lassen sich alle mit einer Spannung unterhalb, der für die jeweilige 
Taktfrequenz im Datenblatt angegebenen betreiben. Also im Grunde werden 
sie dann übertaktet. Bislang lief bei mir damit alles, bis auf eine 
Sache, rate mal welche: Uhrenquarz am Timer2 läuft ungefähr 8 mal so 
schnell wie erwartet.

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub's nicht:

Nachdem ich einen anderen UhrenQuarz aus einem defekten Board eingelötet 
habe ist alles o.k.!

So einfach können Lösungen manchmal sein.

Vielen Dank für Eure Hilfe.

Grüße

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D

Peter Dannegger schrieb:
> Du weißt aber schon, daß man einen Uhrenquarz nur dann braucht, wenn
> Batteriebetrieb nötig ist, d.h. Stromsparen.

Allerdings- das wußte ich nicht. Ich dachte bislang immer, dass man 
Uhrenquarze braucht, weil die Prozessorquarze zu ungenau sind.

Habe ich wieder was gelernt - Danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.