Forum: Mikrocontroller und Digitale Elektronik ATMega48P mit HIDKeys


von Stefan (Gast)


Lesenswert?

Hallo,

ich versuche seit kurzem das HIDKeys Projekt von Obdev.at auf einen 
AtMega48P zu portieren. Habe alle Register umgestellt (TIFR --> TIFR0).
Weiterhin habe ich in der usbdrv.h alle sRegster gecheckt, sollte 
stimmen. Die Schaltung, die ich nutze sollte auch stimmen. Ist der 
Schaltung entnommen, die beim Projekt dabei ist.

Hat jemand einen Tipp für mich, Danke !

Grüße
Stefan

von Sepp (Gast)


Lesenswert?

Dass Nennen des Problems und der eigentlichen Frage könnte unter 
Umständen hilfreich sein.

von Stefan (Gast)


Lesenswert?

Ich kriegs nich hin...das Gerät meldet sich nicht. Ich bekomme immer nur 
"Unbekanntes USB Gerät"...

von Sepp (Gast)


Lesenswert?

Wurde die richtige Frequenz gewählt?
Schwingt der Quarz?
Wenn die Zener-Diodenvariante gewählt wurde: stimmt die Spannung an den 
Dioden?

Wie lange wird gebraucht um die Hauptschleife einmal zu durchlaufen?

von Stefan (Gast)


Lesenswert?

12MHz Quarz schwingt.
Fuses high: 0xDD, low: 0xDF

Das mit dem Schleifendurchlauf stellt mich vor das Problem den irgendwie 
zu messen. Wie mach ich das? Anhand der Flanken auf den D+/D- Kanälen?

Grüße

von Stefan (Gast)


Lesenswert?

Nachtrag: keine Zenerdioden,sondern eine LED, die die 
Versorgungsspannung auf 3,3V herabsetzt. Funktioniert bei dem HIDKeys 
auf einem ATMega16 gut.

Grüße

von Sepp (Gast)


Lesenswert?

Da ist der ATmega aber "etwas" übertaktet ;)
Denn wenn ich nicht ganz daneben liege will der ATmega16 bei 3,3V mximal 
8MHz und V-USB fängt erst ab 12MHz an.

Läuft die Schaltung?
(Ausgeben von Blinkzeichen,...)

von Stefan (Gast)


Lesenswert?

hm...der atmega16 läuft wunderbar und emuliert mir eine usb tastatur.
Hier aus dem Datenblat:
"• Operating Voltages
– 2.7 - 5.5V for ATmega16L
– 4.5 - 5.5V for ATmega16
• Speed Grades
– 0 - 8 MHz for ATmega16L
– 0 - 16 MHz for ATmega16
"

Hm, da muss ich erst ein wenig mal coden...

von Stefan (Gast)


Lesenswert?

Hey,

so ich bin jetzt soweit rausgefunden zu haben, dass mein Quarz mir zwar 
12MHz liefert aber mit einer Amplitude von 100mV. Ich habe ein schon 
laufendes System mit einem Atmega16; dessen Quarz schwingt bei 12MHz mit 
fast einem Volt Spitze-Spitze.Was mach ich falsch?
Es ist die übliche Quarzschaltung mit 22pF gegen GND. Die Fuses bei dem 
mega48 sind verwirrend finde ich. Allerdings habe ich auf "ext crytsal 
8- MHz" gestellt. Momentan habe ich mich sogar komplett ausgesperrt, 
glaube ich. Dämliche gefuse...

Grüße

von Stefan (Gast)


Lesenswert?

Hey Leute,

Ok neue Platine aufgesetzt, neuen Quarz drauf und sauberer aufgebaut. 
Zumindest kann ich nun den einwandfrei kompilierten Quellcode auf den 
Mega48 flashen. Der fängt nun auch auf genau 3V an mit dem USB Host zu 
sprechen, allerdings nach ein wenig Takten hin und her wird er nur als 
"unbekanntes Gerät weiterhin" erkannt. Mein Vergleichssystem mit einem 
Mega16 arbeitet auch auf 3V auf D- und funktioniert einwandfrei. Was 
kann nun noch nicht hinhauen?

Habe auch ein Testprogramm geschrieben, das mir einen Pin zyklisch 
toggelt. Funktioniert.

Ich werde mal probieren das nun noch im USB Code zu implementieren und 
die Zeit messen....Ich bin mir unsicher, wo genau im Code das Sinn 
macht; hier?:

int main(void){
  ...
  if(TIFR0 & (1<<TOV0)){   /* 22 ms timer */
            TIFR0 = 1<<TOV0;

            PORTB ^= (1 << PB5);
  }
  return 0;
}

Danke euch für eure Hilfe.
Stefan

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.