Frage zu AVR-ATmega8L, Lösung per Interrupts sinnvoll? Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Frage zu AVR-ATmega8L, Lösung per Interrupts sinnvoll? |
|
|
|
|
BID = 412891
BlackLight Inventar
Beiträge: 5321
|
|
Hallo,
ich hab mich erst kurz in µC eingelesen und noch kaum einen Überblick.
(Blutiger Anfänger im µC-Befehlssatz trifft es besser. Elektronik ist kein Problem, mit Pseudo-Assembler durfe ich auch mal rumspielen und der Unterschied zwischen Input/Output, Analog/Digital und Port/Pin ist auch klar.)
Ich wollte folgende Kleinigkeit einen ATmega8L machen lassen und wäre hoch erfreut, wenn mich jemand in die richtige Richtung schubsen könnte:
IO:
2 Eingänge A&B (Digital und je 1 Bit; per CNY17-Optokoppler)
1 Ausgang Z (auch Digital, soll per Logik-Level MOSFET ein Reed-Relais dran.)
Logik:
Wenn sich am Eingang A der Pegel ändert (Wird relativ konstant mit 1 Hz und etwa 50:50 Duty-Zycle sein) soll ca 10 s lang die Impulse an A gezählt werden.
Nach den 10 s sollte abhängigt von der Anzahl der Wechsel und dem Pegel an Eingang B der Ausgang Z für ca 5 s aktiviert werden.
Falls jemanden an den Details interesiert ist, es soll eine PC-Fernbedienung werden.
An A kommt ein Handy, bzw. der Vibrationsmotor-Anschluss, an B per USB-5V der Status vom PC und das Reedrelais darf den Ein-/Ausschalttaster spielen.
Ist es sinnvoll den Großteil des Problems per Interrupts zu lösen?
Also Eingang A löst z.B. 'INT0' aus, zählt ein Register um eins höher und falls es 0 war wird noch ein Timer gestartet.
Zum Beispiel TIMER1 nehmen und per 'TIMER1 COMPA' die 10 s realisieren.
'TIMER1 COMPA' Schaut dann nach was in dem Register steht und was an Eingang B anliegt und spricht das Relais an.
Ein 'TIMER0 OVF'(Timer0 Überlauf) würde das Relais dann wieder abschalten, alternativ erledigt Eingang B per INT1 das Ausschalten.
---
Kann man es so realisieren , hat jemand Tipps oder eine einfachere Lösung? |
|
BID = 412893
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
|
Das kann man ohne weiteres mit Interrupts machen, aber wenn du Anfänger bist, rate ich dir eher dazu, alle Interrupts abzuschalten und die Logik in eine Endlossschleife zu packen.
So wird es wahrscheinlich für dich übersichtlicher und Interrupts sind, da sie an unvorhersehbarer Stelle aufttreten, schwieriger zu debuggen.
Außerdem sind Interrupts empfindlich für kurze Störimpulse.
Da deine Timer ziemlich langsam sind, kannst du sie auch problemlos in Software realisieren.
Am einfachsten wird das, wenn du dafür sorgst, daß deine Hauptschleife eine feste Zeit, z.B. 5ms (aber 50..100ms sind der Aufgabenstellung vielleicht angemessener), für einen Durchlauf braucht.
Dazu kannst du z.B. am Ende der Hauptschleife warten, bis ein Hardwaretimer durch 0 geht.
Dann kannst du in der Software fast beliebig viele Abwärtszähler als Timer programmieren.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
[ Diese Nachricht wurde geändert von: perl am 10 Mär 2007 11:21 ] |
|
BID = 413043
cholertinu Inventar
Beiträge: 3755 Wohnort: CH
|
Für die ersten Gehversuche rate ich dir auch eher zu einer Lösung ohne Interrupts. Es ist einfacher, sich in ein neues Thema einzuarbeiten, wenn man nicht viele "Baustellen" gleichzeitig offen hat.
Interrupts sind wunderbare Hilfsmittel, wenn sie richtig eingesetzt werden, sind aber auch eine grosse Fehlerquelle, ganz besonders für Anfänger.
|
BID = 413099
BlackLight Inventar
Beiträge: 5321
|
perl und cholertinu, vielen Dank für die Ratschläge.
Ihr lagt beide richtig, die Hauptschleife und ein Unterprogramm per ASM haben mich die letzten paar Stunden genug beschäftigt, bzw. eher die passenden Befehle und die Fehler zu finden.
Aber so langsam wird es was.
Falls jemand Interesse an dem fertigen Programm hat, das in 'myAVR Workpad SE' geschrieben ist, kann ich es ja posten.
|
BID = 413575
cholertinu Inventar
Beiträge: 3755 Wohnort: CH
|
Zitat :
BlackLight hat am 11 Mär 2007 00:36 geschrieben :
|
Falls jemand Interesse an dem fertigen Programm hat, das in 'myAVR Workpad SE' geschrieben ist, kann ich es ja posten.
|
Nur zu, evtl. bekommst du noch ein paar Tipps dazu.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 3 Beiträge verfasst © x sparkkelsputz Besucher : 182421955 Heute : 994 Gestern : 5459 Online : 248 29.11.2024 8:52 6 Besucher in den letzten 60 Sekunden alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0348920822144
|