Brauche mal Hilfe beim ATmega 2560 Pro Mini.

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Brauche mal Hilfe beim ATmega 2560 Pro Mini.

      Ich habe Probleme bei Config DCF, Auf dem Arduino Nano ohne Probleme, beim ATmega 2560 läuft alles in Zeitlupe ab, 4 x langsamer. Serielle Daten lassen sich einlesen, 1wire aber nicht. Timing stimmt nicht
      .
      Setzte ich $crystal = 16000000 auf 4000000 funktioniert 1wire und nach Anpassung Config Com2 = 9600 auf Config Com2 = 2400 auch serielles einlesen, aber die Uhr läuft 4 x so schnell.
      Hat irgendjemand einen Rat, nichts im Internet gefunden und mit den Erklärungen in der Hilfe von Bascom blicke ich nicht wirklich durch.



      $regfile = "m2560def.dat"
      $crystal = 16000000
      $hwstack = 128
      $swstack = 128
      $framesize = 128

      Enable Interrupts

      $timeout = 100000

      $lib "glcdKS108.lib"

      '--- DCF initialisieren Anstelle von Timer ------------------------------------------------------------------------------------------------------
      Config Dcf77 = Pink.7 , Inverted = 0 , Timer = 1 , Debug = 0 , Check = 0 , Update = 2 , Gosub = Sectic
      Config Date = Dmy , Separator = .


      '--- Configuriere das LCD -------------------------------------------------------------------------------------------------------------------------
      Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 1 , Ce2 = 0 , Cd = 5 , Rd = 4 , Reset = 2 , Enable = 3
      Initlcd : Cls : Waitms 500


      --- RXD1 ---------------------------------------------------------------------------------------------------------------------------------------------
      Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
      Enable Urxc1
    • Bella-Amica wrote:

      Setzte ich $crystal = 16000000 auf 4000000 funktioniert 1wire und nach Anpassung Config Com2 = 9600 auf Config Com2 = 2400 auch serielles einlesen, aber die Uhr läuft 4 x so schnell.
      Der Compiler berechnet die Timer-Werte, damit die Routine Sectic jede Sekunde aufgerufen wird. Dafür verwendet er die Angabe von $Crystal.
      Wird hier 4MHz angegeben, der tatsächliche Takt aber 4x schneller ist, muss logisch die Uhr 4x so schnell laufen.

      Um Umkehrschluss muss das bedeuten, dass wenn $Crystal=16000000 angegeben ist, der Controller auch 16MHz Takt bekommt. (Uhr läuft richtig)

      Verwunderlich ist allerdings, dass dann die serielle Schnittstelle und OneWire bei falschem Takt ($Crystal=4000000) funktioniert.

      Ich denke an der Stelle müsste man mal den gesamten Code sehen um den Fehler zu finden.

      Mit welcher Bascom-Version arbeitest du da?
    • Michael wrote:

      Wenn ich zum ersten mal einen Chip benutze, dann lade ich ein einfaches Blinkprogramm in den AVR.
      Do
      Toggle LED
      Waitms 500
      Loop

      Im Vergleich mit dem Sekundenzeiger der Wanduhr sehe ich recht schnell, ob es signifikante Abweichungen gibt.
      Wenn es keine gibt, dann stimmt die Angabe bei $crystal und ich kann weiter programmieren.
      ist ja auch die einfachste Variante um schnell zu checken ob alles richt läuft. Bzw auch gerade wenn nochmal was am Takt, Timer oder Fusebits geändert wird. Hat ja nix mit Basics wenig tun.

      Ich hätte ja als erstes aufs Fusebit E gesetzt. Aber das wäre der Faktor 8... Merkwürdig find ich allerdings das du sagst für die Uhr stimmt der Takt.

      Würde immernoch Michaels kleinen Test benutzen. Ist wirklich am einfachsten. Mach ich jedes mal so, wenn ich den Verdacht hab da stimmt was nicht. Ich finde da auch nichts Schlimmes dran. Selbst Ausgänge teste ich oft kurz mit einem einfachem Programm bei welchem diese einfach im Sekunden takt durchgeschalten werden. Dann kannst immer sicher sein es liegt an dir und deinem Code und nicht an der Hardware ;)

      The post was edited 3 times, last by darasol ().