PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingabe als Interrupt? Geht das



hunni
14.08.2008, 10:06
Hallo zusammen,
ich stehe gerade davor, eine raketensteuerung zu bauen. Nun wollte haben, welches nur bei einer eingabe unterbrochen wird und nicht die ganze zeit wartet, bis ich eine eingabe mache und so lange das programm unterbrochen ist. Ich hoffe ich kann euch das hiermit noch verdeutlichen:

=========Programm Läuft=========
============================
Eingabe, programm wird unterbrochen und gegebenfalls die variablen geändert. Danach läuft das programm weiter
============================
============================

Ich hoffe hier versteht mein Problem und ich bedanke mich jetzt schon mal für eure Antworten =D>
Hunni

Vitis
14.08.2008, 11:06
welche eingabe, wie eingegeben, wo angeschlossen ...
softwreinterrupt gibts bei bascom nicht, subroutinen schon.

Stromi
14.08.2008, 11:10
Hilfe aufrufen, Suchbefehl ungefähr eingeben, hin und her schauen, ev. noch in den mitgelieferten Beispielen schauen und siehe da:
SERINT.BAS
Hoffentlich startet die Rakete nicht, davon haben wir genug auf der Welt....

hunni
14.08.2008, 18:44
also eins möchte ich mal eben klar stellen, ich baue Modellflugzeuge und Raketen. Ich will weder etwas in die Luft sprengen, ausserdem werde ich meinen Wehrdienst verweigern!! Das mal nur so für zwischendurch.

Ich habe mir das Programm angeschaut und simuliert. Es ist glaub nicht ganz das was ich mir vorgestellt hab. Noch mal zum mitschreiben:
Das Programm soll so lange laufen, bis ich eine Taste drücke und zwar über terminal. Nachdem ich dann meine eingabe gemacht habe, soll das Programm weiterlaufen.
Hunni :cheesy:

zerush
14.08.2008, 18:50
Was hat das mit dem Werhdienst verweigern zu tun? Werhdienst verweigern ist der größte Fehler den man machen kann, man verpasst einfach viel zu viel an Lebenserfahrung. Aber das ist ein anderes Thema!!!

Schau einfach mal ins Datenblatt von deinem Controller (welcher???). Dort steht auch drin, welche Interrupts es gibt. So z.B. auch für UART, SPI, ...

Das sollte dein Problem lösen.

hunni
14.08.2008, 19:02
Jeder der zur Bundeswehr geht, ist auch bereit Menschen auf Befehl zu erschießen und das sind für mich alles Mörder, naja egal.

Also es sollte entweder Atmega8 oder Atmega16 sein. Ich glaub die könnten das. Ich muss nur den Befehl wissen für Bascom, das andere soll meine Sorge sein. Hat nicht jemand so n tolles Programmbeispiel?
Das würde mir sehr helfen.

Hunni O:)

zerush
14.08.2008, 19:13
Du sagst also alle, die ihre Pflicht erfüllen, seinen Mörder? Geh in die Politik, änder das Gesetz und schaff die Wehrpflicht ab!

ABER: Nenn mich niemals einen Mörder!!!!!!!!!

Sorry, aber in diesem Punkt bin ich empfindlich...



Und nu: Back to Topic
Edit: Schau mal hier (https://www.roboternetz.de/wissen/index.php/Bascom_Interrupts)

hunni
14.08.2008, 19:27
wenn ich jetzt dich beleidigt habe, dann tut es mir leid und bitte fühl dich nicht persönlich angegriffen. Aber zum beispiel im Afganistan"einsatz" sehe ich keinen sinn! Die Amys gehen dahin bomben das Land dicht und die Bundeswehr darf es wieder aufräumen und sich in die Luft sprengen von terroristen lassen. Es war dar seit 20 Jahren Krieg und es wird in auch noch in 20 Jahren Krieg herschen. Ausserdem würde ich, wenn ich mal ganz angenommen, was aber nimals eintreten wird, dann würde ich zur Luftwaffe gehen wollen, doch dazu bin zu schlecht mit meiner Realschule.

Jetzt mal zurück zum thema: Ich glaub das hat mich doch weitergebracht.
Hunni :-k

zerush
14.08.2008, 19:31
Ansonsten habe ich zum Thema UART und Interrupt noch folgendes gefunden (mit Code):

http://www.rowalt.de/mc/avr/avrboard/06/avrb06.htm

Vielleicht hilft das ja auch...

Vitis
14.08.2008, 20:39
aha, dann sind Polizisten vermutlich auch potentielle
Mörder Deiner Meinung nach?
Die BW macht meiner Meinung nach nix anderes
als die Polizei, nur in größerem Maßstab.
Nicht der klein Bankräuber wird gejagt,
Sondern ein Gegner, der dem Allgemeinwohl
eines Landes schadet.
Man sollte schon unterscheiden ob Angriffskrieg
oder Verteidigung. Wenn man dafür sorgt, dass
in Afghanistan langfristig Ruhe herrscht steigt
die Chance, dass sich dort eine stabile Gesellschaft
etabliert mit gewählten Volksvertretern, was
Wirtschaftlich dem Land hilft und wir von dort nicht
mehr mit Terroristen, Extremisten und Rauschgift
überschwemmt werden ;)
Ausserdem ist der Dienst an der Waffe selbst nicht
mit Lebenserfahrung gemeint, sondern z.B. auch
mal das "Dienen" lernen, die gemeinschaft mit Leidens-
genossen während der Grundi zu 8t auf der Stube usw.

