Programmieradapter mit Calibration Byte

Gast #233399
Lesenswert?
• ▲
▼
Ich will demnächst ein paar ATtiny12 oder evtl. auch ATtiny11
programmieren. Der ATtiny11 geht nur im High-Voltage mode.
Grundsätzlich wäre mir der auch lieber, weil er günstiger ist.
Allerdings nehme ich auch den ATtiny12, wenn es nicht anders geht.

Bisher habe ich meinen ATmegas mit einem seriellen Adapter
programmiert. Den von der Seite in der seriellen Version, da die
parallele über Schnittstellenkarte im neuen PC nicht mehr ging:

http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

Allerdings soll das für die Tinys etwas anders sein, weil ich da noch
das Kalibrationsbyte setzen will. Und zwar möglichst einfach, weil ich
ein paar mehr davon programmieren will.

Der serielle Adapter geht aber damit nicht:

http://www.rowalt.de/mc/avr/progd.htm

Welche Lösungen gibt es, die beides vereinen? Also weg von der
parallelen Schittstelle und gleichzeitig einfache Programmierung bzw.
einfaches schreiben des Kalibrationsbytes?

Vielen Dank!
Gast #233400
Lesenswert?
• ▲
▼
Der Tiny11 hat nur den stark driftenden Watchdogoszillator, da ist
nichts mit kalibrieren.

Beim Tiny12 wird das Kalibrierbyte in die oberste Adresse des Flash
kopiert, da kann es die Software dann auslesen.

Du must nur das Löschen vor dem Programmieren ausschalten !


Peter
Gast #233401
Lesenswert?
• ▲
▼
Okay also doch Tiny12 mit ISP-Programmer.

Aber wann wird denn das byte da reinkopiert. Macht das Ponyprog oder
avrdude (wenn es mal wieder funktionieren sollte) automatisch, wenn ich
das benutze und ich muss es nur noch auslesen oder wie funktioniert
das?

Vor allem wie soll das automatisch funktionieren, woher weiß denn das
Programm, dass das mit der Kalibrierung stimmt?

Ich habe keinen Plan, wie das gehen soll. Zumindest das setzen. Das
auslesen im Programm sollte ja kein Problem darstellen.
Gast #233403
Lesenswert?
• ▲
▼
Das heißt, jeden Controller, den ich kaufe, der ist schon kalibriert
(Tiny12 z.B.) und ich muss mir darüber keine Gedanken machen, wenn ich
im normalen Temperaturbereich (um die 25°C arbeite)?

Aber im Datenblatt geht das so richtig nicht hervor.
#233404
Lesenswert?
• ▲
▼
Der Hersteller schreibt in jeden neuen kalibrierbaren AVR das
Calibrationsbyre in das L-Byte und H-Byte der letzten Flash-Zelle. Wenn
ich mich nicht irre, dann auch in eine EEPROM-Zelle, das habe ich aber
nicht überprüft.

Wenn du nur neue Chips verwendest und keine Tests damit machst
(mehrfach updaten), dann kannst du diese Kopie ausnutzen. Ich nutze
dazu immer folgende (eigene) Include-Datei, die ich in die
Reset-Routine einbinde:

;--- Calibration des internen RC-Oszillators.
;    Kann bei Betrieb mit Quarz entfallen...
;
;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.

;Beim Tiny26 muss der Bezeichner "flashend" definiert werden, da
dies
;in der "tn26def.inc" vergessen wurde.

 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                 ;Kalibyte gültig? (nein wenn $ff...)
 out osccal,r0              ;ja, Chip kalibrieren...
;--- Ende Calibration...

Diese Routine prüft das Byte zusätzlich auf Plausiblität und verhindert
das Kalibrieren auf "Maximum" (das Übertakten), falls kein
Calibrationsbyte im Flash liegt.

Mein Eigenbau-ISP-Programm kalibriert übrigens automatisch beim Löschen
wenn das zu brennende Programm die letzte Flash-Zelle nicht benötigt und
der AVR kalibriert werden muss (Tiny12, Tiny15, Megaxx bei internem Takt
ungleich 1MHz).

...
Gast #233405
Lesenswert?
• ▲
▼
Ja okay, dann habe ich das verstanden. Also stehen die Werte schon drin
und ich könnte die bei neuen Chips auch vorher auslesen, bevor ich
damit rumfummele.

Dein Eigenbau ISP-Programm: Wie führt es eine Kalibrierung durch bzw.
möchtest Du es zur Verfügung stellen?

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.