- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: mega8 läuft zu langsam

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    32
    Beiträge
    436

    mega8 läuft zu langsam

    Anzeige

    Powerstation Test
    Hallo,

    Ich versuche gerade ein 4x16 Display über einen ATmega8 anzusteuern, es läuft auch alles.
    Das Problem ist er läuft irgendwie total langsam, er bracht ca ne halbe Sekunde bis er das "Bild" komplett aufgebaut hat.

    Ich Programmiere mit Bascom, und hab dort auch geschrieben das er mit 16MHz laufen soll...
    Habt ihr ne Idee?

    Ähm, in brenne mit USBasp, und hab dort ja son 1MHz Jumper, den muss ich gebrückt haben, sonst erkennt er den µC nicht.... das heißt er läuft mit 1Mhz... denke ich^^

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Schreib mal das Programm hier rein, dann sieht man evtl. den Fehler. Sonst isses nur Raterei.
    Und wenn der Jumper so gesetzt ist, dass er nur mit 1 MHz läuft, dann läuft er auch nur mit 1 MHz. Wie soll er dann mit 16 MHz laufen?
    Oder sind die Fusebits auf den ext. 16MHz-Quarz o.ä. Taktquelle gesetzt?

    (Den anderen Thread kannst im übrigen selbst löschen; geht übers Editieren)
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    34
    Beiträge
    607
    Hast du einen externen oszilator an deinem ATmega?
    Hast du irgendwelche fuses verändert, oder alles als standart gelassen?

    Ich geh mal davon aus, dass du alles standart gelassen hast, und keinen externen quarz angeschlossen hsat.
    Dann siehts nämlich folgendermaßen aus:
    Dein Controller läuft mit 1MHz, denkt aber, dass er mit 16MHz läuft. Das hat natürlich Auswirkungen: die Warteroutine denkt, sie muss 16mal soviele Taktee warten, wi sie eigentlich soll.
    Stell entweder den Controller schneller, oder das Prog langsamer, beides wird deine LCD-Ausgabe beschleunigen.

    Gruß, Yaro

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    32
    Beiträge
    436
    Soo, hier der Code.

    Ich hab die fuses nicht verändert.

    Der 1Mhz Jumper bezieht sich nur auf die Ansprechgeschwindigkeit...

    Ich hab keine Waitrotinen drinnen... also im Bildaufbau.

    Code:
     $regfile = "m8def.dat"
     $crystal = 16000000
    
     Ddrb = &B00000000
     Portb = &B11111111
     Ddrd.7 = 1
     Portd.7 = 0
    
     Ddrb.4 = 0                                                 'Abzug gegen GND
     Portb.4 = 1
     Ddrb.5 = 0                                                 'Autoabzug gegen GND
     Portb.5 = 1
     Ddrb.6 = 0                                                 'Magtaster gegen GND
     Portb.6 = 1
     Ddrb.7 = 0
     Portb.7 = 1
     Ddrc.3 = 1                                                 'Mosfet
     Portc.3 = 0
    
     Config Adc = Single , Prescaler = Auto , Reference = Avcc
     Start Adc
    
    
     Dim Z1 As Word
     Dim Z2 As Word
     Dim Z3 As Word
     Dim Zg As Word
     Dim Z1k As Long
     Dim Z2k As Long
     Dim Z3k As Long
     Dim Zgk As Long
     Dim Z1kk As Word
     Dim Z2kk As Word
     Dim Z3kk As Word
     Dim Zgkk As Word
     Dim Vi1 As Integer                                         'erster Messwert
     Dim Vi2 As Integer                                         'zweiter Messwert
     Dim Vir As Integer                                         'Differenzwert
     Dim Vdif As Integer
     Dim T1 As Integer
     Dim Modus As Integer
     Dim Count As Byte
     Dim Mag As Integer
     Dim Mun As Integer
     Dim Automag As Bit
    
     Automag = 1
     Mag = 0
     Mun = 0
     Vdif = 102
    
    
     Config Lcd = 16 * 4
     Config Lcdpin = Pin , E = Portd.1 , Rs = Portd.0 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
     Config Lcdbus = 8
    
     Initlcd
     Cursor Off
    
     Cls
     Locate 1 , 1
     Lcd "****************"
     Locate 2 , 1
     Lcd "*  A.S.M.F.D   *"
     Locate 3 , 1
     Lcd "*   Ver. 1.0   *"
     Locate 4 , 1
     Lcd "****************"
    
     Wait 1
    
    
    Der Rest ist nich weiter wichtig...

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Ok, dann haben wir den Fehler schon.
    Wie oben genannt: AVR läuft mit 1 MHz, das Programm will 16MHz.

    Zitat: "Stell entweder den Controller schneller, oder das Prog langsamer, beides wird deine LCD-Ausgabe beschleunigen. "
    #ifndef MfG
    #define MfG

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    32
    Beiträge
    436
    Der Jumper steht nur für die Kommunikationsgeschwindigkeit.
    http://www.ulrichradig.de/home/index...r/usb-avr-prog
    Der Jumper nennt sich "JP2".

    Wenn ich den öffne wird der µC nichtmehr erkannt.

    Der Programmer ist nicht mit dem Steckbrett verbunden, auf das der mega8 gestzt wird um das Display anzusteuern.

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn es mit der hohen Geschwindigkeit nicht geht, ist das auch ein Zeichen dafür das der µC langsam läuft.

    Damit der Quarz benutzt wird, muß man die Fuses ändern. So das ein externer Resonator benutzt wird (nicht externer Takt / Oszillator).

    Auch wenn da keine expliziten Verzögerungen drin sind, sind in den LCD Routinen versteckt einige.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    32
    Beiträge
    436
    Kann ich nicht den internen Tackt auf 16MHz stellen?
    Oder ist der interne Tackt auf 1Mhz festgelegt und ich muss ein Quarz nehmen?

  9. #9
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Über die Fuses kann man auch einen internen takt von nominal 8 MHz wählen. Dabei ist dann aber der Feinabgelich wohl nicht kalibiert. Ein RS232 verbindung wird damit so auf Anhieb wahrscheinlich nicht funktionieren.

Berechtigungen

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

Labornetzteil AliExpress