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
> 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. wenn die interne Taktquelle benutzt werden würde, müsste aber alles langsamer laufen als mit dem 16MHz-Quarz erwartet...
müsste langsamer laufen bzw genau so wie es soll. nen kumpel hat mir die fusebits eingestellt. wie muss ich die denn schalten für den atmega16 wenn ich den internen takt verwenden will und muss ich dem dann trotzdem $crystal=1000000 sagen?
Patrik wrote: > müsste langsamer laufen bzw genau so wie es soll. du verstehst nicht was ich meine: Du glaubst, dass wegen falscher Fuses der interne RC-Oszillator statt dem Quarz benutzt wird, und deswegen dein Zähler zu schnell läuft. Der interne Oszi ist aber langsamer, also müsste der Zähler auch langsamer als wie von dir erwartet jede Sekunde eins hochzählen.. > fusebits eingestellt. wie muss ich die denn schalten für den atmega16 > wenn ich den internen takt verwenden will und muss ich dem dann trotzdem > $crystal=1000000 sagen? kA, vielleicht solltest du in einem Bascom-Forum fragen, hier sind nach meinem Eindruck mehrheitlich C & Assembler-Anwender unterwegs...
Ich verstehe deinen Ansatz, das macht Sinn. Kann mir trotzdem jemand zeigen wie ich über ponyprog meinen atmega16 an meinem pollin board so einstelle dass der externe quarz benutzt wird?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.