Hallo, ich muss ein Projekt für den 80535 realisieren unter Verwendung des Timer 2. Vorerst möchte ich nur R0 alle 3 Sekunden inkrementieren, was ich über die 16-Bit Auto-Reload-Funktion des Timer 2 realisieren möchte. Leider zählt R0 aber extrem schnell hoch. Kann es sein, dass Keil im Debug-Mode nicht mit 12 Mhz sondern viel schneller arbeitet? Oder liegts doch an meinem Code (siehe Anhang)? Falls es an Keil liegt: Welche Möglichkeiten gibt es, das Programm mit 12 MHz Oszillatorfrequenz zu testen? Vielen Dank für eure Hilfe! Gruß Markus
Hast Du denn überhaupt keine Kenntnisse über den grundsätzlichen Programmaufbau ? - Main-Schleife fehlt - zu Anfang sollte man hinter die Interruptvektoren springen Peter
Hab den Code nur auf das Wesentliche gekürzt... Aber jetzt nochmal mit mehr Code :) Markus
Ich kenne den 535 nicht, aber beim AT89C52 komme ich auf: 12MHz 2 50000 / 60 = 2Hz Peter
Erstmal vielen Dank für deine Antwort! Könntest du die Rechnung bitte kurz erklären? Unser Dozent hat uns das folgendermaßen erklärt: Wenn man als Autoreloadwert 15.536 festlegt, zählt der 16-Bit-Timer noch 50.000 Schritte ms hoch (da er ja bis 65.536 zählt). Bei 12 MHz benötigt er für 50.000 Schritte 50 ms (pro Schritt 1 us). Stimmt das so nicht? Jedenfalls zählt das Register trotzdem sehr viel schneller hoch.. 1 kHz käme da eher hin :/
" 1 kHz käme da eher hin" Achso, hätste doch gleich sagen können. Du must noch das Interruptflag zurücksetzen. Nur bei T0 und T1 wird es automatisch gelöscht, nicht aber bei T2. Peter
Kann mir vielleicht noch mal jemand erklären / resp. bestätigen, dass ich das mit den Interrupt-Zeiten richtig verstanden habe ? Bei einem 4 MHz-Takt und einer Vorteilung von 256 komme ich auf einen Takt von 15,625kHz. Das ist die Frequenz, mit der das Register von 255 bis 0 runtergezählt wird. Bei 0 erfolgt dann erst der Interrupt ? d.h. Der Interrupttakt läge dann bei 61,27 Hz (15625/255) oder ist das dann 15625/256 ?
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.