www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme INT in BASCOM


Autor: AVR Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
habe hier ein kleines Problem:
Sobald in meinem Prog ein bestimmtes ereignis vorkommt aktiviere ich
INT1 und gebe über pind.6 daten aus. Die Daten sollen immer geschickt
werden wenn ich an INT1 eine steigende Flanke habe. Das Funktioniert
auch ganz gut nur arbeitet der Controller ja im Hintergrund weiter so
dass es zu Fehlern bei der ausgabe kommen kann.

Meine Frage: Kann man es irgendwie schaffen dem Controller zu sagen
dass er nur die ISR auszuführen hat und sonst nix anderes?
Konkret nochmal: Ich will dass, sobald die ISR aktiviert ist dass der
Controller nur diese Ausführt (und sonst nix) bis in meinem Fall X=68
ist und danach per Goto in ne andere Sub.

Bin ziemlich am verzweifeln.
Freu mich schon auf eure antworten.
Gruß
AVR Newbie


hier mal ein Codestück:

Config Int1 = Rising
On Int1 Geben
Enable Interrupts

......

Reset Portd.5
Enable Int1


Geben:
Incr X
Portd.6 = G(x)

If X = 68 Then
Set Portc.0
Set Portd.5
Disable Int1
Goto Rto
End If

Return
Return

rto:
........

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wusste noch garnicht, dass ein avr 2 sachen gleichzeitig ausführen
kann...
der uC macht immer nur eine sache zur gleichen zeit, alles andere wird
solange eingefroren und nach dem int fortgesetzt

Autor: AVR Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ja schon nur reagiert, d.h. die ISR wird ja nur ausgeführt wenn sich am
INT ne steigende Flanke ergibt.
wenn diese Ausgeführt ist geht er wieder dahin zurück wo man ihn
rausgeholt hat.
Ich will jetzt aber, dass sobald einmal die ISR aktiviert ist NUR noch
diese ausgeführt wird bis X=68.
Also bei jeder Flanke in die ISR ansonnsten nix tun.

Gruß
AVRNewbie

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da spielen noch andere Faktoren eine Rolle.

- Gibt es noch andere Interrupts im Programm? (z.B. Timer)
- Wie schnell hintereinander kann so ein Ext.-INT anliegen?
- Wie wird der Int erzeugt? (doch nicht etwa von einem mechanischen
  Schalter?)

Viele meiner Programme sehen im Hauptprogramm so aus:

main: rjmp main ;Nix tun...

Denn wenn nicht allzuviele Dinge (quasi-) gleichzeitig zu tun sind,
dann läuft die eigentliche Arbeit in einem Timer-Int. Man muss nur
darauf achten, dass "sich die Katze nicht in den Schwanz beißt", also
das Programm nicht länger dauert als der Inerruptabstand ist. Sind dann
noch andere zeitkritische Int's erforderlich, dann mach' ich diese
ISRs extrem kurz und setze im Timer-Int das I-Flag, worauf andere Ints
höhere Priorität haben, den Timer-Int also unterbrechen können.

Das geht aber nur, wenn man selbst die Übersicht über die Ressourcen
behält, also besonders in ASM. Überlässt man das einem Compiler, behält
man die Übersicht nur, wenn man den Compiler und seine Arbeitsweise sehr
gut kennt.

...

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann setze in der ISR ein Flag,
werte dieses im Hauptprogramm aus und verzweige in deine
Ausgaberoutine. Setze das Flag erst zurück, wenn diese Arbeit erledigt
ist.

...

Autor: Günter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

..oder schaue dir mal das Beispiel INT0.BAS (wird in dem Ordner
Samples von BASCOM mitgeliefert) an.

Gruß

Günter

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.