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?
achso, meine hier, dass ich noch der 1 Sekunde nicht wie eigentlich gewünscht B1 anschalten kann, sondern erst nachdem Compare ihn einschaltet; mit ausschalten ist es ähnlich...
Du könntest einen Comparematch erzwingen. Geht /ging beim Mega8 im Special Function Register. Ob das beim Mega88 auch geht, weiss ich jetzt nicht,.
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
Guck dir mal die Beschreibung zum Register TCCR1A an (Seite 130). Mit den Bits COM1A0 und COM1A1 kann man das Verhalten des OCR-Pins festlegen.
Hallo, habe ich gefunden, nur wie ändere ich in Bascom einzelne Bits? Robert
Das Bascom-Manual kann man auch herunterladen... Vielleicht gibt es auch Tutorien, die sowas behandeln. Vielleicht gibt es in BAscom sowas wie "Setbit" oder "Clearbit".
Ich kann auch Assembler in BASCOM nehmen, ich kenn nur keine Befehle... Wie sieht so was aus, wenn ich z.B. 10000000 in 0x82 laden will. (0x82 ist laut Datenblatt S. 133 TCCR1C Timer/Counter1 Control Register C) Grüße Robert
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.
warst etwas schneller al sich... Tccr1c = &B10000000 und es funktioniert (128 auch)... habe einfach mal das gemacht, was ich zuvor ja schon immer mit ddr und port gemacht habe, habs nur nie mit Tccr1c und anderen getestet Danke!!!
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.