www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Attiny - Variablenübergabe aus Subroutine erfolgt nicht


Autor: Georg B. (schorschi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen
ich habe da ein Problemm mit einem Attiny45.
An Port PB2 nehme ich mit dem INTO Interrupt einen externen Puls auf und 
Zähle ihn hoch. Nach einer abgelaufenen Zeit erzeugt der on Timer1 isr 
einen Überlauf und nach Durchlauf einer Schleife, da nur ein 8Bit Timer 
zur Verfügung steht und ich eine Zeit von 1 Sek brauche, erfolgt die 
Übergabe des Zählwertes an eine Variable in einer Subroutiine und setzt 
den Zählwert wieder auf Null. Die eigentliche Berchnung erfolgt im 
Hauptprogramm doch da kommt der Variablenwert nie an.

Kann mir einer eine andere Lösung aufzeigen ????
Gerne würde ich den kleinen Tiny beibehalten. Sofern es an der Schleife 
in der Interruptroutine liegt werde ich wohl einen größeren Tiny mit 16 
Bit Timer nehmen müssen !!!!

Danke für Eure Mühe

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt's bei Bascom auch sowas à la volatile?

Autor: schorschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
was ist das ??? da habe ich keine Ahnung???, bin Anfänger auf Bascom.
kannst du das kurz erklären ???!!!

Danke

Autor: derwarze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach kurzen Überfliegen des Listings fälltmir auf das aus der IR auf 
eine Printausgabe gesprungen wird. Das ist aber nicht gut da Sprünhe aus 
der IR vermieden werden sollten und andererseits die Print Ausgabe 
verhältnissmässig viel Zeit beansprucht.
Eine Variable als solche wird ja gar nicht übergeben.
Setze doch einfach eine BitVariable die dann im Hauptprogramm wenn sie 
gesetzt ist in das Unterprogramm springt. So kommmt der Zeitablauf der 
IR nicht aus dem Tritt.

Autor: schorschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
selbst wenn ich die Print Ausgabe komplett herausnehme gehts nicht. Im 
Listung ist auch die INTO Isr versehntlich auskommentiert.
Die Variable um die es geht ist die Zaehlerirq0 die wird in "On Int0 
Irq0" hochgezählt und dann in der "On Timer1 Timer1_isr" mit einer 
Schleife zur Verlängerung der Zeit auf eine Sek. ausgegeben. Der Sprung 
in die Subroutine Aktu dient rein der Übergabe an die Variable 
"Bydrehfrequenz". die Variable Bydrehfrequenz soll mit in den 
Haupprogrammteil "Do - loop" übernommen werden und dort als Teil einer 
Berechnung dienen. Doch ist die Variable Bydrehfrequenz im 
Hauptprogrammteil wieder leer, also Null.
Die Variable habe ich mit DIM Bydrehfrequenz as Byte deklariert, es sind 
nur Frequenzen bis 150 Hz zuerwarten. Mit der DIM Deklarierung sollte 
die Variable doch überall im Programm verfügbar sein.???????

Zu meiner Schande......sehe ich gerade das ich ein Testprog angehängt 
habe in der ein Teil auskommentiert ist aber für meine 
Beschreibung/Berechnung gebraucht würde.

Vieleicht steige ich noch dahinter ich werde es mal mit einen Tiny26 
testen der hat einen 16 Bit Timer und sobrauche ich zumindest keine 
Schleife in der "On Timer1 Timer1_isr.

Hat noch einer ein guten Tipp für einen Anfänger

Autor: Schorschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
auch nach weiteren Tests gehts auch mit dem Tiny26 trotz 16-Bit Timer 
nicht.
Nach Hochzählen des Int0 mit incr in der Variable Zaehlerirq erfolgt der 
Timerüberlauf nach 1 Sek und der Wert von Zaehlerirq wird in eine 2te 
Variable geschrieben. Der Inhalt der Variablen sowohl Zaehlerirq als 
auch die 2te variable wird aber nicht im Hauptptrogramm übernommen. Ich 
habe schonmal was von Overlay in bascom gelesen und frage hier mal die 
Profis ob die mehr wissen.

Hilfe !!!!!!!!!!!1

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.