Empfänger- Servosignal mit Atmega 8 auswerten

OP #1205107
Lesenswert?
• ▲
▼
Hallo Forum,

habe eine Verständinsfrage.

Möchte ein Empfängersignal mit einem Atmega 8 auswerten.
Tackt 3,68640 MHz

Programmablauf:

- (INT1) Interrupt bei steigender Flanke
  dieser Startet einen Timer 0

-OVF wird mitgezählt

- wenn kein high Signal am Pin = zählung überläufe ist zuende

-Auswerten (Sprungbefehle) nach der Anzahl der OVF Durchläufe

Habe das Programm im AVR Studio simuliert.
Wenn ich den Empfänger anschliesse reagiert der Atmega 8 nicht auf die 
Impulsänderung wenn ich am Sender das Signal verändere.

Wenn ich eine Rudermaschine betreibe funktioniert diese, somit sollte 
der Empfänger funktionieren.

Habe eine Frage zum Pull up.

Wenn ich den PinB,3 (eingang für INT1) auf Pull up schalte und auf 
steigende Flanke einen Interrupt auslösen möchte, macht das Probleme ?
Wenn das ankommende Signal auch einen high Pegel hat  ?

Das Signal müsste doch das gleiche sein als wenn ich eine Servo 
betreibe.

_!--!___!--!__

einen high Impuls von 1ms bis 2ms dann low Impuls bis die Periode von 
20ms voll ist , dann wieder high.....

Habe die Fues bit schon geändert von VCC 4.0  auf 2,7

Gibt es eine Möglichkeit im AVR Studio 4.0 ein wechselndes Signal wie 
das Eingangssignal zu simulieren ?.

Für einen Tipp wäre ich echt dankbar

vielen Dank im Voraus

Joachim
Angehängte Dateien:
Gast #1205123
Lesenswert?
• ▲
▼
>Möchte ein Empfängersignal mit einem Atmega 8 auswerten.
Zum Millionsten Mal...



>Gibt es eine Möglichkeit im AVR Studio 4.0 ein wechselndes Signal wie
>das Eingangssignal zu simulieren ?.

jein: Man kann nach einer gewissen Zeit manuell den Portpin-Zustand 
ändern.

Besser/einfacher wäre es, das InputCapture-Modul des Mega8 zu benutzen.
Dazu gibt es auch diverse Beispiele hier im Forum.

Dein Programm habe ich mir nicht angeguckt (.aps dürfte ein 
AVRStudio-Projekt sein? Zum Angucken reicht der Quellcode.)
Gast #1205136
Lesenswert?
• ▲
▼
Man sollte nicht zu lange tippen...(da wird zwischendurch dann der Code 
gepostet...;)

Wie wäre es denn, wenn du erst mal den Timer startest und einfach laufen 
lässt.
In der Hauptschleife hast du dann zwei bis drei Werteschleifen:
die erste wartet auf einen L-Pegel an einem Eingangspin (als Sicherheit, 
falls der Controller mitten in einem Puls mit der Arbeit beginnt)

die zweite wartet auf einen H-Pegel am gleichen Eingangspin.
Wenn dieser Pegel erkannt wurde, speicherst du den Timer-Wert ab (man 
könnte den Timer auch jetzt erst starten).

die dritte Warteschleife wartet wieder auf einen L-Pegel am Eingangspin.
Wird der L-Pegel erkannt, wird wieder der Timer-Wert (in einer anderen 
Variable) gespeichert.

Subtrahiert man nur den ersten Wert vom zweiten erhält man die Anzahl 
der Taktzyklen, die der Controller zwischen den beiden Flanken getaktet 
wurde.

So habe ich das damals bei einem PIC gemacht, weil der keine vernünftige 
Interrupt-Struktur bot. Mehr passierte in dem Programm auch nicht bis 
auf die Anzeige des Steuerknüppelposition anhand von 8 LEDs (simple 
Division-durch-Subtraktionsschleifen-Routine).

Für einen Anfänger sollte das ein einfacher Einstieg sein, ohne gleich 
Probleme mit Interrupts zu bekommen.
OP #1207506
Lesenswert?
• ▲
▼
Danke STK500-Besitzer,

für deine Tipps. Vielleicht braucht der Timer eine bischen Zeit ,um sich 
einzuschwingen zu können. Wenn die Signale kurz sind kann er vielleicht 
den Impuls nicht richtig auswerten.


Und für das Schlagwort "InputCapture-Modul " werde ich mich im Forum 
einlesen.

Danke für die neuen Denkanstösse !!!

Gruß
Joachim

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.