PWM Signal per UART ändern

Gast #348962
Lesenswert?
• ▲
▼
Hat vielleicht jemand einen Tipp für mich warum folgender Code nicht
funktioniert. Auf den empfang am UART wird auf jedenfall reagiert? (LED
toggled)
Aber die Variable PWM wird irgendwie nicht verändert... Komisch!
-----------------------------------------------------------

$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600

On Urxc Onrxd                                               'auf
Interrupt des UART reagieren, also wenn neuen Wert empfangen
Enable Urxc
Enable Interrupts

Dim I As Byte
Dim Pwm As Word
Dim Temp As Integer

Config Portb = Output
Config Portc = Output

'Konfiguration des PWM-Signals, das an PinB.1 generiert wird
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B
Pwm = Clear Up , Prescale = 1


Pwm = 0                                                     'erstmal
lampe an

Do
'Endlosschleife

Compare1a = Pwm

Loop
End



'ISR-Handler bei UART-Interrupt

Onrxd:
I = Udr                                                     ' in I
steht empfangenes Zeichen (1 Byte)
Toggle Portb.0
'lichtprogramme

If I = "1" Then
Pwm = 900
End If

Return

'----------------------------------------------------------------------- 
-------
Gast #348967
Lesenswert?
• ▲
▼
>Die Zahl 49 entspricht der "1".

Was ich gesagt habe...
Übrigens ist '1' das Zeichen mit der Nummer 49 des
ASCII-Zeichensatz.
Eigentlich müsste aber auch der Vergleich If I = '1' Then...
funktionieren.
Gast #348968
Lesenswert?
• ▲
▼
Also irgendwie scheint der Fehler in der Programmzeile

Compare1a = Pwm

zu liegen. Wenn ich diese auskommentiere, wird die Variable richtig
gesetzt.
Die Einstellungen für das PWM-Signal sind aber eigentlich korrekt. Da
läuft was faul. Auch habe ich beobachtet, sobald ich PWM verwende, mein
ATmega8 nach kurzer Zeit geresetet wird und die Programmabarbeitung
beginnt wieder ganz von vorn. Woran liegt das zum Henker???
Gast #348969
Lesenswert?
• ▲
▼
Habe das Ganze nochmals überprüft. Also sobald ich die
Compare1a-Anweisung benutze, wird mein ATmega8 andauernd geresetet.

Liegt das jetzt an meinem Programmcode. Ist doch eigentlich
ausgeschlossen.
Hat vermutlich was mit meinen FUSES zu tun. Vielleicht ist da irgend
eine zusätzlich RESET-Quelle eingestellt. Könnt ihr bitte mal in den
Anhang gucken.

Benutze einen externen Clock (4MHz) am XTAL1 Eingang.
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.