mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega 16 Timer1 OC1A Problem


Autor: Harald B. (haribo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Ich experimentiere mit BASCOM und und einem Atmega 16 und deren Timer1 
rum und bin da eher ein Anfänger.
Dazu habe ich den Timer1 so konfiguriert, das bei einem Compare A der 
Ausgang OC1A (pin19) auf 1 gesetzt wird. Das funktioniert soweit auch, 
aber wie kann ich diesen Pin denn nun wieder (per Programmcode) zurück 
auf 0 setzen ? Ich check das nicht...

Vielen Dank schon mal für die Hilfe,

Gruss,
haribo

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage nach dem Wie hängt von dem Wann ab. Wann soll der Pin zurück 
auf 0 gesetzt werden?

Autor: lightninglord (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt die Möglichkeit den Pin bei einem CompareMatch zu togglen ( also 
das er immer den zustand ändert von 0->1 und bei 1->0 ) oder aber du 
kannst den Timer so einstellen das er wenn er bei Timer = 0 zu zählen 
anfängt den Pin ebenfalls löscht. Dazu rate ich dir das Datenblatt zu 
lesen ( ab Seite 100 ), dort stehen alle möglichkeiten beschrieben.

Autor: Harald B. (haribo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten.

Toggeln kommt nicht in frage.
Der Zeitpunkt des zurücksetzens wird im Programm bestimmt.
Der OC1A wird also im timer1 per Compare A gesetzt, bleibt gesetzt 
(funktioniert auch) und soll dann im Programm irgend wann zurückgesetzt 
werden (kein fixer Zeitpunkt). In weiterer Folge soll der Timer1 den 
dann auch wieder setzen können.
(Timer1 soll immer laufen).

Gruss und Dank
Haribo

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harald B. schrieb:

> Toggeln kommt nicht in frage.
> Der Zeitpunkt des zurücksetzens wird im Programm bestimmt.
> Der OC1A wird also im timer1 per Compare A gesetzt, bleibt gesetzt
> (funktioniert auch) und soll dann im Programm irgend wann zurückgesetzt
> werden (kein fixer Zeitpunkt). In weiterer Folge soll der Timer1 den
> dann auch wieder setzen können.
> (Timer1 soll immer laufen).

Willkürliches Ausschalten von OC1A:

a. Bei Timer/Counter1 Control Register A – TCCR1A Normal port operation, 
OC1A/OC1B disconnected einstellen.
b. Pin 19 ggf. über DDR als Output einstellen (sollte bereits geschehen 
sein) und "manuell" LOW ausgeben.

Willkürliches Wiedereinschalten von OC1A:

Änderung von a. wieder rückgängig machen

Autor: Marcus Müller (marcus67)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch das ist natürlich möglich:

- Timer Control Register auf "Clear Pin on Match" einstellen
- Per FOC1A Bit das Bit setzen
- Timer Control Register wieder auf "Set Pin on Match" zurückstellen

Gruß, Marcus

Autor: Harald B. (haribo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Vorschläge.
Der Pin ist natürlich schon im DDR als Ausgang per Programmcode 
eigestellt. Aber selbst wenn ich das nicht mache, schaltet der Timer den 
pin trotzdem. Die richtige DDR einstellung dürfte hier wohl der Bascom 
selbst villeicht mitmachen.

Ich werd das ganze morgen mal testen und hier die Ergebnisse berichten. 
Heute habe ich keinen bock mehr...
;-)
Ürsprünglich dachte ich, das dies einfacher gehen müsste, also mit 
löschen bzw. setzen eines entsprechenden Bits in einem Register. Muss 
scheinbar doch "über Umwege" gemacht werden.

Gruss, Haribo

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Die richtige DDR einstellung dürfte hier wohl der Bascom
>selbst villeicht mitmachen.

Nein. Das hängt davon ab, wie das Pin konfiguriert ist -> COM-Bits im 
TCC-Register. Wenn die Bits nicht beide 0 sind (disconnected) kannst du 
DDRx setzen bis du schwarz wirst.
Die Variante von Marcus ist die einzig mögliche. Nimm dir mal das 
Datenblatt vor und lies dir das Kapitel über den Timer durch. Der Rest 
schadet auch nicht.

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.