www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Empfänger- Servosignal mit Atmega 8 auswerten


Autor: Joachim H. (husky)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Joachim H. (husky)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
das Programm

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joachim H. (husky)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.