Luftwaffe ... da kommt mir n Lied in den Sinn von den
Onkelz ... Bomberpilot, bringe euch den Tod ...
10000m schneller als der Schall schau ich meinen Bomben
nach und warte auf den Knall ...

Das ist Mord. Infanterie, Heer ist da die sauberere Sache
Frag mal die Dresdner, Nürnberger

Zum Thema ... On URXC ist das Zauberwort für
UART Interrupt bei eingehenden Zeichen

hunni
15.08.2008, 08:35
also entweder ist es das nicht was ich suche, oder ich bin zu doof das zu verstehen. ich glaub ich muss mir das noch mal in ruhe durchlesen.

Ich bleibe bei meinen Entschluss nicht zur Bundeswehr zu gehen und werde auch auf demos gegen den Afganistan Krieg gehen. Ihr mögt ja (ganz)vielleicht recht haben, aber trotzdem!! BUNDESWEHR IST KRIEG!!!
das mit der Luftwaffe wollte ich nur mal, weil Modellbauer (Flugzeuge) bin.

Hunni

PicNick
15.08.2008, 09:38
Männer, habt euch wieder.
Die Sache ist zu differenziert, als dass man mit Schlagworten mehr als eine Streiterei erreichen kann.
Das Mindeste ist Abmarsch in Richtung "Offtopic" etc.

IMHO: Nicht nur Raketen, sondern die ganze Roboterei läßt sich auch für ganz grausliche Dinge mißbrauchen.

hunni
15.08.2008, 11:22
ok das thema is jetzt durchgekaut!!

mirco99
19.08.2008, 09:09
Du brauchst doch nur in deiner Programmschleife eine entprellte (debounce)Tasterabfrage durchführen.
Wenn Taster gedrückt gehezu.. in ein Subprogram.
Wenn diese bearbeitet wurde, macht dein Controler an der Stelle weiter wo er aufgehört hat.

Eine Tasterabfrage die durch Menschenhand ausgeführt wurde, braucht doch keine Echtzeit.

hunni
19.08.2008, 10:34
ja so wollte ich das ja auch machen, nur ich finde nich den richtgen befehl dafür. Das is mein Problem
hunni

Vitis
19.08.2008, 11:06
womit wir wieder da währen
was für ne taste, wie angeschlossen
an welchem pin des µC
taste per terminal, welche npegelwandler,
wie verdrahtet an welchem pin des µC ...
wenn der junge herr mal wüsste was er will
könnte man ja helfen, so ists ziemlich unmöglich

mirco99
19.08.2008, 11:40
also so würde ich es machen.
Ich habe gerade Mittagspause und kein bascom zur Verfügung.
vorher den Pin c0 oder einen anderen auf Eingang setzen.
do

Debounce Pinc.0 'Taster an Pin c0
if portc.0 = 1 then
Gosub Unterprogramm
end if

loop
end

Unterprogramm:
machirgendwas
return

Jetzt hast du einen entprellten Schalter, der beim loslassen einmal das Unterprogramm ausführt und danach im Hauptprogramm weitermacht.

Benutze einen Widerstand an diesem Port, um ein eindeutiges signal zu bekommen (Pull down), so das der Taster auf 5 V zieht und beim loslassen über den Widerstand auf 0V.



Benutze die Hilfe von Bascom. Ich war selber immer der Meinung, das mir so ne Standarthilfe nichts bringt.
Dokumentier jede Programmierzeile im Programm. Mit ' kannst du dir die erklärungen im Programm hinter jerder Zeile schreiben ohne das Bascom meckert.

So wenn ich was wichtiges vergessen oder falsch habe, bitte berichtigen.
Bin auch noch ein Anfänger!!!

Kauf dir ein Buch von z.B. http://www.rowalt.de/
Es erklärt den Mega 8 und hat alles mit Bascom Beispielen erklärt.
Hat mir auch den Einstieg möglich gemacht.

hunni
19.08.2008, 18:15
also ich will es euch noch mal erklären, was ich vorhab. Ich möchte ein einfaches Programm schreiben. Ich glaub im erklären bin ich nich so der Held.

Hier ein Programm:

Hauptprogramm:
Print "Hallo du daaaaa!!!" 'Mein Standard Satz.
IF am Terminal eine Taste gedrückt wird dann goto Nebenprogramm
Goto Hauptprogramm:

Nebenprogramm:
Input A
Writeeprom A
Goto Hauptprogramm:

Is jetzt kein richtiges Programm, aber ich hoffe ihr versteht mich jetzt was ich meine.
Wenn ihr es immer noch nicht wisst was ich meine, dann muss ich es anders machen.

Hunni

mirco99
20.08.2008, 07:30
Ähm,
dann beschreibe doch mal dein komplettes vorhaben.
Warum willst du in das Eeprom schreiben?
Was soll das Programm machen, wenn nicht die Taste gedrückt wird?
Was soll es machen, wenn du sie drückst?

Möchtest du etwas über die Serielle Schnittstelle an einen PC schicken ?
Oder willst du ein Diskplay anschließen?

Debounce Pinc.0 'Taster an Pin c0
if portc.0 = 1 then
Gosub Unterprogramm
end if
'print "Hallo"
loop
end

Unterprogramm:
machirgendwas
return

hunni
20.08.2008, 09:58
Das war jetzt nur ein beispiel. Er könnte auch einfach nur eine LED anschalten. Der Input erfolgt über Terminal.