hey,
keiner eine Idee?
sorry für den Schreibfehler, das soll natürlich Überlauf heißen!
Hallo,
ich erhoffe mir hier Hilfe. Ich probiere jetzt schon länger den Timer0 bei dem ATMega16 aus. Habe mir ein Beispielprogramm aus dem RolandWalter Buch heraus geschrieben.
Aber irgendwie funktioniert das nicht. Ich bin der Meinung das ich keinen Übersauf des Timers bekomme.
Hier mal meine Programm Routine:
Dim X As Byte
On Timer0 Ontimer0
Ddrc = &B01100000
Config Timer0 = Timer , Prescale = 1
Enable Timer0
Enable Interrupts
Cls
Do
Portc.6 = Not Portc.6
X = Timer0
Setfont Font8x8
Lcdat 4 , 18 , X
Waitms 500
Loop
Ontimer0:
Portc.5 = Not Portc.5
Return
vielleicht kann mir ja einer von euch helfen!
Gruß uwe44k
hey,
keiner eine Idee?
sorry für den Schreibfehler, das soll natürlich Überlauf heißen!
Warum glaubst du das? Hast du an PortC.5 oder PortC.6 eine LED oder sowas?Zitat von uwe44k
Das LCD wird es so wohl noch nicht tun.
Gruß
Rolf
hallo rolf,
ich hab an beiden ausgängen eine led. die led an portc.6 blinkt im angegebenen zeitabstand von 500 ms sowie sich das lcd in diesen 500 ms aktualisiert.
nur die led am port.6, da tut sich einfach nichts!
am lcd seh ich wie der timer zählt, abr nur in der 100er und 200er zahlen. also ich sehe nicht das er von 0-100 zählt und das kommt mir komisch vor.
gruß uwe
Welche blinkt jetzt, die an C.5 oder die an C.6?Zitat von uwe44k
An PortC.5 liegt der JTAG, der evtl. noch enabled ist. Den musst die über die Fuses abschalten.
Ansonsten ist das doch nicht dein ganzes Programm oder? Wie wird das LCD angesteuert?
Gruß
Rolf
erstmal danke das sich wenigstens einer meinen problem annimmt.
wie gesagt ich bin anfänger und mit dem jtag hab ich noch überhaupt nichts zu tun und weiß auch nicht wofür man den braucht.
hier mein ganzes Programm (sollte eigentlich total simel sein, aber ich verzweifel daran):
'--- Prozessor Daten ----------------------------------------------------------
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
'--- genutzte libraries -------------------------------------------------------
$lib "glcdKS108.lib"
'--- Display konfigurieren ----------------------------------------------------
Config 1wire = Portc.7
Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portd , Ce = 2 , Ce2 = 3 , Cd = 4 , Rd = 5 , Reset = 7 , Enable = 6
'GLCD Pinning at controlport:
'----------------------------
'micro | Bascom | board | display | Pin | description
'
'Pind.2 = CE = CS1 = CSA = 1 = chip select first chip
'Pind.3 = CE2 = CS2 = CSB = 2 = chip select second chip
'Pind.4 = CD = RS = DI = 6 = register select, data/instruction
'Pind.5 = RD = R/W = R/W = 7 = read/write
'Pind.7 = Reset = RST = RST = 17 = chip reset
'Pind.6 = Enable = E = E = 8 = chip Enable
'--- Ausgänge konfigurieren ---------------------------------------------------
Dim X As Byte
On Timer0 Ontimer0
Ddrc = &B01100000
'Timer0 = 1
Config Timer0 = Timer , Prescale = 1
Enable Timer0
Enable Interrupts
Cls
Do
Portc.6 = Not Portc.6
X = Timer0
Setfont Font8x8
Lcdat 4 , 18 , X
Waitms 500
Loop
Ontimer0:
Portc.5 = Not Portc.5
Return
$include "font8x8.font"
Ich habe das experementierboard von easyavr5 und da sind alle ausgänge an einer led angeschlossen. so sehe ich auch was die ausgänge machen.
die led in der loop-schleife blinkt wie erwatret immer im 500ms takt, das ist die von portc.6.
die von portc.5 bleibt tot.
Bevor du etwas an den Fuses änderst, ändere lieber dein Programm so ab, dass anstelle von PortC.5 PortC.7 benutzt wird. Also
Ddrc = &B11000000
Portc.7 = Not Portc.7 'hier kanst du auch Toggle PortC.7 schreiben
Gruß
Rolf
ich hab das jetzt auf c.7 abgeändert, aber die c.7 ist auch tot.
ich beschreib jetzt mal was das lcd angezeigt:
beim start fängt es bei 190 an und zählt in 2er schritten hoch bis zu 254 (was ja logisch ist) dann springt es um auf 054, dann auf 186 und wieder in 2er schritten bis auf 254 hoch.
ich weiß nicht warum es nicht bei 0 anfängt und die schritte von 0-100 bzw 184 ignoriert???
ps: an den fuses werd ich so schnell nichts ändern!! aber trotzdem danke
Na ja, die Timer Werte die rauschen nur so durch.
Der Timer läuft wegsen Prescale 1 mit 8MHz. 8 bit heisst nach 256 Schritten läuft er über, also nach 32 µs. Das macht er so weiter, also etwa 30KHz.
Ich könnte mir vorstellen, dass die LED an PortC.5 auch in dem Takt schaltet und dass du das überhaupt nicht siehst.
Was willst du denn damit erreichen?
Lesezeichen