Hallo Leute!
Ich hab ein kleines Problem. Ich hab ein Testboard (in der Schule
gefertigt) auf dem ein at89c5131 verbaut ist. Hat bis gestern auch super
funktioniert, nur dann hab ich ein Programm drauf gespielt das auf
folgende Speicherstellen Werte speichert...
speicher1 data 08h
speicher2 data 09h
speicher3 data 0Ah
speicher4 data 0Bh
speicher5 data 0Ch
Seit dem ich das Programm drauf gespielt hatte kommt immer wenn ich mein
Board via USB an den Laptop anschließe "USB-Gerät wurde nicht
erkannt"...
Habs schon an mehreren Computern versucht, aber überall das gleiche
Problem...
Ich hatte bevor ich das Programm drauf gespielt habe (wenn ich mich noch
richtig erinnere) ein Programm drauf, das auf folgende Speicherstellen
Werte gespeichert hat:
speicher1 data 08h
speicher2 data 09h
speicher3 data 0Ah
Und danach konnte ich den Controller noch programmieren... Bin mir aber
nicht mehr ganz 100%ig sicher... Also nehme ich an, dass das Speichern
auf die Speicherstellen 0Bh und 0Ch nicht so toll war...
Kann es sein, dass ich damit irgendwie die "Bootloader" funktion
überschrieben habe? Oder dass ich irgend was anderes überschrieben habe,
das für den Controller wichtig war???
Bin noch ziemlich neu auf dem Gebiet, und hab deshalb noch nicht
wirklich viel Ahnung davon... :(
Muss ich nun einen neuen Controller kaufen, oder kann man da irgend was
noch machen?
Auf dem Testboard ist auch ne RJ 232 Schnittstelle, aber auch über die
kann ich den Controller nicht neu Programmieren... (zumindest habe ich
es nicht hinbekommen)
Was ich vielleicht auch noch schreiben sollte: Das Programm, dass auf
dem Controller drauf ist läuft. Und Funktioniert auch, also er speichert
Werte auf die Speicherstellen und kann sie auch abrufen...
Hoffentlich kann mir jemand helfen...
Vielen Dank schon mal,
mfg Sunnyboy
Habe gerade noch was gefunden:
Boot Loader Jump bit (BLJB):
- This bit indicates if on RESET the user wants to jump to this
application at address
@0000h on FM0 or execute the boot loader at address @F400h on FM1.
- BLJB = 0 (i.e. bootloader FM1 executed after a reset) is the default
Atmel factory programming.
-To read or modify this bit, the APIs are used.
Da unser Lehrer gesagt hatte wir müssen BLJB setzen, hab ich das auch
gemacht... Liegt es vielleicht daran?
Wie bekomme ich das nun aber wieder auf 0, weil ich komm ja über usb
nicht mehr dran...
Oder hat das damit garnichts zu tun?
Grüßle, Sunnyboy
Das Bootloader-Jump-Bit sorgt dafür, dass der µC in den Bootloader geht,
welcher standardmäßig bereits auf dem Chip ist. Bei einigen Devices kann
er auch gelöscht werden, weiss nicht, ob's auf deinen Chip zutrifft.
Ich glaube nicht, dass es an den Speicherstellen liegt, da diese
adressmäßig zu weit unten liegen, um "Schaden" anrichten zu können, wenn
man sie beschreibt.
Probier mal, ganz normal mit FLIP auf den Controller zu kommen. Sollte
das nicht funktionieren, musst du den Bootloader per Hardware-Condition
starten. Da es unterschiedliche Gehäuse für den Chip gibt, musst du im
Kapitel 11.5 des Datenblattes nachlesen, was du tun musst, um den
Bootloader zu starten. Falls du PSEN auf Low ziehen musst, dann über
einen 1k-4k7 Widerstand, nicht direkt an GND!
Ralf
Vielen Dank Ralf für deine Hilfe!
Ich habe mich die letzten Tage damit etwas intensiver beschäftigt und
habe einiges dazu in den Datenblättern und auch in Foren gefunden.
Ich habe mir nun mal den Stromlaufplan unseres Boards angeschaut, und
habe leider feststellen müssen, dass wenn wir das Board programmieren,
dass über den Schalter PSEN auf GND gelegt wird (über einen 1k5
natürlich). Somit startet unser Board standartmäßig schon den Bootloader
per Hardware-Condition.
Darum gehe ich nun einfach davon aus, dass der Chip auf irgendeine dumme
Art und Weiße einfach kaputt gegangen ist.
Ich habe mir auch schon mal vorsorglich 3 neue Chips bestellt :)
Aber eine Frage habe ich nun noch:
Ich will ja nun nicht gleich wieder einen Chip zerstören, deshalb meine
Frage: Welche Speicherstellen kann man denn nun ohne Bedenken benutzen
um Werte in einem Programm zwischen zu Speichern?
Ich weiß - Im Datenblatt nachlesen - das habe ich zuvor ja auch schon
gemacht, aber vielleicht kann mir ja jemand sagen "An die Stellen ABh -
XYh kannst du getrost speichern, das habe ich auch schon mal gemacht und
alles hat einwandfrei funktioniert" :)
Vielen Dank für eure Hilfe,
Sunnyboy-88
Wenn kein Programm mit USB-Enumeration programmiert
wird, dann wird auch der 5131 nicht als USB-Device
erkannt.
Lediglich im Bootloader-Modus.
Ich würde den "kaputten" Controller nicht voreilig
entsorgen. Wahrscheinlich funktioniert er noch und
alles ist nur ein Mißverständnis.
Hi,
ist das Problem noch aktuell?
Beachte bitte: dass wenn der Schalter auf Programmieren gestellt wird,
also PSEN auf Masse gelegt, du innerhalb einer Sekunde die Reset-Taste
drücken musst. Sonst erscheint genau deine beschriebene Fehlermeldung.
Gruß Jan
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.