Bascom: Timer 2 Problem mit Atmega 644 (nach Tausch von Atmega8)
Hallo,
ich habe eine Aquarium Steuerung angefangen, die einzelnen Komponenten hatten soweit auch funktioniert.
Beim "zusammenfügen" mit Menü Struktur, ist mir dann der Speicher ausgegangen.... Dann habe ich alles neu aufgelötet,
diesmal mit dem Atmega 644 anstellte des Atmega 8.
Vorher hatte ich einen 8MHz Quarzoszillator, jetzt einen 16Mhz.
Der Timer für den Sekunden Takt und für das PWM Signal funktioniern jetzt nicht mehr. (zuerst aber das PWM )
Ich verwende Bascom Basic.
Der Code sieht im Moment ca. so aus:
Hat da jemand eine Idee?
Ich messe immer nur volle 11 V an Pind.7 (OC2).
Durch das einstellen des Registers OCR2 von 0-255 möchte ich die Spannung von 1-11V erreichen.
Besten Dank vorab!
Hallo,
ich habe eine Aquarium Steuerung angefangen, die einzelnen Komponenten hatten soweit auch funktioniert.
Beim "zusammenfügen" mit Menü Struktur, ist mir dann der Speicher ausgegangen.... Dann habe ich alles neu aufgelötet,
diesmal mit dem Atmega 644 anstellte des Atmega 8.
Vorher hatte ich einen 8MHz Quarzoszillator, jetzt einen 16Mhz.
Der Timer für den Sekunden Takt und für das PWM Signal funktioniern jetzt nicht mehr. (zuerst aber das PWM )
Ich verwende Bascom Basic.
Der Code sieht im Moment ca. so aus:
Code:
$regfile = "m644def.dat"
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2 'configure lcd screen
Config Porta = Output 'LCD Display
'Config Portc = Output
'Config Pinc.3 = Output
Config Pind.7 = Output 'PWM
Config Pina.6 = Input
Config Pina.7 = Input
'Config Pinc.5 = Input
'Config Pinc.4 = Input
Ddrc = &B00001000
Initlcd 'init display again
Cursor On
Cls
'Const Timervorgabe = 34286
Const Timervorgabe = 3036
'Konfiguration Timer 2 für Hardware-PWM an OC2 (B.3)
Config Timer2 = Pwm , Prescale = 128 ', Compare = Set
'Config Timer2 = Pwm , Prescale = 128 , Compare = Clear
Config Timer1 = Timer , Prescale = 256 'Timer1 für den Sekundentakt
Enable Timer2
Timer2 = 0
Start Timer2
On Timer1 Timer_irq
Enable Timer1
Main:
Cls
Do
Ocr2a = 157
loop
Timer_irq:
Timer1 = Timervorgabe
Isekunde = Isekunde + 1
If Isekunde => 60 Then
Isekunde = 0
Isminute = Isminute + 1
End If
If Isminute => 60 Then
Isminute = 0
Istunde = Istunde + 1
End If
If Istunde => 24 Then
Istunde = 0
End If
If Istunde = Pwm_startstd And Isminute => Pwm_startmin Then 'Trigger nur erhöhen wenn Startzeit erreicht ist
If Dauer => Prescale2 And Pwm_trigger < 255 Then 'Trigger nur erhöhen wenn prescale erreicht ist (Teiler damit auf eine Stunde gedimmt wird)
Pwm_trigger = Pwm_trigger + 1
Dauer = 0
End If
End If
If Istunde = Pwm_startstd2 And Isminute <= Pwm_startmin Then 'Trigger nur erhöhen wenn Startzeit erreicht ist
If Dauer => Prescale2 Then 'Trigger nur erhöhen wenn prescale erreicht ist (Teiler damit auf eine Stunde gedimmt wird)
Pwm_trigger = Pwm_trigger + 1
Dauer = 0
End If
End If
Dauer = Dauer + 1
Return
Hat da jemand eine Idee?
Ich messe immer nur volle 11 V an Pind.7 (OC2).
Durch das einstellen des Registers OCR2 von 0-255 möchte ich die Spannung von 1-11V erreichen.
Besten Dank vorab!