Forum: Mikrocontroller und Digitale Elektronik Atmel at89c5131 wird nicht mehr über USB erkannt (defekt?)


von Sunnyboy-88 (Gast)


Lesenswert?

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

von Sunnyboy-88 (Gast)


Lesenswert?

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

von Ralf (Gast)


Lesenswert?

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

von Sunnyboy-88 (Gast)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

Beim Kauf neuer 5131 darauf achten, dass es 3-Volt-Typen
gibt und 5-Volt-Typen, deren externe Beschaltung etwas
unterschiedlich ist.

von Gast (Gast)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.