Gast
#1243274
Moin, Ich habe das Evulationsboard von pollin und versuche für eine Druckregelung den Timer1 zu benutzen. Dieser zaehlt bei mir jedoch schneller als er soll. Daher mein Verdacht, dass ich die falschen Fusebits gesetzt habe und das er garnicht den 16MHz Quarz, der auf dem Board ist, verwendet. Ich benutze einen Atmega16. Villeicht ist der Fehler aber beim Timer1, hier mein Code: $regfile = "m16def.dat" $crystal = 16000000 'PA2 auf Board Config Porta.1 = Output '############################################### 'Display Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portb.0 , Rs = Portb.2 Config Lcdbus = 4 'ADC Initzialisierung Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc '############################################### Dim Sekunden As Integer Sekunden = 0 Dim W As Word , Channel As Byte Dim Wmulti As Single Dim Wstring As String * 10 Channel = 0 'Begrüßungsbildschirm Cls Locate 1 , 1 Lcd "HS Bremen" Locate 2 , 1 Lcd "Waterhammer v.1" Wait 2 Cls 'timer Config Timer1 = Timer , Edge = Rising , Prescale = 1024 Enable Timer1 On Timer1 Timer_overflow Enable Interrupts '65535 - (16000000 / 1024) '65535 - 15625 '49910 Timer1 = 49911 Do 'Wert von ADC channel 0 auslesen W = Getadc(channel) 'W umrechnen Wmulti = W * 0.0048288 Wstring = Str(wmulti) Wstring = Fusing(wmulti , "#.&&") 'LCD-Darstellung Locate 1 , 1 Lcd "Wert: " ; W Locate 2 , 1 Lcd "Sec. " ; Sekunden 'Lcd "Volt: " ; Wstring Waitms 300 Cls Loop End 'jede Sekunde 'Sekunden' erhöhen Timer_overflow: Sekunden = Sekunden + 1 Timer1 = 49911 Return und so sehen meine Fusebits aus die ich über PonyProg einstelle: haken bei JATGEN, SPIEN, CKOPT, BOOTSZ1, BOOTSZ0, SUT1 Zur zeit zählt er einfach viel zu schnell die Sekunden, die werden auf dem Addon board von Pollin ausgegeben. Danke euch Patrik