Forum: Mikrocontroller und Digitale Elektronik AT90USB646 USB wird nicht erkannt


von Waigel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

wie im Anhang zu sehen ist, habe ich mir ein eigenes Entwicklungsboard 
mit einem AT90USB646 gemacht. Leider wird dieser bei Anschluss an eine 
PC nicht erkannt. D.h. er passiert gar nichts.

Folgendes wurde bereits geprüft:

- Alle VCC und GND Anschlüsse sind versorgt.
- Reset und HWB Taster funktionieren (Ungedrückt High, sonst low)
- D+ und D- sind nicht vertauscht

- Reset und HWB besitzen eine Pull Up wie gefordert
- An UCAP ist in 1uF Kondensator gegen Masse


Mit einem ISP Programmer bekomme ich kontakt zu Mikrocontroller.
Folgende Fuses sind gesetzt:

Brownout detection bei 2,4V
HWBE, CKDIV8
Ext. Crystal Osc. 8.0- Mhz 258CK + 65ms

Nachdem NICHTS funktioniert hat, habe ich mit dem ISP Programmer den 
uController erased (Ja, ich weiß, der Bootloader ist jetzt weg). Ich 
habe ein simples program eingespielt, das nur eine LED schalten soll, 
nichteinmal das funktioniert. Daher war der Verdacht da, dass etwas mit 
dem Clock nicht stimmt. Doch auch nach umstellung auf den internen Clock 
leuchtete kein LED.

Woran könnte es noch liegen ? Ich hoffe auf eure Hilfe.

Vielen Dank schon mal.
Gruß,
Waigel

von Waigel (Gast)


Lesenswert?

Ich hab jetzt etwas weiter geforscht und herausgefunden, dass der 
uController GAR NICHTS macht.

Ich kann mit dem ISP Programmer den uController programmieren, die Fuse 
bits setzen, alles.
-> Ein Takt gibt es und der uController arbeitet auch.
(extern hängt ein 16MHz quarz dran, habe aber auch schon die internen 
1MHz probiert)

Ich hab folgendes simples Programm eingespielt und hänge mit dem Osci 
auf PC0 und PC1:
1
int main()
2
{
3
  DDRC = 0xFF;
4
  PORTC = 0xFF;
5
  
6
  int cntr = 0;
7
  while(1)
8
  {
9
    if(cntr == 255)
10
    {
11
      PORTC |= (1<<PC0);
12
      cntr = 0;
13
    }
14
    else
15
    {
16
      PORTC &= ~(1<<PC0);
17
      cntr++;
18
    }
19
  }
20
}

Beide Pins bleiben low, nichts ändert sich. D.h. für mich, der 
uController läuft nicht, bzw. es wird nichts ausgeführt.

Was also kann hier falsch sein ?


Danke euch für eure Antworten.

Gruß,
Waigel

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hast du wirklich mit ISP gearbeitet oder mit JTAG?  (Dein Schaltplan
zeigt keinen ISP-Steckverbinder, wohl aber einen für JTAG.)

Hintergrund: ISP würde nicht mehr funktionieren, wenn mit dem Takt
des Controllers was im Argen ist, JTAG dagegen benutzt (beim
Programmieren) seinen eigenen Takt, sodass du einen kaputten CPU-Takt
nicht bemerkst.

Ansonsten bliebe eigentlich nur noch ein Kurzschluss von /RESET nach
Masse, sodass der Controller die ganze Zeit im Reset ist.  Das merkst
du mit keinem der beiden Programmier-Interfaces.

Zwischen "es läuft überhaupt erst einmal ein Stück Firmware" und
"meldet sich am USB" liegen jedoch Welten.  (OK, mit dem Bootloader
hätte es natürlich gehen sollen.)

von Waigel (Gast)


Lesenswert?

@ Jörg Wunsch

