ATMega8 Rechtecksignal

OP #1195713
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
Gast
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"
Gast
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?
Gast
@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
Gast
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.".

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.