ATMega48P mit HIDKeys

Gast #1269832
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
Gast #1269885
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?
Gast #1269895
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
Gast #1269907
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,...)
Gast #1270097
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...
Gast #1276156
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
Gast #1277778
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

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