Forum: Analoge Elektronik und Schaltungstechnik ATMega8 Rechtecksignal


von Franz H. (12mhz)


Lesenswert?

HALLO!

Bin ziehmlich neu hier und hab da ein Problem:

Ich soll am PortC.0 ein 1:1 Rechtecksignal mit der Periodendauer 2560µs 
erzeugen.

Geg: CPU ATMega8/CPU-Takt 12Mhz
     Außerdem soll nur der Timer0 verwendet werden

Hab aber keine Ahnung wie ich das programmieren soll

Bitte um Eure Hilfe.
Wäre sehr nett,wenn Ihr mir helfen könntet.


LG Franz

von Michael (Gast)


Lesenswert?

Na so schwer ist das doch nicht. Mit Timer0 die Zeit messen und alle 
1280µs PortC.0 toggeln

von Franz H. (12mhz)


Lesenswert?

Danke das du gleich geantwortet hast, aber ich hab noch einpaar Fragen:
1) wie kommst du auf die 1280µs
2.) Wie toggel ich den PortC.0

Wäre sehr nett wenn du den Code posten könntest

LG Franz

von kollektorstrom (Gast)


Lesenswert?

1) wie kommst du auf die 1280µs
_    __    _
  |__|  |__|  |

|____| Dieser Ausschnitt ist eine Periode mit etwas mehr als 2000µs. Das Signal 
wechselt (am Anfang), in der MITTE, und am Ende den Pegel, also alle (etwas mehr 
als) 1000µs.

Ich weiß gar nicht wie man das erklären soll^^ Das weiß jeder 
Achtklässler.

2.) Wie toggel ich den PortC.0

Das wiederrum sagt dir das Datenblatt. Wenn ich mich nicht irre mit 
"com"

von hans (Gast)


Angehängte Dateien:

Lesenswert?

1280 = 2560 / 2

von kollektorstrom (Gast)


Lesenswert?

Sorry, mir ist noch was eingefallen (Bin leider kein son Crack^^)

MIt PMW würde das doch sicher am saubersten gehen? Oder schießt man da 
eher mit Kanonen auf Spatzen?

von Franz H. (12mhz)


Lesenswert?

DANKE, dass Ihr versucht habt mich ,,aufzuklären"
(hab trotzdem keine Ahnung vom Programmieren

von hans (Gast)


Lesenswert?

@kollektorstrom

PWM wäre möglich, aber nicht auf PIN C.0  und nicht mit Timer 0.

Besser wäre Ausgabe auf OC2 Einstellung toggle und Timer2 CTC 1280 µs
mit clear. Kein Interrupt. Bei Rechteck 1:1 am leichtesten.

gruß hans

von Michael (Gast)


Lesenswert?

Ich programiere keine Atmels, habe nur mit PICs zu tun. Deshalb kann ich 
dir leider keinen Code verraten der die Aufgabe löst.

Zum Thema "Mit PWM lösen". Öhm...ja...wieso und wie wollen denn einige 
hier einen Rechteck mit Tastverhältnis 50% mit ner PWM nachbilden? Ist 
das nicht ein wenig zu umständlich. Wenn ich das oben richtig deute, 
benötigt man dazu auch noch Timer2, laut TE soll aber nur Timer0 
verwendet werden. So würde ich es auf einem PIC machen (Wie oben ja 
schon angedeutet):

Mit dem Timer 1280 Sekunden (2560s/2) "messen" (eigentlich zählt man ja) 
und dann den Zustand des gewünschten Ports Toggeln, z.B. mit:
1
movlw    0b'00000001'
2
xorwf    PORTA

Was hab ich gemacht? Ganz einfach, ich hab den Accumulator mit 00000001 
geladen. Dann wird der Accumulator mit PORTA Exclusiv ODER-Verknüpft, 
d.h. es kommt immer nur dann eine 1 heraus, wenn beide Stellen 
unterschiedlich sind. Das Ergebnis wird in PORTA geschrieben.

Beispiel 1: PORTA = 0b'00000001', d.h. PORTA PIN 0 ist high, alle 
anderen low

Exclusiv-Oder-Verknüpfung des Accumulator mit PORTA:

PORTA      00000001
Accu       00000001
====================
PORTA_neu  00000000

Beispiel 2: PORTA = 0b'00000000', d.h. PORTA PIN 0 ist low, alle anderen 
ebenfalls low

Exclusiv-Oder-Verknüpfung des Accumulator mit PORTA:

PORTA      00000000
Accu       00000001
====================
PORTA_neu  00000001

So könnte man es machen. OK, man muss mit dem Timer 1280 Sekunden messen 
abzüglich der Zeit für das Toggeln des Pins, bei meinem obigen Beispiel 
bräuchte ein PIC für das schreiben der Konstante in den Accumulator, das 
Verknüpfen und anschließende Ausgeben an den PIN 3 Zyklen die der Zähler 
dann weniger zählen muss. Nehmen wir mal an der Zähler wird jede µs um 
eins erhöht dann muss man nur bis 1277 zählen, die letzten drei µs 
werden zum toggeln benötigt.
Wie das genau geht bekommst du aber noch heraus wenn du dich erstmal 
damit beschätigst. Am Anfang steht man da vor einem riesigen Wald und 
sieht lauter Stämme, erst bei näherem hinschaun erkennst du Buchen, 
Fichten, Eichen, Espen etc.pp. So ist es auch bei der 
Mikrocontrollerprogrammierung.  Wenn man anfängt denkt man nur "Boa, da 
steig ich ja nie hinter." und wenn man dann zwei/drei Tage dabei ist 
denkt man nur "Eigentlich ist das ja ganz tricky.".

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.