Es war nicht vorgesehen an die Schaltung mit einem ISP Programmer 
ranzugehen. Nachdem aber sämtliche IO Ports herausgeführt sind, habe ich 
zu Debug zwecken einen ISP Programmer angeschlossen.
Es ist also wirklich einer dran. (Hintergrund: Ich hab nur ein Evertool 
JTAG device und das unterstützt den AT90USB646 nicht).

Den /Reset habe ich glaube ich schon 20mal geprüft. Der liegt immer auf 
+5V und wenn der Taster gedrückt wird auf 0V.

Der Thread heißt "USB wird nicht erkannt", weil ich zunächst ein USB 
Problem vermutet hatte, nur hat sich eben jetzt herausgestellt, dass der 
uController selber erst mal "nichts" tut.

Ich weiß gerade echt nicht weiter wo ich noch suchen soll. Denn 
eigentlich, wenn er per ISP Programmer erreichbar ist und er Reset es 
nicht ist, dann muss er laufen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Waigel schrieb:
> Denn
> eigentlich, wenn er per ISP Programmer erreichbar ist und er Reset es
> nicht ist, dann muss er laufen.

Sehe ich auch so.  Vielleicht tatsächlich defekt?

von Waigel (Gast)


Lesenswert?

Ich hab eben das CKOUT Fuse bit gesetzt.

Bei internem RC Osc. messe ich dort einen 8MHz Takt mit dem Osci. (5V 
Ampl.)
Bei externem Crystal Osc. messe ich entsprechend einen 16MHz Takt.

-> Ext. Crystal funktioniert und auch der interne Takt kommt.

Welche Art von Defekt könnte denn dazu führen, dass der uController 
"normal" funktioniert und auch reagiert, nur sein Programm nicht 
ausführt ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sind alle Fuses im Originalzustand (siehe Datenblatt)?

von Waigel (Gast)


Lesenswert?

Ja, habe eben alle fuses in den orignal Zustand laut Datenblatt gesetzt, 
keine Änderung (nur dass kein Takt an PC7 mehr zu messen ist. OK, das 
CKOUT ist auch nicht mehr gesetzt).

Ext: 0xF3
High: 0x9B
Low: 0x5E

Sind eventuell Änderungen notwending, nachdem der Bootloader per ISP ja 
gelöscht wurde ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Waigel schrieb:

> Sind eventuell Änderungen notwending, nachdem der Bootloader per ISP ja
> gelöscht wurde ?

Nö, wenn er damit partout nichts macht, würde ich auf einen kaputten
Controller tippen.  Möglicherweise harrt er intern immer im Reset.

Mit einem aktuelleren JTAG ICE (oder AVR Dragon) könntest du natürlich
mal versuchen herauszufinden, ob er überhaupt irgendeinen Befehl
abarbeitet.

von Waigel (Gast)


Lesenswert?

Ein AVR Dragon oder vergleichbares habe ich leider nicht zur Hand.
Ich bekomme die Tage aber noch ein 2. Exemplar der obigen Schaltung (da 
es sich dabei um eine gefärtigte Platine handelt.)

Mal sehen ob die sich genauso verhält, ansonsten ist wohl der 
uController hinüber.

Danke erst mal für die Mühe. Falls jemandem noch etwas einfällt....


Gruß,
Waigel

von Stefan Salewski (Gast)


Lesenswert?

>Welche Art von Defekt könnte denn dazu führen, dass der uController
>"normal" funktioniert und auch reagiert, nur sein Programm nicht
>ausführt ?

Auf jeden Fall gab es schon zahlreiche Berichte über nicht 
funktionierende SELBSTGEBAUTE Boards mit AT90USB1287, auch hier im 
Forum. Ich kann mich aber nicht errinnern, dass jemand mal die Ursache 
ergründet und berichtet hätte, höchstens ein "jetzt geht es" oder so, 
teilweise nach Chip-Tausch. Meine Boards liefen stets, war vielleicht 
nur Glück. Aber AT90USB128x -- will man den heute noch freiwillig 
einsetzen, ist doch schon etwas angegraut. (Ich hoffe man kann den 
AT90USB128 überhaupt noch kaufen, denn ich werde irgendwann noch einige 
benötigen.)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan Salewski schrieb:
> ber AT90USB128x -- will man den heute noch freiwillig
> einsetzen

