OC1A schalten trotz aktivem Compare? Wie?

Gast #357922
Lesenswert?

Hallo,

gibt es eine Möglichkeit bei einem ATmega88 den PIN B1 (OC1A) im
Programmteil (während Interrupt) zu schalten (an oder aus), obwohl
Compare aktiviert ist?

Ich muss nämlich den PIN aktivieren, um etwas zu schalten und ihn dann
über Compare wieder auszuschalten.

Toggle kann ich nicht nehmen, da ich den PIN während eines Interrupts
schalten muss, aber dessen Zeitpunkt nicht genau vorher weiß.

Nutze zur Zeit BASCOM und damit bekomm ich´s nicht hin.

z.B. folgendes geht nicht:

$regfile = "m88def.dat"
$crystal = 8000000

Config Timer1 = Timer , Prescale = 1024 , Compare A = Set

Compare1a = 60000

Ddrb.1 = 1
Portb.1 = 0

Do

Wait 1

Portb.1 = 1

Wait 10

Loop

End


Kann man da irgenwie was zurücksetzen, um zwischendurch den
Schaltvorgang zu machen?
Gast #357925
Lesenswert?

Hallo,

habe glaub ich was passendes im Datenblatt gefunden. Jetzt müsstet ihr
mir nur Helfen, das Ganze in BASCOM umzusetzten...

Und zwar ist es mit FORCE Output Compare möglich vorzeitig den PIN zu
schalten.

Siehe Datenblatt ATmega88 Seite 118 (14.6.1 allgemeine Infos zu FCO),
Seite 130 (Register, wo die verschiedenen Compare Modi definiert sind)
und Seite 133 (Register, um FCO zu aktivieren).

Wie kann ich in BASCOM diese Register gezielt ansprechen/schreiben (um
z.B. FCO zu aktivieren); bistimmt nur mit ein paar Assemblerzeilen.
Was müsste ich da schreiben (kenn mich leider gar nicht damit aus;
Befehl und Bit-Muster helfen mir bestimmt schon weiter...

Vielen Dank!

Robert
Gast #357930
Lesenswert?

1000000 binär = 128 dezimal = 80 hexadezimal
Unter der Vorraussetzung, dass man in Bascom Register mit ihrem Namen
anspricht, müsste der Aufruf also wie folgt lauten:

TCCR1C = 128

Also mit einer Dezimalzahl. Die anderen Bits muß man dann ihrem Wert
entsprechend dazuaddieren.
Wie Bascom Hexadezimal- oder Binärzahlen codiert, ist bestimmt im
Handbuch beschrieben...
[subjekte Meinungsäusserung]
Ich hab es mir irgendwann mal aus Interesse herunter geladen: 32MB
>700Seiten, nur um eine Befehlsübersicht von Bascom zu haben. Dann muß
man auch noch die Funktionen des Controllers aus dem Datenblatt
herausfinden und noch herausfinden, wie man sie am besten einsetzt.
Da lobe ich mir doch C oder Assembler, für die es im Datenblatt in der
Regel sogar Beispiele gibt.
[/subjektive Meinungsäusserung]
Zusammenfassen kann ich dazu nur sagen:
Eigne dir die Grundlagen (Vokabeln) der von dir gewählten
Programmiersprache möglichst schnell an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren