-         

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

Thema: Probleme mit Mega16 und STK500

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.02.2008
    Beiträge
    24

    Probleme mit Mega16 und STK500

    Anzeige

    Hallo Leute,
    hab da mal ein Problem.
    Ich habe die ganze Zeit mit dem STK500 die Mega8515 programmiert, hat auch wunderbar funktioniert. Nun brauchte ich analoge Eingänge und hab deshalb einen Mega16 genommen. Um ein Gefühl für den Controller zu bekommen habe ich erst einmal ganz einfachen Code programmiert. Nun wider aller Erwartungen habe ich Probleme bekommen. Wahrscheinlich sind die fusebits falsch gesetzt. Aber da kenne ich mich gar nicht aus. Wer weiß wie ich die fusebits bei einem Mega16 im STK500 setzen muß.
    Ein Beispiel: Zunächst kommt mir die Arbeitsgeschwindigkeit des Controllers sehr langsam vor. Das herunterzählen und anzeigen eines Ports geht so langsam, daß man es sehen kann.
    Dann ein anderes Beispiel. So funktioniert folgender Code.

    Do
    toggle portb.0
    wait 1
    loop

    Aber so funtioniert der Code nicht.

    Do
    portb.0 = 1
    wait 1
    portb.0 = 0
    loop

    Der Controller schaltet den Portpin auf 1 und fertig.

    Vieleicht weiß jemand weiter. Auf jeden Fall im voraus danke.
    Gruß Harald

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Das Teil läuft standardmäßig auf 1MHz internem Takt. Wie willst du es denn takten?
    Do
    portb.0 = 1
    wait 1
    portb.0 = 0
    loop
    schaltet ein, wartet eine Sekunde, schaltet aus, und dann geht es wieder von vorne los. Du schaltest also nach dem Ausschalten in kürzester Zeit (ein paar Taktzyklen) wieder ein.
    [/quote]

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.02.2008
    Beiträge
    24
    Hallo erstmal,
    also ich bin mir nicht ganz sicher was Du meinst. Der Mega16 steckt ja im Sockel vom STK500 und wird mit dessem Taktgenerator betrieben. Das heißt der Controller taktet standartmäßig mit 3686000 Hz. Ich habe gerade gelesen, daß ich in diesem Fall die Fusebits auf external Takt setzen muß. Ich muß mal nachschauen ob bezw. wie die Fusebits im Controller gesetzt sind. ich gehe hier bewußt vorsichtig vor weil ich halt nichts falsch machen will.
    Also vom Code her muß der Controller das ohne weiters ausführen. Wie gesagt ich hatte vorher einen 8515 drin und mit diesem Controller gabs mit solchen einfachen Codes keine Probleme.
    Gruß Harald

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    21.02.2008
    Beiträge
    24
    Hallo, ich bins nochmal.
    Sorry, hast natürlich recht. das Teil läuft mit internem Takt.
    Ich dachte weil es im STK500 an derem Taktsystem angeschlossen ist müßte es mit deren Takt laufen. Aber weit gefehlt, die fusebits waren gar nicht so eingestellt. Ich habe dann die fusebits umgestellt, jetzt ist der mega16 allerdings tot.
    Ich habe alles versucht was hier im Forum schon vorgeschlagen wurde, aber bis jetzt ohne Erfolg. NaJa sch... trauf, ich habe noch einen in Reserve.
    Das Problem mit dem Port besteht allerdings immernoch. Ich glaube fast es hat doch nichts mit den fusebits zu tun.
    Wenn der mega mit internem Takt von 1MHz läuft, sollte es doch kein Problem sein ein Portpin im Sekundentakt ein und auszuschalten. Wenn ich mit dem Befehl toggle Portb.0 wait 1, progge funktioniert es ja auch wunderbar.
    Also im Moment stehe ich voll auf'm Schlauch.
    Gruß Harald

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Wenn du nur den Takt umgestellt hast, kann der Mega nicht tot sein. Du hast entweder auf Quarz oder auf Oszillator gestellt, beides funktoniert im STK gleich. Es kann nur sein das die Jumper des STK auf Quarz sind und keiner gesteckt ist.
    Eine weitere Möglichkeit wäre das du den Reset abgeschaltet hast, das lässt sich aber mit HV-Programmierung beheben.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.12.2004
    Alter
    33
    Beiträge
    165
    Zitat Zitat von harry2212
    Das Problem mit dem Port besteht allerdings immernoch. Ich glaube fast es hat doch nichts mit den fusebits zu tun.
    Hat es auch nicht, das hat was mit dem der sich die Software ausgedacht hat zu tun

    Code:
    Do 
    portb.0 = 1 
    wait 1 
    portb.0 = 0 
    loop
    Ueberlegen wir uns doch einfach mal was der Controller so ausfuehrt..

    Schalte PB0 ein.
    warte 1 Sekunde
    Schalte PB0 aus
    Schalte PB0 ein
    warte 1 Sekunde
    Schalte PB0 aus
    Schalte PB0 ein
    usw.

    Du erkennst das Problem? Einen Takt nachdem die Led ausgeschaltet wurde wird sie schonwieder eingeschaltet. Da is klar das man nix sieht,

    Eine kleine Aenderung und das ganze sollte wie gewuenscht funktionieren:
    Code:
    Do 
    portb.0 = 1 
    wait 1 
    portb.0 = 0 
    wait 1
    loop

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.02.2008
    Beiträge
    24
    Hallo Alle zusammen,
    danke für Eure Interesse. Zunächst zum Tod vom Mega16.
    Er lebt wieder. Ich hatte noch ein altes Galep, mit dem ließ sich der Mega problemlos programmieren.

    Jetzt zu dem Code, ich würde sagen das leuchtet mir ein. Ich probiers gleich aus. Melde mich dann wieder.
    Gruß Harald

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    21.02.2008
    Beiträge
    24
    Hallo ich bins nochmal,
    also habs probiert. Du hast natürlich recht. Das zeigt mir mal wieder, daß man bei einem Fehler immer wieder den gleichen Fehler begeht und am besten den Rat Dritter einholt.
    In diesem Sinne nochmals vielen Dank für Eure Hilfe.
    Gruß Harald

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    21.02.2008
    Beiträge
    24
    Hallo Alle zusammen,
    ich habe mal wieder eine Frage zum Mega16. Es geht um die Genauhigkeit des internen Taktes.
    Ich habe mittels timer0 interrupst eine Variable hochgezählt, sodaß alle 60 Sekunden eine Led getoggelt wird um die Zeit zu stoppen.
    Ich habe nun festgestellt, daß ich bei einer Minute eine Abweichung von 4 Sekunden habe. Bei einem internen Takt von 8 Mhz.
    Ist die Ungenauhigkeit normal?
    Sollte ich den mega besser mit externem Quarz betreiben. Oder vieleicht sogar mit einer realtime clock?
    Gruß Harald

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601
    Hi,

    ich kann RTC nur empfelen, die sind z.B. über I²C ansteuerbar und messen
    die Zeit ziemlich perfekt und können auch ohne Versorgungsstrom mit
    einer kleinen Baterie lange überleben. Zu der Ungenauigkeit: es wird oft
    geschrieben, dass der interne Quarz sehr unstabiel ist, aber 4 sec? Vill.
    solltes du mal dein Programm posten.

    Was mir aufgefallen ist, vill. sollte man mal anfangen so ein Wikibeitrag
    zu schreiben, der sich mit den Anfängerfehlern von Bascom befasst,
    Beispiele wären z.B. diesese an,warten aus, an oder der Versuch
    2 Do...Loop SChleifen gleichzeitig zum Laufen zu bringen.
    Grüße Furtion

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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