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
>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.)
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.
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
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.