Counter und schwer von Begriff

Gast #59306
Hallo,

ich teste gerade mit AVRStudio den Simulator für den ATMega16.

Ich möchte gerne den Counter 0 verwenden. Dieser soll die Impulse am
Eingang PortB Pin0 zählen (PB0).

Soweit ich das Manual verstanden habe, sollte TCCRO mit 0x00 als
Counter im "Normal Mode" funktionieren.

Also folglich toggle ich PB0 softwaremäßig, aber der Zähler zählt
nicht:

.include "m16def.inc"
.def null = r16
.def temp = r17

; Initialisierung vom Counter0
  ldi NULL,0x00
  out TCCR0,NULL
  out TCNT0,NULL
  ldi temp,0x00
  out TCCR0,temp

loop:
  ldi temp,0x00
  out portb,temp
  ldi temp,0x01
  out portb,temp
  rjmp loop

Geht das nicht im Simulator, oder ist die Initialisierung vom Counter 0
einfach Quatsch???

Der ATMega16 hat doch 3 Timer/Counter:

Eingang für den Counter 0 -> T0 auf PB0
Eingang für den Counter 1 -> T1 auf PB1

Kann mir einer sagen, wo der Eingang für Counter 2 ist, sprich T2?

Schon mal Danke
Gruss
Marc
Gast
auf jeden Fall ist die Initialisierung von TCCR0 falsch, schreibst du da
"0" rein, bleibt der Zähler stehen. Für externes Zählen muss 0x06
(falling edge) oder 0x07 (rising edge) da stehen.
Ob das überhaupt klappt, wenn du den Pin per Software toggelst, kann
ich dir so nicht sagen (macht auch keinen Sinn, kannst ja gleich einen
reinen Softwarezähler nehmen).
Gast
Hallo,

ich habe die Initialisierung von TCCR0 mit 0x06 schon ausprobiert,
funktioniert aber auch nicht.

Mit dem Toggeln per Software ist nur ein Test, daß Ganze dient später
dazu Inkremente von einem Reflexkoppler aufzunehmen und anschließend
eine Regelung für eine Positionierung durchzuführen. Da für mich
ziemlich viel Neuland dabei ist, wollte ich es eben mal simulieren.

Eventuell muß ich dann eben auch den Counter simulieren...

Gruss
Marc
Gast
also vom Portschaltbild her sollte es funktionieren, da der
entsprechende Zählereingang direkt am Pin liegt, sollte dem Zähler also
wurscht sein, ob der Pin von "innen" oder von "aussen" getoggelt
wird. Du hast aber vergessen, den Port auch als Ausgang zu schalten
(sbi DDRx.x), mit deinem Programm erscheinen die Ausgaben nicht am Pin.
Gast
Das war es, nachfolgendes Programm funktioniert auch im Simulator. Wenn
man allerdings den PB0 als Eingang schaltet (so wird es später mal
gebraucht), dann läuft der Counter nicht hoch -- ist aber irgendwie
logisch.

Danke crazy horse.

Gruss
Marc

--
.include "m16def.inc"
.def null = r16
.def temp = r17

  ; Initialisierung vom Counter0
  ldi NULL,0x00
  out TCCR0,NULL
  out TCNT0,NULL
  ldi temp,0x06
  out TCCR0,temp

  ; Initialisierung des PB0 als Ausgang
  ldi temp, 0x01
  out DDRB, temp

loop:
  ldi temp,0x00
  out portb,temp
  ldi temp,0x01
  out portb,temp
  rjmp loop
Gast
So, jetzt funktioniert es auch als Eingang !!! Der Unterschied liegt
darin, daß nicht der PortB getoggelt wird, sondern der PinB.

Nochmal die Änderung, dann ist aber gut...

.include "m16def.inc"
.def null = r16
.def temp = r17

  ; Initialisierung vom Counter0
  ldi NULL,0x00
  out TCCR0,NULL
  out TCNT0,NULL
  ldi temp,0x06
  out TCCR0,temp

  ; Initialisierung des PB0 als Eingang
  ldi temp, 0x00
  out DDRB, temp

loop:
  ldi temp,0x00
  out pinb,temp
  ldi temp,0x01
  out pinb,temp
  rjmp loop

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.