-
        

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

Thema: Prog läuft mit internen Oszillator - mit externem Quarz nich

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627

    Prog läuft mit internen Oszillator - mit externem Quarz nich

    Anzeige

    Hallo,
    ich habe ein Platine mit ATtiny2313, LCD und Tastern. Wenn ein Taster gedrückt wird, soll der Taster auf dem LCD stehen.

    zum meinem Problem:
    wenn ich einen 8MHz Quarz benutze habe ich in wildem durcheinander die Taster auf dem LCD stehen und der µC bootet immerwieder neu.........

    wenn ich den internen RC oszillator nutze läuft alles bestens...
    (da ich aber noch mehr machen möchte soll ein Quarz mit 14,7456MHz rein - aber zum Vergleich ist es vielleicht einfacher erst mal den Fehler bei dem 8MHz Quarz zu finden)

    Hardware ich habe es mit 2 Kontensatoren je 33pF und nun 22pF am Quarz getestet - kein Erfolg.

    Fusebit KLA987: 111111 Ext.Crystal Osc.; Frequency 8.0- MHz Startuptime 14CK+65ms
    ich habe auch schon verschiedene andere versucht....

    Am Programm sollte es wohl auch nicht liegen(?).

    Hat jemand eine Idee?

    Tobias

    Code:
    'Konfiguration µC:
    
    $regfile = "ATtiny2313.dat"                                 'ATtiny2313-Deklarationen
    '$framesize = 24
    '$swstack = 8
    '$hwstack = 32
    '$crystal = 14745600                                         'Quarz: 14,7456 MHz
    $crystal = 8000000
    $baud = 9600                                                'Baudrate definieren
    '-------------------------------------------------------------------------------
    'Ein / Ausgänge definieren:
    Ddrd = &B1111111                                            'Pin PD5-0 als Eingang / 6 als Ausgang (LCD) konfigurieren
    Ddrb = &B11111111
    
    'PullUps setzen:
    Portd = &B0111100                                           '1 = PullUp AKTIV
    Portb = &B00100000                                          '1 = PullUp AKTIV
    
    '-------------------------------------------------------------------------------
    'LCD konfiguration
    Config Lcd = 20 * 4                                         'LCD größe
    Config Lcdpin = Pin , Rs = Portb.4 , E = Portb.3 , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6
    Cursor Off Noblink
    
    '-------------------------------------------------------------------------------
    'Alias
    Taster1 Alias Pind.2
    Taster2 Alias Pind.3
    Taster3 Alias Pind.4
    Taster4 Alias Pind.5
    Taster5 Alias Pinb.5
    
    '-------------------------------------------------------------------------------
    Cls
    Locate 1 , 1
    Lcd "RS232 - LCD"
    
    '-------------------------------------------------------------------------------
    
    Do                                                          'Hauptschleife
    
    
    
    'Tasterabfrage:
    If Taster1 = 0 Then
    Print "Taster1"
    Cls
    Lcd "Taster1"
    End If
    
    
    
    If Taster2 = 0 Then
    Print "Taster2"
    Cls
    Lcd "Taster2"
    End If
    
    If Taster3 = 0 Then
    Print "Taster3"
    Cls
    Lcd "Taster3"
    End If
    
    If Taster4 = 0 Then
    Print "Taster4"
    Cls
    Lcd "Taster4"
    End If
    
    If Taster5 = 0 Then
    Print "Taster5"
    Cls
    Lcd "Taster5"
    End If
    
    Loop
    
    
    '===============================================================================
    'Pinbelegung µC  
    '===============================================================================
    '                                      AtmelATtiny2313
    '                                         +---U---+
    '                             (Reset) PA2 +1    20+ Vcc +5V
    '                               RS232 PD0 +2    19+ PB7 FREI
    '                               RS232 PD1 +3    18+ PB6 FREI
    '                        x x Xtal 2 / PA1 +4    17+ PB5 TASTER 5
    '                        x x Xtal 1 / PA0 +5    16+ PB4 / LCD / RS
    '                                T1   PD2 +6    15+ PB3 / LCD / E
    '                                T2   PD3 +7    14+ PB2 / LCD / DB4
    '                                T3   PD4 +8    13+ PB1 / LCD / DB5
    '                                T4   PD5 +9    12+ PB0 / LCD / DB6
    '                                     GND +10   11+ PD6 / LCD / DB7
    '                                         +-------+
    ...

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Am Programm wird es kaum liegen. Was da eventuell nicht mehr funktioniert, wenn der Takt höher wird, ist das Entprellen der Tasten.


    Wenn das Programmieren bzw. auch nur Auslesen per ISP noch geht, sollte der Quarz auch richtig schwingen, denn sonst würde ISP auch nicht gehen. Am Quarz oder den Kondensatoren sollte es also auch kaum liegen. Höchstens wenn es eine starke Störung des Quarz durch benachbarte Leitungen gibt. Habe ich aber noch nicht geschafft.

    Was sich ändert bei höherer Frequenz ist: 1) der Strom verbrauch, 2) die mindest nötige Spannung.

    Edit: auch mal schaun wie der Enstkoppelkondensator für die Versorgung angeschlossen ist.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    hmmmmmmm
    also Spannung/Strom ist genug Vorhanden: 5V aus einem Labornetzteil - Strom liegt gerade bei 130mA MIT LCD Beleuchtung....

    Programmieren ist kein Problem.

    Das entprellen sollte sich ja nur äusern, wenn ich die Taster drücke oder? Wenn nichts gedrückt ist sollte auch keine Meldung kommen... hoffe ich

    Tobias
    ...

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Code:
    Ddrd = &B1111111                      'Pin PD5-0 als Eingang / 6 als Ausgang (LCD) konfigurieren
    Damit setzt Du aber schon mal 7 der 8 Bits als Ausgang!! (Weche das sind, wenn man nur 7 mal "1" schreibt, weiß ich nicht).

    Mit "PORTD = &B0111100" setzt Du 5 dieser Ausgänge auch noch auf High, von denen vermutlich einige über die Taster auf Masse geschaltet werden.

    Das würde auch die Stromaufnahme erklären: "Nur" 130 mA finde ich ganz schön viel - auch mit LCD-Hintergrundbeleuchtung. Die ziehen bei meinen verwendeten Displays so um 10 bis maximal 20 mA, aber nicht mehr.

    Könnte da der Fehler liegen?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    oha

    Also das war ja wohl nichts....
    natürlich muss ich die Pins mit den Tastern als Eingänge definieren....

    Das hat die Stromaufnahme auf 80mA gesenkt(egal ob Taster gedrückt oder nicht).

    Zu den 7-8Bit: der ATtiny2313 hat auf Port D nur 7 Bit, deshalb ist das so richtig.

    Leider hat das nichts daran geändert, dass das Programm mit 8MHz internen Taktgeber sauber läuft und mit externen 8MHz Quarz nicht

    Vielen Dank,
    Tobias
    ...

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Okay - dass der PORTD beim 2313 nur 7 Bits hat, hatte ich nun wieder übersehen

    Haste mal mit Waitms in einer möglichst einfachen Hauptschleife überprüft, ob die Taktfrequenzen überhaupt in plausiblen Größenordnungen liegt? Also z.B. so:

    Code:
    Do
    CLS
    waitms 500
    LCD "Test"
    Waitms 500
    Loop
    BTW kommen mir auch 80mA noch verdächtig viel vor - hast Du sonst wirklich nix dranhängen??

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.06.2008
    Ort
    Rösrath
    Alter
    33
    Beiträge
    332
    Je nach Display kann das durchaus sein, mein 240x128 Display zieht so ca. 130mA bei der Beleuchtung. Selbst die kleine DOG-Beleuchtung braucht AFAIK 60mA.

    Natürlich leuchten die auch mit viel weniger noch ausreichend, aber das kann man ja über PWM runterregeln.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    TEST:

    Code:
    Dim Test As Integer
    
    Do                                                          'Hauptschleife
    
    Incr Test
    Cls
    Lcd Test
    Wait 1
    
    Loop
    Also nach 60 sec von meiner Stopuhr steht 56 auf dem LCD mit externem 8MHz Quarz

    mit dem Internen Taktgeber 8MHz hat der µC nach 60 sec 61 erreicht....


    Tobias
    ...

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Okay - dann passt es aber doch ziemlich genau, oder? Eine kleine Differenz zwischen internem RC-Oszillator und dem externen Quarz ist ja durchaus zu erwarten - und dass es es in der Minute nicht ganz bis 60 schafft könnte gut daran liegen, dass der CLS-Befehl ziemlich viel Zeit beansprucht.

    Also scheint die Taktung schon mal o.k. zu sein...

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    ja richtig, der Fehler liegt wohl noch wo anders.
    ...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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