Wenn du bei AVR und 64 oder 128 KiB Flash bleiben willst, was wölltest
du sonst nehmen?  Lediglich für die AT90USB82/162 scheint es in Form
der ATmega*U2 bislang Nachfolger zu geben.  Habe gerade nicht geguckt,
was die ATmega*U4 genau sind, aber zumindest gibt's die nicht mit
USB-OTG (OK, hat der '646 auch nicht) und auch wiederum maximal mit
32 KiB Flash-ROM.

von Waigel (Gast)


Lesenswert?

@ Stefan Salweski

Da freut man sich doch über ein so tolles Produkt aus dem Hause Atmel 
;-)
Grundsätzlich ist an meiner Schaltung nicht viel dran. Und zusätzlich 
handelt es sich noch um einen gefertigt Platine, keinen 
Lochrasteraufbau. Und dann wurde das ganze noch professionel bestückt. 
D.h. die Wahrscheinlichkeit eines Schaltungsfehlers ist verhältnismäßig 
gering, nachdem der Plan nicht komplex und soweit auch stimmig ist.


@all
Wie gesagt, ich schau mal morgen was das 2. Exemplar macht (bzw. nicht 
macht) und geb dann Bescheid.



PS.: Auf dem Board befindet sich noch ein FTDI, der am uController 
angeschlossen ist und der funktioniert. (tut nichts zur Sache, aber nur 
so am Rande)

von Stefan Salewski (Gast)


Lesenswert?

Hallo Jörg,

ja, ich persönlich habe eh eine recht starke Bindung an den AT90USB1287, 
Du weist wahrscheinlich warum -- wenn nicht ist auch nicht schlimm.

Aber er ist über 5 Jahre auf dem Markt, vor ca. 6 Monaten war er recht 
schlecht erhältlich, da wollte ich mir eventuell ein paar Dutzend 
einmotten...

Ja, was gibt es denn sonst für schöne Chips mit USB? Auf XMEGA mit USB 
hatte ich mal gehofft. Einige ARM Cortex mit High-Speed gibt es wohl 
jetzt, ist aber eine andere Welt, und gehört eh nicht in diesen Thread.

Gruß, Stefan

von Waigel (Gast)


Lesenswert?

@ Stefan

Der AT90USB128 und der 646 sind ja quasi "baugleich". Ich hab ihn auch 
wegen des USBs verwenden wollen um unkompliziert ein HID device zu 
emulieren. Aber naja....

von Waigel (Gast)


Lesenswert?

Mir ist gerade noch eingefallen, hat eingentlich jemand von euch den 
original Atmel DFU Bootloader zum 646 zur hand ?
Dann bei Atmel kann man den wohl seit der Umstellung der Webseite nicht 
mehr herunterladen.
(nur für den Fall, dass das Ding mal läuft und ich den dann wieder 
aufspielen will)

Danke.

von Stefan Salewski (Gast)


Lesenswert?

>original Atmel DFU Bootloader zum 646 zur hand ?

Soweit ich weis gibt es von Dean Camera (LUFA) eh eine Open-Source 
Alternative.

von Waigel (Gast)


Lesenswert?

Hallo nochmal,


ich habe frohe Kunde; Eben habe ich das 2. Board getestet und es hat auf 
sofort funktioniert. USB, Bootloader, alles.

Ich verzeichne das jetzt ganz oben auf der Top10 Liste mit merkwürdigen 
Fehlern rund um Atmels. Denn dass ein Defekt sich so seltsam auswirkt 
!?...

Naja. Viele Dank für eure Hilfe und noch viel Erfolg mit euren 
Projekten.

Gruß,
Waigel

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.