www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik OSCCAL, bitte Unterstützung


Autor: Martin Huber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bräuchte etwas Ünertstützung was den internen RC- Oszi. angeht.
Hab jetzt nach längerer Pause wieder mit Assembler angefangen und hab
mir einen Mega8515 zugelegt. Soweit so gut, mein Programm (SPI-
Schnittstelle über Software gelöst) läuft super --> aber leider etwas
zu langsam.
Wollte nun die Fuses ändern und den µC auf 8MHz laufen lassen, aber
scheinbar ist das nicht so einfach. Hab jetzt mal alle Infos
"aufgesaugt" die ich bekommen habe:

1. Default läuft "meiner" auf 1 MHz und die Kalibrierung wird
automatisch beim Programmstart durchgeführt.

2. Er bestizt 4 interne Oszis (Version 3) und Atmel war so freundlich
für alle den Kalibrierwert im Werk zu ermitteln und Ihn in die
"Signature Row" abzulegen.

3. Will ich den µC jetzt auf 8Mhz laufen lassen muss ich per Software
bzw. im Programm den Kalibrierwert selbst ins OSCCAL- Register
schreiben.Nicht zu vergessen, daß ich vorher natürlich die Fuses
anpasse.

----> jetzt kommt mein hänger !! Wie komme ich an den Kalibrierwert im
"Signature Row". Mir ist leider im Moment noch nicht klar, wo dieses
abgelegt ist bzw. was für einen Zweck es erfüllt.

Gruß

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi...

Die Calibrationsbytes liegen in den H-Bytes des Signature-Bereiches
(die Signature-Bytes liegen in den L-Bytes derselben).
Für 8MHz brauchst du das vierte Calbyte, also das von Adresse $03.

Wie du mit deinem ISP-Programm ran kommst, kann ich dir leider nicht
sagen, ich benutze mein eigenes ISP-Programm, und das kalibriert
automatisch beim Löschen, falls der interne Oszi nicht auf 1MHz steht.

Gruß...
...HanneS...

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Martin Huber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Erst mal vielen Dank für die flotten Antworten. Anscheinend habe ich zu
dick aufgetragen :-), meine Erfahrungen basierten bis jetzt auf den µP
8085 vielleicht tue ich mir deshalb etwas schwer ? In welchem Speicher
liegt das "Signature Row". Im Datasheet zum Mega8515 finde ich leider
keine oder habe Tomaten auf den Augen.
Hab bis jetzt PonyProg verwendet und bin wie gesagt noch in den
anfängen, dort kann man jedoch das
"Calibration Byte" auslesen (siehe Anhang) --> passt das dann ?
Langsam bekomme ich das Gefühl das eine externe Taktquelle etwas
eleganter bzw. einfaher ist.

Thanks

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi...

Wie gesagt, ich nutze Pony nicht, aber das sieht schon richtig aus,
wenn man die zwei Nullen am Ende ignoriert.

Kannst du auch die Adressen 0x00(00), 0x01(00) und 0x02(00) auslesen?
Dann wäre:

0x00: Calibyte für 1MHz (wird aber automatisch bei Reset gemacht)
0x01: Calibyte für 2MHz
0x02: Calibyte für 4MHz
0x03: Calibyte für 8MHz

Der 8085 erinnert mich an MFA...

Ist aber kein Vergleich mit einem AT-Mega.
Hier ist schließlich schon (neben RAM, CTC und I/O) der
Programmspeicher (Flash) und EEPROM mit drin, und auch noch das
zugehörige "Programmiergerät", das über ISP mit dem PC kommuniziert
und vom PC gesteuert wird.

Der Signature-Bereich gehört mehr zum (internen) "Progriergerät" als
zu irgendwelchen Speicherbereichen, denn das (User-) Programm kann
weder auf die Signature-Bytes (L) noch auf die Calibrations-Bytes (H)
zugreifen, da kommt nur der PC via Prog-Software hin, also über den
Kommandosatz des Programmers. Schau dir dazu mal im Datenblatt den
Absatz zum Thema "Serial downloading" an.

Gruß...
...HanneS...

Autor: Martin Huber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.....zum 8085 --> mit dem MFA hast Du voll ins schwarze getroffen.
Mit diesem "Urgestein" hab ich auch gearbeitet, und finde das es für
das Verständnis viel gebracht hat.

Was den ATMega angeht bin ich im Moment von den Möglichkleiten etwas
"erschlagen". Will jetzt einfach mal mit kleineren Projekten wieder
in die Thematik finden und auch fürs erste dem Assembler treu bleiben
(auch wenn die Geschwindigekit des µC ohne Probleme höhere Sprachen
zulässt).

Hab jetzt mal die anderen Werte über PonyProg ausgelesen, leider ändert
sich am Value nicht viel --> soll heißen ich erhalte immer den Wert
0xAF. Vielleicht hat hier schon mal jemand auf diese Art die Bytes
ausgelese !? Da ich auch bei google nicht viel weiter gekommen bin
werde ich im worst case auf einen externen Quarz umsteigen.



@HanneS
siehe da, Datenblatt zum ATmega8515:
Chapter: Memory Programming
Seite:   179
Thema:   Signature Bytes,

werd ich mir mal anschauen.

Thanks

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.