mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik "Freqenzgenerator" mit Mega8 - Spannungssteller und Frequenzsteller nicht gleichzeitig


Autor: Stefan Hoffmann (santa87)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Hier mein Problem. Möchte mit nem Mega8 so ne Art Frequenzgenerator 
bauen (ich sage extra "so eine Art" weil ich weiß dass ich mit meiner 
Schaltung wahrscheinlich weder exakt die Amplitude noch die Frequenz 
erreichen kann. Es reicht aber so für meine Zwecke).
Das Problem ist. Der Spannungssteller arbeitet solange ohne Probleme wie 
ich den Timer Interrupt noch ausgeschaltet lasse. Sobald ich den Timer 
Interrupt einschalte bleibt PC2 ständig auf 1. Der Frequenzausgang 
klappt trotzdem.

Zur Erklärung:
PC2 steuert nen Transistor an der nen Zwischenkreis lädt. Zusammen mit 
dem Analog/Digital Wandler soll das ganze so ne Art 2 Punkt Regler 
bilden. Es wird nur das High-Byte ausgewertet.Über den Timer 
Interruptsteuert PB1  ebenfalls nen Transistor an, der dann die 
Spannungs im Zwischenkreis in ne Frequenz "zerhacken" soll klappt auch 
an sich.

Programm (Assembler) im Anhang. Über Hinweise wie ich einfacher 
Programmieren kann wäre ich auch dankbar. Bin Anfänger und mir per 
learning by doing selbstbeigebracht, doch am meisten interresiert mich 
warum der Spannungssteller nicht mehr funktioniert sobald ich den Timer 
Interrupt freigebe. Ich hoffe ihr könnt mir helfen. Vielen Dank im 
Vorraus.

Autor: H.J.Seifert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auf jeden Fall solltest du das SREG in der Timer-ISR sichern (und vor 
reti wieder herstellen)

#define sreg_bak r2
timer0_overflow:      ; Timer 0 Overflow Handler
  in sreg_bak, sreg
        com   Puls_Pause    ; Invertiert das Puls/Pause Register
  sbrs  Puls_Pause, 0    ; Überspringt wenn Bit0 im Puls/Pause Register 
gesetzt ist.
  cbi  PortB, 1    ; Setzt PortB Pin1 zurück.
  sbrc  Puls_Pause, 0    ; Überspringt wenn Bit0 im Puls/Pause Register 
nicht gesetzt ist.
   sbi  PortB, 1    ; Setzt PortB Pin1.
        out sreg, sreg_bak
reti          ; Springt zurück

Autor: Stefan Hoffmann (santa87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Stimmt. Vollkommen vergessen. Hat aber leider auch nicht geholfen.

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.