Forum: Mikrocontroller und Digitale Elektronik USB mit obdev auf Tiny45 ohne Quartz


von Rene Z. (renezimmermann)


Lesenswert?

Hallo,

habe dieses Projekt mal nachgebaut:
http://www.obdev.at/products/avrusb/easylogger-de.html

Mein Computer sagt aber immmer wenn ich das Ding per USB Verbinde: 
"USB-Gerät wurde nicht erkannt".

Hat das schon mal jemand nachgebaut? Gab es dabei Probleme? Mir ist 
unklar wie ich die Fuse setzen muß. Muß der EEprom leer sein?

Gruß Rene

von Durchblicker (Gast)


Lesenswert?

Ich denke, Du musst den High Frequency PLL Clock - PLLCLK benutzen, also 
CKSEL3:0 auf 0001 setzen. Weiterhin muss dann noch die Frequenz auf 
16.5MHz kalibriert werden.

Insofern kann ich mir nicht vorstellen, dass bei diesem Projekt ein 
zuverlässiger Betrieb möglich ist. Ein Anforderung von 1% kann unmöglich 
erfüllt werden. Schon 5% für eine normale UART machen ziemliche 
Probleme.

Ich kann die Stelle in der Spec von Atmel auch nicht finden, die 1% 
Genauigkeit angibt. Das gilt wohl nur für konstante Raumtemperatur und 
Versorgungsspannung. Dafür ist USB aber nicht gerade bekannt.

Betrachte es einfach als Studie, die jemand einmal zum Laufen gebracht 
hat.

P.S. Es gibt keine leeren EEPROMs.

von Rene Z. (renezimmermann)


Lesenswert?

Hallo,

da haben wir schon den ersten Fehler, PLL habe ich nicht benutzt. Ist 
jetzt geändert aber immer noch das selbe Ergebnis. Ein leerer EEprom 
heisst für mich alle Bytes sind 0xFF. Ich Spiele hier auf folgende 
Stelle im Quellcode an:
1
    uchar calibrationValue = eeprom_read_byte(0);
2
    if(calibrationValue != 0xff){
3
        OSCCAL = calibrationValue;  /* a calibration value is supplied */
4
    }else{
5
        /* we have no calibration value, assume 8 MHz calibration and adjust from there */
6
        if(OSCCAL < 125){
7
            OSCCAL += 3;    /* should be 3.5 */
8
        }else if(OSCCAL >= 128){
9
            OSCCAL += 7;    /* should be 7 */
10
        }else{  /* must be between 125 and 128 */
11
            OSCCAL = 127;   /* maximum possible avoiding discontinuity */
12
        }
13
    }

Als Studie will ich das eigentlich nicht abhaken, zumal die Xtal 
Anschlüsse für die reine Anmeldung (Enumeration] am PC keine Rolle 
spielen, sodaß man da doch einen Quartz anschliessen könnte. Dann sollte 
1% überhaupt kein Problem mehr sein.

Gruß Rene

von Durchblicker (Gast)


Lesenswert?

Richtig. Versuche es erst mit einem Quarz und verschlechtere Dich dann. 
Somit hast Du schon mal eine funktionierende Referenz.

von Geraldo (Gast)


Lesenswert?

Hallo Rene,

war bei mir am Anfang auch so...
Ich hab dann ein Oszi angeschlossen, den CLKOUT aktiviert und die 
Frequenz gemessen. Dann mit dem ersten Byte im EEProm die Frequenz 
eingestellt. Seitdem läufts.
Hinweis: Du kannst das OSCCAL-Byte auslesen und von diesem Wert aus die 
Kalibrierung starten. Bei mir war das OSCAL-Byte 0x95 und der Wert den 
ich ins EEprom geschrieben habe war 0x96.


Geraldo

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.