Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingabe als Interrupt? Geht das
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
welche eingabe, wie eingegeben, wo angeschlossen ...
softwreinterrupt gibts bei bascom nicht, subroutinen schon.
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....
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:
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.
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:)
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)
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
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...
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
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
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.
ok das thema is jetzt durchgekaut!!
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.
ja so wollte ich das ja auch machen, nur ich finde nich den richtgen befehl dafür. Das is mein Problem
hunni
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
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.
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
Ä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
Das war jetzt nur ein beispiel. Er könnte auch einfach nur eine LED anschalten. Der Input erfolgt über Terminal.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.