At90usb162 nicht erkannt

OP #3052342
Lesenswert?

Hallo ich habe die Schaltung nach dem obigen Schaltplan aufgebaut, 
jedoch wenn ich den AT90usb162 an den USB-Port meines PCs anstecke, 
meldet er, dass das angesteckte USB-Gerät nicht erkannt werden konnte. 
Woran kann das liegen? Der Mikrocontroller sollte doch in den Bootloader 
starten und vom Computer erkannt werden. Bitte um eure Hilfe.
Angehängte Dateien:
#3052727
Lesenswert?

Florian Schuller schrieb:
> wenn ich den AT90usb162 an den USB-Port meines PCs anstecke,
> meldet er, dass das angesteckte USB-Gerät nicht erkannt werden konnte.

Dann ist Dein AT90USB162 ok. Denn zu diesem Zeitpunkt hat der PC ihn 
bereits als USB Gerät erkannt, kann aber mit der ID des USB Gerät nichts 
anfangen
(Merke: Die ID wurde bereits vom uP gesendet, d.h. der uP hat die 
Enumeration schon mal "überlebt". Glückwunsch, der Bootloader lebt noch 
:-)

Oder mit anderen Worten: Es ist kein passender Gerätetreiber auf dem PC 
installiert.

Schau mal im Gerätemanager nach. Da sollte jetzt irgendwo ein USB Gerät 
mit einem Fragezeichen (oder wars ein Blitz ? Weiss nicht mehr genau) 
auftauchen.
Bei Dem schaust Du mal nach der ID und vergleichst sie mit der des 
Atmels. Sollte die Gleiche sein ;-)

(Sry, für die Ungenauigkeiten. Aber ich kanns hier gerade nicht 
nachvollziehen. Wenn Du da nicht weiterkommst, dann poste noch mal. Dann 
kann ich das heute abend Zuhause vor dem Rechner checken, wo die ganzen 
uP dran sind)

Grüße
Andreas
OP #3052819
Lesenswert?

Danke für die Antworten, jedoch kann ich die ID nicht auslesen. Es steht 
nur Device_Description_Falure. (Siehe Foto)

>Dann ist Dein AT90USB162 ok. Denn zu diesem Zeitpunkt hat der PC ihn
>bereits als USB Gerät erkannt, kann aber mit der ID des USB Gerät nichts
>anfangen
>(Merke: Die ID wurde bereits vom uP gesendet, d.h. der uP hat die
>Enumeration schon mal "überlebt". Glückwunsch, der Bootloader lebt noch

Wird das USB-Gerät nicht schon erkannt wenn ein Pullup an einer der 
Datenleitungen liegt?
Angehängte Dateien:
#3053073
Lesenswert?

Florian Schuller schrieb:
> Wird das USB-Gerät nicht schon erkannt wenn ein Pullup an einer der
>
> Datenleitungen liegt?

Ja. Daran erkennt der PC typischerweise, dass da was dran ist. Beim 
At90USB162 wird über interne Config-Rs D+ nach high gepullt --> 
FullSpeed mode.

Dann hat doch Dein controller noch Probleme. Da fallen einem natürlich 
erst mal die üblichen Verdächtigen ein:

- Kurzschlüsse zwischen den Pins ?
- Versorgungsspannung an allen benötigten Pins ? (Das ist hier besonders 
wichtig). GND das Gleiche
- Fehlende C's (hatte oben schon jemand geschrieben)
- Ungünstiges Layout, insbesondere Oszillator und USB sind da kritisch.
- Oszillator schwingt nicht an

Wenn das alles gecheckt und ok ist, dann besorg Dir einen USB Logger. 
Mit so einem Programm kannst Du den USB Traffic am PC mitlesen und 
schauen, ob der AT90USB162 überhaupt mit dem PC redet.

Wenn nicht würde ich versuchen, ein Minitestprogramm über das normale 
Programmierinterface einzuspielen und zu sehen, ob das normal arbeitet.

Versuch diese Sachen mal. Ich vermute, es ist einer der ersten fünf 
Punkte. Wenn Du Hilfe brauchst, einfach posten :-)

Grüße
Andreas

P.S: Unbedingt Kapitel 19 im Datenblatt lesen ;-)
#3053213
Lesenswert?

Andreas H. schrieb:
> Dann hat doch Dein controller noch Probleme. Da fallen einem natürlich
> erst mal die üblichen Verdächtigen ein:

Es fehlt noch die Reset-Beschaltung (Pullup nach VCC).

Und die Abblockkondensatoren an der Versorgungsspannung.

Ich bin mir gerade nicht sicher, ob der Bootloader mit einem 16MHz-Quarz 
ordentlich tut. Ich meine bei mir hätte das mal funktioniert, würde aber 
meine Hand nicht ins Feuer legen. Mit 8MHz bist Du auf der sicheren 
Seite (eigentlich muss für 16MHz das Bit PLLP0 in PLLCSR gesetzt werden, 
mir ist gerade unklar was der Bootloader da macht)

