Forum: Mikrocontroller und Digitale Elektronik Timer auf 0 setzen!


von Rugby4ever (Gast)


Lesenswert?

Hallo
also ich habe mich soweit in die materie eingefunden, nur dass mir der 
befehl in assembler fehlt, mitdem ich den Timer auf 0 setzten kann(also 
er zählt wenn ich es will)! währe cool wenn ihr mir nochmal helfen 
könntet!!!

mfg rugby4ever

von bluebrother (Gast)


Lesenswert?

von welchem Controller redest du?

von Basti (Gast)


Lesenswert?

du musst das entsprechende regisster auf 0 setzen. beim mega8 und timer 
0 wäre es TCNT0

von antworter (Gast)


Lesenswert?

Da ich nicht weiß, welchen Mikrocontroller Du einsetzt, fällt die 
Antwort so allgemein aus wie Deine Frage:

Nimm den Assemblerbefehl, mit dem Du die Register anderer Module setzt 
und ersetze die Registeradresse durch die des Zählerstandes.

Welche Registeradresse dies ist findest Du im Datenblatt Deines 
Mikrocontrollers.

von johnny.m (Gast)


Lesenswert?

> nur dass mir der befehl in assembler fehlt
Noch mal (nachdem Du es in Deinem anderen Thread unter
Beitrag "Timer/Counter Setzen" anscheinend nicht verstanden 
hast): Es gibt weder in C noch in Assembler einen speziellen Befehl, um 
einen Timer irgendwie zu setzen (wohin auch immer). Du musst schauen, in 
welchem Steuerregister die entsprechenden Bits stehen, mit denen Du dem 
Timer sagen kannst, ob er laufen soll oder nicht (ich denke mal, das ist 
es was Du mit "er zählt, wenn ich es will" meinst). Dazu musst Du im 
Datenblatt des Controllers im Abschnitt, der sich mit dem Timer befasst, 
nachsehen und anschließend die entsprechenden Assembler-Befehle 
zusammensuchen, mit denen Du die Einstellungen am Steuerregister 
vornehmen kannst.

von johnny.m (Gast)


Lesenswert?

BTW: Wenn Du nicht für jede Frage einen neuen Thread aufmachst, wissen 
die Leute auch, wovon Du redest...

von Rugby4ever (Gast)


Lesenswert?

hi
ich habe hier mal ein programm geschrieben, weiß aber net ob das so 
funktionert weil mein nächstes problem ist, wie ich den zählerstand 
angezeigt bekommen kann!

.NOLIST
.INCLUDE "8515def.inc"
.LIST

.DEF  mp = R16
.def  w1 = R1
.def  w2 = R2
.def   w3 = R3
.def  z1 = R0
rjmp  main
main:
  ldi  mp,LOW(RAMEND)
  out  SPL,mp
  ldi  mp,HIGH(RAMEND)
  out  SPH,mp

  ldi  mp,0x00
  out  DDRD,mp

  ldi  mp,0xFF
  out  PORTD,mp

  ldi  mp,0xFF
  out  DDRB,mp
  out  PORTB,mp
loop:
  clr w1
  clr w2
  clr w3


  sbis  Pina,1
  rcall  Signal

  sbic   Pina,1
  rcall   Aus

  sbis  Pinc,2
  rcall  LED

  sbic  Pinc,2
  rcall  LEDaus

endloop:
  rjmp  loop

Signal:
  cbi   Portb,1
        ldi mp,0
  out TCCR0, mp
  ret
Aus:
  sbi   Portb,1
  ret
LED:
  cbi   Portb,2
  in      mp, TCCR0
  ret
LEDaus:
  sbi   Portb,2
  ret


von Rugby4ever (Gast)


Lesenswert?

ich gebe jetzt einen puls an Pina,1 und lasse mir erstmal den zustand 
mit einer led an portb,1 anzeigen. wenn der erste puls kommt, soll der 
timer auf 0 gesetzt werden und ab dann zählen! wenn jetzt ein puls an 
portb,2 kommt, soll der timer seinen wert in das register mp schreiben!
das was jetzt noch fehlt ist, dass er seinen wert mir ihrgenwie anzeigt!

von Karl heinz B. (kbucheg)


Lesenswert?

Ich sehe nirgends wo du den Timer überhaupt
einschaltest.
Warum folgst du nicht unserem Rat und siehst dir mal
die Tutorials etwas an?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR

Dafür wurden sie geschrieben (bzw. werden sie weiter geschrieben),
damit Anfänger mal einen Einstiegspunkt haben.

Auch das Datenblatt zu dienem µC wirst du brauchen. Das
kriegst du bei Atmel http://www.atmel.com, denn naturgemäß
enthalten Tutorials immer nur einen kleinen Auszug aus
den Möglichkeiten. Im Datenblatt ist aber alles beschrieben.
Nicht ganz so Benutzerfreundlich sondern mehr technisch.
Da greifen dann wieder die Tutorials. Aus den Tutorials
lernt man wie die Dinge grundsätzlich funktionieren und man
beut ein Grundverständnis auf. Mit diesem Grundverständnis
verlieren dann auch die Datenblätter ihren Schrecken, weil
man bereits einen Einstieg hat.

von Karl heinz B. (kbucheg)


Lesenswert?

Rugby4ever wrote:
> ich gebe jetzt einen puls an Pina,1 und lasse mir erstmal den zustand
> mit einer led an portb,1 anzeigen. wenn der erste puls kommt, soll der
> timer auf 0 gesetzt werden und ab dann zählen! wenn jetzt ein puls an
> portb,2 kommt, soll der timer seinen wert in das register mp schreiben!
> das was jetzt noch fehlt ist, dass er seinen wert mir ihrgenwie anzeigt!


Dann musst du dich entscheiden wie der Wert angezeigt
werden soll. Das richtet sich aber mehr als alles andere
nach den Möglichkeiten deiner Hardware: Welche Geräte
hängen wo dran und welche kann man für Ausgaben benutzen.
Das kann von simplen LED an einem Port bis hin zu einer
Ausgabe auf einer Grossbildleinwand in einem Zahlensystem
zur Basis 60 reichen.

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
Noch kein Account? Hier anmelden.