-         

Ergebnis 1 bis 9 von 9

Thema: 16 MHz beim ATmega168 und Bascom einstellen ?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    56
    Beiträge
    2.543

    16 MHz beim ATmega168 und Bascom einstellen ?

    Anzeige

    hi,

    nun habe ich es doch getan...

    ...eine kleine Platine gefräst für meinen ATmega 168.

    Teile aufgelötet und getestet; der Micro wurde sofort erkannt \/
    (ISP parallel Adapter von Robotik-Hardware)


    Dann wollte ich das Ganze in Bascom (Vers. 1.11.9.1) auf den 16 MHz Quarz umstellen.

    Leider konnte ich bei dem entsprechenden FuseBit keine 16 MHz Einstellung finden.

    Lediglich "8-" MHz konnte ich finden; das hat aber nicht funktioniert.

    Durch einige Tests mit einer blinkenden LED fand ich heraus, daß mein schöner schneller 168er mit 1 MHz läuft


    Es gab noch eine Einstellung: "interner 8 MHz Resonator"; die hat aber auch keine Änderung bewirkt...
    Der Mikro lief weiterhin auf 1 MHz.

    Im Datenblatt habe ich im Kapitel:
    7.1 Low Power Crystal Oscillator
    7.4 Full Swing Crystal Oscillator
    gelesen.
    Ich verwende einen kleinen 4mm breiten und ca. 10mm langen Quarz.
    Keinen rechteckigen und größeren Resonator, welcher ein Rechtecksignal ausgibt.

    Welcher ist nun der richtige?
    Ich nehme mal an: 7.1 Low Power Crystal Oscillator?
    Dann müsste ich entsprechend des Datenblattes auf Seite 30 (Figure 7-2)
    die Einstellung: CKSEL3..1 = 111 wählen?


    Mein Englisch ist leider nicht so besonders...
    In die Datenblätter muß ich mich erst noch einlesen.


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Moin Klingon!

    Low Power Crystal und Full Swing Crystal funktionieren beide mit einem externen Quarz. Der Unterschied ist nur der, dass bei "Full Swing" am Ausgang XTAL2 ein 5V-Rechtecksignal anliegt, falls man den Takt noch anderswo braucht. Bei Low Power ist das nicht der Fall - spart Strom.

    Funktionieren müssten mit einem externen Quarz beide Varianten.

    Oft entsteht zum Them FuseBits ziemliche Verwirrung dadurch, dass "1" im Datenblatt bedeutet, dass das Bit gelöscht ist - und "0" steht für ein gesetztes Bit. Vielleicht wär´s sonst auch zu einfach... [-(

    Ansonsten ist beim Mega168 im Auslieferungszustand das FuseBit CKDIV8 gesetzt (d.h. auf "0"), wodurch der gewählte Takt auf 1/8 runtergeteilt wird. Deshalb läuft das Ding auch auf 1MHz, wenn Du den internen 8MHz-Oszillator wählst.

    Ein schönes Tool zum virtuellen rumspielen mit Fuses gibt´s übrigens hier:
    http://www.engbedded.com/fusecalc/

    Gruß,

    Daniel

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hallo Klingon77,

    Glückwunsch zu Deinem Controllerplatinen-Fortschritt. Irgendwie ist gerade eine Seuche ausgebrochen - Fusebitsgrippe oder so. Vor ein paar Tagen hatte ich in diesem Thread ein Musterbeispiel für (m)einen m168 mit 20 MHz gegeben, dasselbe kann natürlich auch für Deinen 16 MHz-Quarz gelten - laut Datenblatt für alle mit mehr als 8 MHz - siehe Doc 2545M–AVR–09/07, Seite 36. Im Fusebitcalculator steht dann Frequency 8.0- MHz ( --- das sollte eher heissen 8.0+ ... jedenfalls würden wir das beim Klettern so schreiben, gell *ggggg*).

    ...............

    Das Beispiel ist für PonyProg - ich weiß nicht, welches Flashprogramm Du verwendest, da Du ja Bascom hast. Diese "0" und "1" - Konfusions beim Bitsetzen verwirrt viele, daher bin ich eher für Bildchen der Art wie es oben ist. Ansonsten hatte ja Sauerbruch schon praktisch alles Notwendige gesagt. Vielleicht hier noch einmal der Fusebitcalculator, bei dem ich für Dich die Fuses für Deine Erfordernisse eingestellt habe - auch der Brownoutlevel ist wie im Ponyprog-Beispielbild auf 1,8 V eingestellt. Ich denke, Brownoutdetektion wirst Du vermutlich vorerst sowieso nicht nutzen, dann könntest Du auch bei BODLEVEL0 "das Häkchen entfernen" <=> dann ist Brownoutdetektion disabled.

    Viel Erfolg

    Nachtrag: Fehlerhafte(n) Link(s) korrigiert
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    könnte es sich auch um einen 644P handeln?
    So einer nervt mich nämlich gerade rum.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    56
    Beiträge
    2.543
    hi alle,

    fragen sie hier; da werden sie geholfen \/ \/

    Mal Dank für die rasche Hilfe!


    Es ist nicht so, daß ich das Datenblatt nicht bemüht hätte.
    Leider ist halt mein Englisch (Fachenglisch) nicht so gut; gebe mir aber Mühe!
    Ich bin mir dann nicht immer sicher ob ich alles richtig verstehe.
    Bei normalen Basic-Befehlen oder anderen Dingen ist das nicht so dramatisch.
    Wenn ich aber den ATmega so verbiege daß er nur noch mit einem externen "Schrittmacher" läuft habe ich verloren.


    Ich glaube die wichtigsten Punkte sind die "CKSEL = 111".

    Wenn mich nicht alles täuscht habe ich diese Einstellung schon mal versucht.
    Ein "1 Hz Blinken" lief dann anders und ich hatte den Eindruck der 168er war mit 2 MHz getaktet.

    Da war ich dann komplett verwirrt...


    Mit Der Aussage von Sauerbruch:

    "Ansonsten ist beim Mega168 im Auslieferungszustand das FuseBit CKDIV8 gesetzt (d.h. auf "0"), wodurch der gewählte Takt auf 1/8 runtergeteilt wird."

    kann ich mir das nun erklären.


    Nun werde ich nochmals das Datenblatt bemühen und weitere Versuche anstellen.
    Bin "voll der Hoffnung" daß wir zusammen die kleine Hürde nehmen können.
    Evtl. finde ich nächste Woche noch ein wenig Zeit daran zu arbeiten.
    Wochenende habe ich leider Tagdienst...

    lieben Dank für eure Hilfe und die gut dargestellten Einstellungsbeispiele


    Wenn das Ganze mal so läuft, wie ich es möchte (im richtigen Takt) mache ich auch ein paar Foto´s und schreibe was im LED-Thread dazu.


    liebe Grüße,

    Ralf
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Puhhhhh - Klingon77,

    ich hatte mich oben auf den falschen Link bezogen - habs aber korrigiert. Bitte um Entschuldigung
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Wenn ich aber den ATmega so verbiege daß er nur noch mit einem externen "Schrittmacher" läuft habe ich verloren
    Na ja - ganz so schlimm wäre das ja nicht. Irgendwann passiert sowas mal - aber das Problem lässt sich mit einem simplen Rechteckgenerator lösen. Die Frequenz ist abolut unkritisch (muss nur ca. 4mal so hoch sein wie die am Programmer eingestellte ISP-Frequenz). Mit ein paar Krümeln aus der Bastelkiste (z.B. NE555, 40106 o.ä.) kann man sowas auf ein paar Quadratzentimeter Lochrasterplatine zusammenlöten. Und damit lässt sich jeder Chip wieder zum Leben erwecken, der über die Clock-Fuses kaltgestellt wurde

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hallo alle, hi Sauerbruch,

    im Pannenfall hatte ich schon mit Erfolg einen 36 kHz-Takt von einem Controller auf den XTAL1 des Pannencontrollers gelegt - und die Panne durch Setzen geeigneter Fuses behoben. Das entsprechende Vorgehen steht in den Docs i.A. unter "External Clock".
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    56
    Beiträge
    2.543
    hi alle,

    frohe Kunde; der "Kleine" funzt dank eurer Hilfe wie er soll
    Die LED blinkte bei eingestelltem 16MHz Takt schön im Sekundenrhythus.

    Hier die Fusebit´s; evtl. kann es nochmal jemand gebrauchen...




    Fusebit "C" habe ich ausgeschaltet...



    ... und den entsprechenden Quarz (mit langer Einschwingzeit) eingeschaltet.




    Dann "wagte" ich mich an die PWM.

    Mit Hilfe des Buches von Roland Walter, einigen Beschreibungen aus dem Forum und dem Wiki des Forums, sowie ein wenig Überlegen brachte ich dann eine ein- und ausfadende LED zustande \/


    Nun habe ich die PWM-Grundlagen schon durchgelesen.
    Leider ist noch nicht alles sofort aus dem Kopf abrufbar.

    Lange Rede, kurzer Sinn:
    Es "funzt"; im Groben weiß ich auch warum aber die Details muß ich mir noch erarbeiten.

    Code:
    $regfile = "m168def.dat"                                    'ATmega 168 Definition
    $crystal = 16000000                                         'Ext. Quarz 16 Mhz
    
    Ddrd.7 = 1                                                  'Pin PD7 als Ausgang definieren
    
    
    
    On Timer0 Ontimer                                           'Interruptroutine für Timer0
    Dim Helligkeit As Byte
    Dim Lauf As Byte                                            'Schleifenvariable
    Config Timer0 = Timer , Prescale = 64
    Enable Timer0                                               'Timer0 Overflow Interrupt ein
    Enable Interrupts                                           'Interrupts global einschalten
    
    
    
    Do
      For Lauf = 2 To 254
      Helligkeit = Lauf
       Waitms 2
      Next Lauf
    
        For Lauf = 254 To 2 Step -1
      Helligkeit = Lauf
       Waitms 2
      Next Lauf
    
    Loop
    
    
    Ontimer:
      If Portd.7 = 1 Then Timer0 = 256 - Helligkeit Else Timer0 = Helligkeit
      Toggle Portd.7                                            'LED umschalten
    Return
    
    END
    Nächste Woche finde ich hoffentlich mal ein wenig Zeit ein paar Fotos zu machen und einen kleinen "Bericht" in meinem LED-Thread darüber zu schreiben.



    Nochmals Dank für eure Hilfe


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

Berechtigungen

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