-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Anfänger braucht Hilfe bei Timer

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.04.2007
    Ort
    Frankenwinheim
    Alter
    48
    Beiträge
    68

    Anfänger braucht Hilfe bei Timer

    Anzeige

    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

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    09.04.2007
    Ort
    Frankenwinheim
    Alter
    48
    Beiträge
    68
    hey,
    keiner eine Idee?

    sorry für den Schreibfehler, das soll natürlich Überlauf heißen!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112

    Re: Anfänger braucht Hilfe bei Timer

    Zitat Zitat von uwe44k
    Aber irgendwie funktioniert das nicht. Ich bin der Meinung das ich keinen Übersauf des Timers bekomme.
    Warum glaubst du das? Hast du an PortC.5 oder PortC.6 eine LED oder sowas?
    Das LCD wird es so wohl noch nicht tun.

    Gruß

    Rolf

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.04.2007
    Ort
    Frankenwinheim
    Alter
    48
    Beiträge
    68
    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

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von uwe44k
    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!
    Welche blinkt jetzt, die an C.5 oder die an C.6?
    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

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.04.2007
    Ort
    Frankenwinheim
    Alter
    48
    Beiträge
    68
    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.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    09.04.2007
    Ort
    Frankenwinheim
    Alter
    48
    Beiträge
    68
    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???

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    09.04.2007
    Ort
    Frankenwinheim
    Alter
    48
    Beiträge
    68
    ps: an den fuses werd ich so schnell nichts ändern!! aber trotzdem danke

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •