Programmänderung DS1820

Gast #29162
Lesenswert?

Hallo...
Im Internet habe ich folgendes Programm für einen AT90S2313 gefunden, 
diese möchte ich so verändern, das es auf einem AT90S8515 läuft. Alle 
meine Versuche sind gescheitert...
Wer kann mir bei der Änderung helfen und diese gegebenfalls auch 
kommentieren, so das es für mich nachvollziehbar ist.
Danke...
Angehängte Dateien:
Gast #29164
Lesenswert?

Hallo  Marco

Erstmal mußt du den Stackpointer auf den 8515 anpassen. Der 8515 hat SP 
register.

Dann uß natürlich hier der richtige MCU eingetragen werden.

.include "d:\avr\2313def.inc"

Taktfrequenz muß natürlich paßen, wegen der delays.

Was sagt den das Studio ???
MFG

Dieter
#29167
Lesenswert?

So gehts nicht !

Du must nach dem Start der Messung min 0,5s warten (0,75s beim DS18B20).

Mann kann auch das Busy-Bit testen, d.h. immer Reset und ein Bit lesen 
usw. bis Bit = 1, aber nur, wenn man kein parasite power benutzt.


Um den Code portabel zu halten, sollte der 1W-Pin mit einem Namen und 
nicht direkt angesprochen werden.

Auch die ganzen Delays sollte man den Assembler aus der Quarzfrequenz 
selber berechnen lassen, damit man auch andere Quarze verwenden kann, 
wie z.B. hier:

http://www.mikrocontroller.net/forum/read-4-27035.html

Auch ist es einfacher, gleich einen DS18B20 zu nehmen, da muß man nicht 
erst viel rechnen, um das Ergebnis in 0,0625°C-Schritten zu erhalten.


Ob das delay 500µs ist weiß ich nicht, aber es ist keine Endlosschleife, 
d.h. es hängt nicht fest.


Peter
Gast #29168
Lesenswert?

@ >Dieter
ich bin absoluter Neuling  auf dem Gebiet und einiges fällt mir noch 
echt schwer zu verstehen.
Ich benötige immer ein laufendes Programm, was ich nachvollziehen kann, 
um es zu verstehen.
Gast #29169
Lesenswert?

Hallo Marco

Wenn du die 2 Zeilen einträgst, läuft es bei mir durch. Ob es geht kann 
ich dir im Moment nicht sagen.

ldi temp1, LOW(RAMEND)  ;LOW-Byte der obersten RAM-Adresse
out SPL, temp1
ldi temp1, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
out SPH, temp1

anstatt von

ldi temp1, ramend      ;stack einrichten
out spl, temp1

Der 8515 hat mehr speicher und muß deshalb über 2 variablen eingestellt 
werden. Man stellt damit den SP auf das Ende des Speichers ein. In 
diesem Bereich werden dann die Rücksprungadressen gespeichert, für rcall 
usw.

MFG
Dieter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren