- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: LCD-Befehl zu schnell

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2008
    Alter
    37
    Beiträge
    26

    LCD-Befehl zu schnell

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Guten Tag,

    arbeite gerade mit einem ATMega 32 und einem DogM 162. Weil ich eine große Samplingrate brauche fahre ich den AVR über dem vorgegebenen Takt.

    Dieser funktioniert auch einwandfrei bei der frequenz. Jedoch kommt das DogM nicht hinterher, da die Pulse zu kurz sind.

    Ich betreibe das DogM in 4-Bit mode:

    Code:
    'LCD Config
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.6
    Config Lcd = 16x2 , Chipset = Dogm162v5
    
    Initlcd
    
    Display On , Nocursor
    
    Cls
    Gibt es eine möglichkeit die Pulslänge zu vergrößern?

    MfG Vader

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von Lord_Vader Beitrag anzeigen
    arbeite gerade mit einem ATMega 32 und einem DogM 162. Weil ich eine große Samplingrate brauche fahre ich den AVR über dem vorgegebenen Takt.
    Und wie ist der vorgegebene Takt?

    Zitat Zitat von Lord_Vader Beitrag anzeigen
    Jedoch kommt das DogM nicht hinterher, da die Pulse zu kurz sind.
    Wie äußert sich das "nicht hinterher kommen"? Welche Pulse sind gemeint?

    Schaltplan? Ganzer Code?
    Grüße
    Thomas

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2008
    Alter
    37
    Beiträge
    26
    Atmega laut datenblatt 16mhz.

    mit pulsen meine ich clock enable und die vier datenbits...


    sind standard Bascom lxd befehle

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von Lord_Vader Beitrag anzeigen
    Atmega laut datenblatt 16mhz.

    mit pulsen meine ich clock enable und die vier datenbits...


    sind standard Bascom lxd befehle
    Die Bascom-Standard-Befehle errechnen aus der Taktfrequenz die notwendigen Pausen zwischen den von dir genannten "Pulsen". Ist die Taktfrequenz dem Compiler richtig mitgeteilt worden? Wenn nicht, dann kann dies zu diesem Verhalten führen.

    Ich habe oben nicht umsonst um den ganzen Code gefragt. Also, bitte den ganzen Code und wenn möglich auch den Schaltplan hier einstellen, sonst müssen wir dir alles aus der Nase ziehen.
    Grüße
    Thomas

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2008
    Alter
    37
    Beiträge
    26
    Code:
    $regfile = "m32def.dat"
    $crystal = 48000000
    $baud = 1200
    
    
    'Timer config
    Config Timer0 = Timer , Prescale = 8
    Config Timer1 = Timer , Prescale = 1024
    Enable Timer0
    Enable Timer1
    
    On Timer0 Readout:
    
    On Timer1 Counts:
    
    'Variablen
    Dim Ainput As Integer
    Dim Inpvolt As Integer
    
    Dim Tint(2) As Byte
    Dim Rest As Byte
    
    Dim Temp As Integer
    
    Dim Cnt As Byte                                             'Counter for Loops and so on
    
    Dim Tvolt As Integer
    Dim Setvolt As Integer
    
    Dim Times As Dword
    
    
    'ADC Config
    Config Adc = Free , Prescaler = 64 , Reference = Aref
    Start Adc
    
    
    
    Enable Interrupts
    
    'Functions
    Declare Sub Writedac(byval Volt As Integer)
    
    
    'Buttons
    Config Pind.0 = Input
    Config Pind.1 = Input
    Config Pind.2 = Input
    Config Pind.3 = Input
    
    
    Bu Alias Pind.0
    Bl Alias Pind.1
    Bd Alias Pind.2
    Br Alias Pind.3
    
    'DAC Ausgänge
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    
    Cs Alias Portb.2
    Sck Alias Portb.1
    Sdi Alias Portb.0
    
    Ldac Alias Portb.3
    
    Config Spi = Soft , Dout = Sdi , Ss = Cs , Clock = Sck
    Spiinit
    
    Ldac = 0
    
    
    'R / W Pin Von Lcd
    Config Pinc.5 = Output
    Rw Alias Pinc.5
    Rw = 0
    
    'LCD Config
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.6
    Config Lcd = 16x2 , Chipset = Dogm162v5
    
    Initlcd
    
    Display On , Nocursor
    
    Cls
    
    
    Do
    
    
    
       'Inpvolt=ainput-511
    
       Setvolt = Ainput * 4
    
    
       Call Writedac(setvolt)
    
    Loop
    
    
    
          'Timer0 interrupt
          Readout:
    
             Ainput = Getadc(0)
    
             Timer0 = 142
    
          Return
    
          'TIMER1 interrupt
    
          Counts:
    
             Timer1 = 18661
    
                Locate 1 , 1
                Lcd "ATMega at 48MHz"
    
                Incr Times
    
                Locate 2 , 1
                Lcd Str(times)
    
          Return
    
    
    Sub Writedac(byval Volt As Integer)
    
    
       Tint(2) = Volt
       Temp = Volt
       Shift Temp , Right , 8
    
       Tint(1) = Temp Or &B01110000
    
       Spiout Tint(1) , 2
    
    
    End Sub
    Das ist der Code. Ich muss dazusagen auf dem Oszilloskop sieht man das die Pulse eigentlich zu kurz sind. Laut datenblatt des controllers 25ns welche wahrscheinlich schon unterschritten sind.
    Die änderung von $crystal bewirkt nichts.

    Habe leider keinen Schaltplan gemacht aber das Dog M 162 ist in 4-Bit 5V Modus wie im Datenblatt angegeben angeschlossen.

    MfG Vader

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2008
    Alter
    37
    Beiträge
    26
    Läuft mit 48Mhz...

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Was jetzt, 16 oder 48 Mhz? Der Mega32 ist für 48 Mhz nicht spezifiziert!
    Welche Taktquelle verwendest du?
    Grüße
    Thomas

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2008
    Alter
    37
    Beiträge
    26
    Er läuft mit 48Mhz über einen Quarzoszillator. Und das auch recht gut. Der DAC über SPI funktioniert einwandfrei und der ADC auch. Bei 36 Mhz funktioniert auch noch das LCD...

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Aktualisiere das Display mal etwas langsamer, vielleicht wirst du zu schnell - das mögen die KS0108 übrigens auch überhaupt nicht.
    Grüße
    Thomas

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2008
    Alter
    37
    Beiträge
    26
    Was heisst etwas langsamer? Es aktualisiert sich etwa jede sekunde. Ausserdem ist es kein KS0108 es ist ein ST7036 controller im DOG M 162

    Die eigentliche frage wird langsam wieder ausser acht gelassen. Gibt es eine möglichkeit die übertragungsrate zum lcd, das heisst quasi die Pulslänge zu ändern?

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Bitte schnell mal über die LCD initialisierung schauen 8051
    Von hlos im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 07.10.2010, 20:43
  2. Befehl an LCD schicken
    Von molleonair im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 09.03.2010, 21:46
  3. befehl "print" bei lcd und uart?
    Von goof1980 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 06.10.2008, 23:34
  4. LCD Testprogramm für RN-mega32 mit LCD Adapter und LCD Cont.
    Von emma1976 im Forum Assembler-Programmierung
    Antworten: 0
    Letzter Beitrag: 11.05.2007, 17:27
  5. wie "schnell" ist ein LCD?
    Von Frank_R im Forum Elektronik
    Antworten: 18
    Letzter Beitrag: 28.02.2007, 06:09

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests