Hallo zusammen, ich habe ein Board mit einem at89c51cc03 das nicht läuft. Das Problem ist, dass Flip mir beim download den Fehler "timeout error" schreibt. Gut der Fehler kann natürchlich überall stecken, aber ich möchte erstmal wissen, ob der Controller sich in den Bootloader-Modus befindet. Wie kann ich das herrausfinden ? Muss sich der Controller mit einem bestimmten Code melden, den ich mir mit Hyperterminal anschauen kann (welche Bautrate)? Vielleicht kann mir einer etwas genauer erklären, was im Boot-Modus genau vorsich geht. Danke
Hm... Zum Bootloader gibts normalerweise eine Anleitung (=separates PDF-File von Atmel). Hast du da schon mal reingeguckt? CC03 hört sich für mich nach CAN an, ist das richtig? Wie genau sieht denn deine Hardware aus? Bei den seriellen Bootloadern von Atmel ist es so, dass man zuerst ein 'U' schickt. An diesem U erkennt der Controller automatisch die Baudrate. Das U schickt er auch wieder zurück, so dass du daran erkennen kannst, ob der Bootloader läuft. Desweiteren steht auch beschrieben, wie der Controller PER HARDWARE in den Bootloader-Modus zu setzen ist (Gut, wenn man ihn per Software nicht mehr in den BL-Modus bekommt grins). Hast du das befolgt bzw. wie realisierst du das? Ralf
Hey Ralf, ja es gibt diesen Controller in zwei varianten. Ich habe den, mit der seriellen Schnittstelle. Leider muss ich den Boot-Modus manuell über zwei taster einstellen, was aber auch geht. Das Board, welches ich habe, ist das:TFH-ONE-BOARD. Kennst du dich ein wenig mit dem Programm Flip von Atmel aus? Es tritt nämlich auch schon ein fehler beim einstellen des BLJB, ein fehler auf. Vielleicht weil das Programm da schon versucht auf den Controller zu zugreifen. Ich werde mal versuchen ein U mit Hyperterminal herunter zu laden. Da ich die Platine selber gelötet habe, kann mir natürlich an irgendeiner Stelle ein Fehler unterlaufen sein.
Dann poste mal den Schaltplan. Dann kann man Fehler schon mal ausschließen (oder erkennen grins). Ich benutze den AT89C51ED2, mit dem habe ich bei FLIP keine Probleme. Aber ich hab mal gehört, dass es mit einigen FLIP-Versionen Probleme gibt. Welche Version hast du? Ralf
Hey, ich benutze die Version 2.4.4 Da ich keine Pufferbatterie angeschlossen habe, sind diese anschlüsse am Max 807 von mir gebrückt worden. Ich hoffe das, dass richtig war :) Ich habe auch mit Hyperterminal geschaft ein U herunter zu laden und habe es auch sofort wieder empfangen. So kann ich wohl davon ausgehen das der Controller in sein BOOT-Menü ist. Trotzdem bekomme ich mit FLIP, immer diese ...Meldung "Timeout error" Ich habe auch nur die nötigsten Jumper auf dem Board gesteckt, so das es keine Spannungsüberwachung des Max 807 gibt. Bis dann Dirk
Jawohl, es läuft !!! Der Fehler war der Jumper 19, den ich gesteckt hatte. Nachdem ich ihn entfernt habe, läuft alles wunderbar. Ich bedanke mich bei dir, für die freundliche Unterstützung dieses Problem's. Was genau machst du eigentlich mit deinem Controller?
Dann ist es wahrscheinlich eine Einstellung bei FLIP, die du übersehen hast. Wenn ich heut abend zuhause bin, guck ich mir deine Schaltung und meine FLIP-Einstellungen an, und sag dir dann Bescheid... Gruß Ralf
Ups, sehe gerade, dass du gepostet hattest, als ich noch am Schreiben
war grins
Freut mich, wenn ich helfen konnte.
> Was genau machst du eigentlich mit deinem Controller?
Ich benutze den ED2, weil er sich selber programmieren kann, um meine
Software auszutesten. Danach kommt normalerweise ein S52/S53/S8252 zum
Einsatz, es sei denn, ich brauche mehr als die bieten, dann bleibts
beim ED2.
Konkret arbeite ich gerade an einer allgemein verwendbaren
Basis-Programmierung für die serielle Schnittstelle,
interrupt-gesteuert, Ringspeicher, Handshake.
Danach wird ein ISP-Programmer für eben die S52/S53/S8252 programmiert
(daher auch die serielle Basisfunktionalität, die brauch ich da
nämlich).
Und dann habe ich vor, Funktionen für Grafikdisplays mit
T6963C-Controller zu schreiben.
Warum fragst du? Hast Interesse mitzumachen? grins
Ralf
@Ralf ich hätte interesse am Ringspeicher! Da mir das Konzept nicht bekannt ist bzw. richtig was vorstellen kann wie es funktionieren soll. Wäre nett wenn Du da ein paar infos hättest speziell der Umsetzung auf einem ED2 in C oder Assembler egal. Also bitte keinen kompletten Code nur etwas, dass das Prinip erklärt. Dank im voraus. norad
Hi Norad, das mit dem Ringspeicher ist eigentlich easy zu verstehen. Ich mach das jetzt mal Prozessor-unabhängig und mit einigen C-Code-Fetzen. Meine Lösung sieht aus wie folgt: Als Beispiel gehe ich von einem Ringspeicher aus, der maximal 255 Bytes speichern kann: unsigned char ucBuffer[255]; Ich verwende jeweils eine Byte-Variable zum Schreiben (ucWrite), und eine zum Lesen (ucRead). Eine dritte Byte-Variable enthält die Menge der gültigen Daten im Buffer (ucCount), diese Variable erleichtert die Verwaltung. So kann man mit ihr Überläufe feststellen, oder kontrollieren, ob gültige Daten da sind. Alle drei Variablen sind initial auf 0 zu setzen. Wenn ich eine Variable in den Buffer schreiben möchte, sieht das so aus: ucBuffer[ucWrite] = ucData; schreiben ucWrite++; auf nächste Bufferstelle indizieren ucCount++; Datenzähler inkrementieren if(ucWrite == X) ucWrite = 0; Bufferende erreicht, von vorne beginnen Zum Lesen genau das Gegenteil: ucData = ucBuffer[ucRead]; lesen ucRead++; auf nächste Bufferstelle indizieren ucCount--; Datenzähler dekrementieren if(ucRead == X) ucRead = 0; Bufferende erreicht, von vorne beginnen So, jetzt noch mal in der Übersicht: Alle drei Verwaltungsvariablen sind zu Beginn 0. Der Buffer selbst kann irgendwelchen Kruscht enthalten, da ucCount anzeigt, dass keine gültigen Daten drin sind, ist das egal. Möchte ich aus dem Buffer lesen, prüfe ich zuerst ucCount. Ist ucCount = 0, so ist nix drin. Ist 0 < ucCount <= BUFFERGRÖßE, so ist alles okay. Ist ucCount > BUFFERGRÖße, so gab es einen Überlauf, die Daten sind futsch (Schwer erkennbar, wenn Buffergröße im Bereich von 256 liegt, in dem Fall besser INTEGER für ucCount verwenden) Beim Schreiben prüfe ich ucCount ebenfalls, so kann ich verhindern, dass ich den Buffer überschreibe. So, halben Roman geschrieben, hoffentlich keine Fehler drin grins Hoffentlich ist das verständlich :-) Wenn nicht, ruhig noch mal nachfragen. Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.