-
        

Ergebnis 1 bis 5 von 5

Thema: Zweiter Mikrocontroller als Taktgeber - Fusebits falsch gestellt -.-

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Beiträge
    11

    Zweiter Mikrocontroller als Taktgeber - Fusebits falsch gestellt -.-

    Anzeige

    Hallo!
    Zuersteinmal: ich weiß, dieses Thema wurde schon oft besprochen, aber ich habe wohl gerade ein Brett vor dem Kopf um komme nicht weiter.

    Vor einigen Wochen bin ich über dieses Forum zur Mikrocontroller-Programmierung gekommenJ.
    Nach meinen ersten Versuchen mit dem Attiny13A, habe ich nun versucht, den Atmega324a über UART mit meinem PC (USB) kommunizieren zu lassen.
    Dafür sollte der Mikrocontroller mit einem externen 12Mhz Quarz laufen… und was passiert natürlich. Im Eifer des Gefechts habe ich über avrdude die falschen Fusebits gesetzt und den Atmega324a wohl auf external Clock gestellt – wie sollte es auch anders sein -.- . Also kann aich nicht mehr auf den Atmega324a zugreifen.
    Nun habe ich im Tutorial gelesen, man könne den Takt durch einen weiteren Mikrocontroller simulieren. Um einen externen Takt zu generieren, habe ich nun den Attiny13a aus dem Einsteigerpaket genommen, und einen früheren Code für einen Blinker draufgespielt und den Ausgang für die LED an XTAL1 des Atmega324a geklemmt.
    Assemblercode vorher:
    .include "tn13Adef.inc"
    ldi r16,0b00001
    out DDRB,r16
    ldi r16,0b11110
    out PORTB,r16
    loop:
    sbi PORTB,0
    cbi PORTB,0
    rjmp loop
    Verstehe ich das richtig, dass der Ausgang nun im selben Takt des Attinys schaltet? Wenn ich das Datenblatt richtig interpretiere wären das knapp 9,6 Mhz. Im Datenblatt des Atmega324a lese ich, dass der interne Os. Mit 8Mhz läuft. Nun dachte ich, dass ich den Takt mindestens um ein vierfaches verlangsamen muss (kleine Schleife in Assembler, die nach jedem schalten bis 3 hochzählt). Allerdings bekomme ich weiterhin die Nachricht vom avrdude:

    avrdude: auto set sck period (because given equals null)
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
    avrdude: AVR device initialized and ready to accept instructions
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    avrdude: Expected signature for ATMEGA324P is 1E 95 08

    Kann mir einer sagen, wie ich den richtigen Takt für den Attiny13a einstelle und mit welcher Baudrate ich dann den Atmega324a ansprechen kann (bisher –B60)?

    Schonmal Danke für jeden Tipp!


    Anhang:
    Falsch gestellte Fusebits: -U lfuse:w:0x00:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
    Wären die Fusebits so richtig gestellt?: -U lfuse:w:0x7e:m -U hfuse:w:0x99:m -U efuse:w:0xff:m


    (Generiert über http://www.engbedded.com/fusecalc/)

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Der Ausgang schaltet mit einem 1/4 der Taktfrequenz, da sbi und cbi jeweils zwei Takte benötigen. Der Takt sollte so hoch wie möglich sein.
    Die Einstellungen für avrdude kenne ich allerdings nicht, ich arbeite mit dem AVR-Studio.
    Beim 324P solltest du noch CKDIV8 abschalten und auch JTAG, wenn du ihn nicht brauchst.

    - - - Aktualisiert - - -

    Was mit noch gerade auffällt, Mega324A und Mega324P haben eine unterschiedliche Device-Signature.
    Also das richtige Device einstellen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Beiträge
    11
    Hallo Hubert.G!
    Erst einmal Danke für deine schnelle Antwort!

    Wenn ich das richtig verstehe sollte ich den Assemblercode so lassen wie er oben steht (ohne Verzögerung). Werde die Einstellungen mit CKDIV8 und JTAG übernehmen sobald er läuft danke dafür!

    Das Problem mit der Device-Signature hatte ich gehofft durch das -F " Override invalid signature check." lösen zu können.
    Da er mir als Signature 0x000000 rausgibt, vermute ich, dass er keinerlei Antwort bekommt.

    Hat jemand einen weiteren guten Rat? (Benutze den USBASP Programmer)

    Gruß

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    versteh ich jetzt nicht ganz: Du wolltest auf externen Quarz umstellen und hast das auch getan - ohne einen externen Quarz zu haben den Du anschliessen könntest?.... hast Du einen Quarz? Kannst Du den nicht einfach anschliessen. Dann würde er ggf nicht mit korrekter Geschwindigkeit laufen, aber das könnte man danach wieder beheben?
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    06.10.2005
    Beiträge
    11
    Hey HeXPloreR,
    ich habe die Fusebits dummerweise verdreht und somit anstatt auf einen externen Quarz fälschlicherweise auf Quarzoszillator gestellt. Somit kommt mein angeschlossener Quarz nicht in Schwingungen :-/
    Nun habe ich versucht mit Hilfe der Tipps meinen zweiten Mikrocontroller als Taktgeber zu nutzen. Allerdings ohne Erfolg.

    Dank der genialen und schnellen Unterstützung vom Guloshop ist das Problem gelöst.
    "1.
    rjmp benötigt zwei CPU-Takte für den Sprung, das heißt, dein "Oszillator" läuft unrund. Am besten, du fügst noch zwei nops ein:

    loop:
    sbi PORTB,0
    nop
    nop
    cbi PORTB,0
    rjmp loop

    2.
    Geh auf Nummer sicher und mach aus dem -B60 ein -B 600"

    An dieser Stelle nochmals ein Danke an den Guloshop!
    Kann ich wirklich nur empfehlen!
    Geändert von Lif (11.12.2012 um 14:27 Uhr)

Ähnliche Themen

  1. ATMEGA16 nicht mehr erreichbar. Fusebits falsch gesetzt?
    Von ricola im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 25.12.2013, 19:46
  2. Spannungsgesteuerter Frequenzgenerator als externe Taktgeber ?
    Von sthiemt21 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 2
    Letzter Beitrag: 16.03.2011, 19:40
  3. Fusebits als Hex berechnen
    Von zerush im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 25.02.2007, 17:06
  4. Fusebits werden falsch ausgelesen u. lassen sich nich ändern
    Von memi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 10.05.2006, 16:27
  5. Mega32 Fusebits falsch gesetzt
    Von klucky im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 28.01.2006, 23:49

Stichworte

Berechtigungen

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