mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik OSCCAL Register beim Tiny15


Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich verstanden habe, müsste irgendwo im Programm stehen:
   ldi   r16,99       ;99 ist der ausgelesene Wert für Osccal
   out   OSCCAL,r16   ;diesen Wert in OSCCAL schreiben

Wie würde man das für die Serienfertigung (mit Ponyprog etc) 
automatisieren?
In der Serienfertigung hätte man doch nicht Zeit, jeden Chip auszulesen 
und mit einem Hexeditor, den gelesenen Wert in eine bestimmte 
Speicheradresse zu schreiben. Oder habe ich da was missverstanden?

Autor: 3358 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Du laedst zuert mal ein kleines Programm, das den Wert fuer OSCCAL 
bestimmt. ZB ein Timer interrupt generiert ein Puls an einem pin, 
welcher als Frequenz gemessen wird, dann wird OSCCAL als konstante ins 
tatsaechliche Programm eingefuegt. Das wird dann als Zweites 
programmiert.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es meist so gemacht:
;--- Calibration des internen RC-Oszillators.
;
;Das Calibrationsbyte muss von der Programmer-Software aus dem Signature-
;Bereich des AVR gelesen werden und in das Low-Byte der letzten
;Flash-Zelle geschrieben werden.

 ldi zl,low(2*flashend)     ;Adresse auf Kalibrationsbyte L
 ldi zh,high(2*flashend)    ;und H 
 lpm                        ;Kalibrationsbyte lesen
 ser zl                     ;Referenz für Vergleich auf Gültigkeit
 cpse r0,zl                 ;Kalibrationsbyte gültig? (nein wenn $ff...)
 out osccal,r0              ;ja, Chip kalibrieren...
;--- Ende Calibration...

...

Autor: 3358 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Genau. Und welcher wert steht an Flashend ? Wie kommt der dahin ?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
3358 wrote:
> Ja. Genau. Und welcher wert steht an Flashend ? Wie kommt der dahin ?

Zu Fuß...
;Das Calibrationsbyte muss von der Programmer-Software aus dem Signature-
;Bereich des AVR gelesen werden und in das Low-Byte der letzten
;Flash-Zelle geschrieben werden.

Soll heißen:
- Der Mensch, der vor dem Rechner sitzt, liest mit Hilfe einer
  Programmer-Software (die meist auf einem PC läuft) das Calibrations-
  byte aus dem Signature-Space (High-Byte, siehe Beschreibung des
  ISP-Programmierprotokolls im Datenblatt des AVRs) aus und merkt es
  sich,
- er schreibt das gemerkte Byte in das vorletzte Byte des von Ponyprog
  angezeigten Hex-Dumpes oder mit anderen geeigneten Mitteln in die
  Hexdatei an Adresse RAMEND*2

Warum eigentlich die letzte Flash-Zelle?
Weil ATMEL bei neuen AVRs das Calibrationsbyte auch in die letzte 
Flash-Zelle schreibt, und zwar in das H-Byte und L-Byte. Bei neuen AVRs 
(Serienfertigung) kann daher diese Prozedur entfallen. Man muss nur 
darauf achten, dass man beim Brennen den AVR nicht löscht. Denn dann war 
ATMELs Mühe für die Katz...

...

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Die Brennsoftware für die ATMEL-Programmer gestattet das Lesen des 
OSCAL-Wertes und das Speichern an einer Adresse im Flash oder EEPROM.

MfG Spess

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
3358 wrote:
> Ja. Genau. Und welcher wert steht an Flashend ? Wie kommt der dahin ?

Den trägt Atmel dort ein.
Du must den Attiny15 programmieren ohne ihn vorher zu löschen, dann 
klappt es.
Lies mal einen fabrikneuen Attiny15 aus, dann kannst Du es sehen.
Nach dem ersten Löschen ist es natürlich weg.


Peter

Autor: Peter X. (vielfrass)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> 3358 wrote:
>> Ja. Genau. Und welcher wert steht an Flashend ? Wie kommt der dahin ?
>
> Den trägt Atmel dort ein.
> Du must den Attiny15 programmieren ohne ihn vorher zu löschen, dann
> klappt es.
> Lies mal einen fabrikneuen Attiny15 aus, dann kannst Du es sehen.
> Nach dem ersten Löschen ist es natürlich weg.
>
>
> Peter


Habe es mal zu Testzwecken ausgelesen. Stimmt.

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.