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...
Ach so ich habe da noch was vergessen, die Temperatur soll nicht über ein LCD sondern, über Terminalprogramm angezeigt werden.
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
So ich habe nun den Pfad geändert. In der Simulation läuft das Programm bis: wait500us: ldi delay2, 6 ldi delay1, 200 wait500us_1: inc delay1 brne wait500us_1 dec delay2 brne wait500us_1 ret und hängt dann dort irgend wo fest...
Hallo Marco Schau mal rein. http://www.mikrocontroller.net/tutorial/stack.htm Der Stack Pointer paßt noch nicht. MFG Dieter
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
@ >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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.