Viele Grüße,
        Simon
OP #3053400
Lesenswert?

So ich habe jetzt die Schaltung nach euren Angaben abgeändert, doch es 
meldet sich immer noch nichts. Ich habe auch den Quarz mit dem Oszi 
gemessen und er schwingt an. Versteht irgendwer den Log den ich vorher 
gepostet habe?

>Ich bin mir gerade nicht sicher, ob der Bootloader mit einem 16MHz-Quarz
>ordentlich tut. Ich meine bei mir hätte das mal funktioniert, würde aber
>meine Hand nicht ins Feuer legen.

Ich hatte die Schaltung auch mal mit 16MHz aufgebaut und sie 
funktionierte, außerdem hab ich es auch schon mit 8MHz probiert, und das 
selbe Problem entstand.
Angehängte Dateien:
#3054489
Lesenswert?

Simon Budig schrieb:
> Ich bin mir gerade nicht sicher, ob der Bootloader mit einem 16MHz-Quarz
> ordentlich tut

Bei mir läuft der AT90USB162 mit 16MHz und USB problemlos.

@Florian: Wir reden hier aber schon von einem Bootloader, wie er von 
Hause aus (also ATMEL) drin ist, oder ?

Welche Debugmöglichkeiten hast Du denn ? Scope, ISP Programmer (MK II) ?

Kannst Du mal Fotos vom Board posten ? Da kann man ja auch oft den einen 
oder anderen "Glitch" erkennen.

Mir gehen sonst langsam die Ideen aus fürchte ich :/

Viele Grüße
Andreas
OP #3055043
Lesenswert?

>@Florian: Wir reden hier aber schon von einem Bootloader, wie er von
>Hause aus (also ATMEL) drin ist, oder ?

Ja exakt.

>Welche Debugmöglichkeiten hast Du denn ? Scope, ISP Programmer (MK II) ?

Ja die beiden auf jeden Fall.

>Kannst Du mal Fotos vom Board posten ? Da kann man ja auch oft den einen
>oder anderen "Glitch" erkennen.

Fotos kann ich erst morgen posten, aber ich werde am Wochenende, falls 
keiner mehr eine Idee hat, einen anderen AT90usb162 drauflöten. 
vielleicht geht es dann.
#3055347
Lesenswert?

Florian Schuller schrieb:
> otos kann ich erst morgen posten, aber ich werde am Wochenende, falls
> keiner mehr eine Idee hat, einen anderen AT90usb162 drauflöten.
> vielleicht geht es dann.

Bevor Du das machst, programmier doch mal einen Blinktest mit dem MKII 
direkt rein. Dann siehst Du erst mal, ob der Chip überhaupt vernünftig 
läuft. Bei der Gelegenheit kannst Du mal die fuses kontrollieren, ob da 
(woher auch immer) etwas falsch gesetzt ist.

Danach kannst Du z.B. mal (auch mit MKII Prg) die USB Schnittstelle 
konfigurieren und kontrollieren, ob sie dann Enumeriert wird.

Alles weniger "Neufehler"-anfällig als den Chip tauschen, oder ?

Grüße
Andreas
OP #3055961
Lesenswert?

Ich habe mal ein LED-Blinkprogramm auf meinen AT90USB162 draufgespielt:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#define F_CPU 16000000UL
4

5
int main(void)
6
{
7
DDRB = 0xFF;  
8
    while(1)
9
    {
10
        PORTB = 0xFF;
11
  _delay_ms(10000);
12
  PORTB = 0x00;
13
  _delay_ms(10000);
14
    }
15
}

Die LED sollte also alle 10sek. zwischen hell und dunkel wechseld. Dies 
geschieht aber alle 5sek. Hat jemand eine Idee woran das liegen kann?

>Bei der Gelegenheit kannst Du mal die fuses kontrollieren, ob da
>(woher auch immer) etwas falsch gesetzt ist.

Meine Fuses sind: LFUSE:0x5E,HFUSE:0xD9,EFUSE:0xF4. Müsste also passen.
OP #3056099
Lesenswert?

Ich habs jetzt so:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#define F_CPU 16000000UL
4

5
int main(void)
6
{
7
  int i;
8
  DDRB = 0xFF;  
9
    while(1)
10
    {
11
        PORTB = 0xFF;
12
    for(i=0; i<10000;i++)
13
    {
14
      _delay_ms(1);
15
    }
16
    PORTB = 0x00;
17
    for(i=0; i<10000;i++)
18
    {
19
      _delay_ms(1);
20
    }
21

22
    }
23
}

Sind aber genauso 5sek.
#3056193
Lesenswert?

Simon Budig schrieb:
> Oh. pack das #define F_CPU mal vor das include von util/delay.h

Ja, da hat Simon recht. Das define musst Du unbedingt vor dem include 
haben. Sonst wird in delay.h ein Default benutzt, der nur für 8 MHz 
korrekt ist.
Und defines werden vom Präprozessor umgewandelt, der Compiler sieht hier 
nur noch die Zahl.

Grüße
Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren