Forum: Mikrocontroller und Digitale Elektronik I2C Klasse für ATmega64


von Marcel D. (dmarcel21)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe in der Schule diese Klasse für die Verwendung von I2C mit dem 
ATmega16 erhalten. Nun programmiere ich auf den ATmega64 und suche 
momentan den Fehler in meinen Programm und nachdem das Programm auf dem 
ATmega16 perfekt funktioniert hat und auf dem ATmega64 nicht, bin ich 
auf den Schluss gekommen, dass es vielleicht an der I2C Klasse liegen 
könnte.

Weiß jemand ob ich da was ändern muss wenn ich die gleiche I2C Klasse 
verwende???

Danke für eure Hilfe

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Eine Klasse in C?
Das wirst du so nicht finden.

Aber die TWI/I2C Funktionen vom Peter Fleury sind nicht schlecht.

von Marcel D. (dmarcel21)


Lesenswert?

Ja ich programmiere im AVR Studio.

Funktioniert diese für alle ATmega's gleich?

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Marcel D. V. schrieb:
> Weiß jemand ob ich da was ändern muss wenn ich die gleiche I2C Klasse
> verwende???

 Fuse in MEGA64 richtig gesetzt ?
 Die Library ist auf 12MHz eingestellt.
 Wenn deine MEGA64 mit 2MHz oder weniger lauft, funktioniert es mit
 Sicherheit nicht, bei 4MHz sollte es noch gehen.
 Hardwaremassig ist I2C Teil bei beiden MEGAs gleich, wenn es auf
 M16 funktionert hat, muss es auch auf M64 gehen.
 Bleibt nur noch der Quartz als Ursache.
 Kann es sein, dass die neue MEGA64 auf internes RC Oszillator
 gefust ist ?

 Wenn du aber die CKSEL bits richtig gesetzt hast und einen
 Externen Quartz mit 12MHz hast, dann bin ich mit meinem Latein
 am Ende.

von spess53 (Gast)


Lesenswert?

Hi

>Hardwaremassig ist I2C Teil bei beiden MEGAs gleich, wenn es auf
>M16 funktionert hat, muss es auch auf M64 gehen.

Wenn die M103-Fuse (ATmega103 compatibility mode) gesetzt ist dann 
besitzt der ATMega64 gar kein TWI.

MfG Spess

von stefanus (Gast)


Lesenswert?

> Funktioniert diese für alle ATmega's gleich?
Ich denke, ja. Nur die Zuordnung zu den I/O Pins ist natürlich bei jedem 
AVR Typ anders.

von Marcel D. (dmarcel21)


Lesenswert?

Danke für die Antworten.
Aber ich habe rausgefunden, dass die I2C Klasse nicht das Problem ist.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Marcel D. V. schrieb:
> Aber ich habe rausgefunden, dass die I2C Klasse nicht das Problem ist.

 Aha.
 Das ist aber wirklich nett von dir, dass du uns so ausfuhrlich
 geschildert hast, was das Problem war.
 Kannst ruhig wieder mal was anfragen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

spess53 schrieb:
> Wenn die M103-Fuse (ATmega103 compatibility mode) gesetzt ist dann
> besitzt der ATMega64 gar kein TWI.

 Agree.
 Auf jeden Fall (wenn er die MEGA nicht verkehrt herum eingesteckt
 hat) ein FUSE problem.

von Marcel D. (dmarcel21)


Lesenswert?

Danke für eure Antworten.

Mein Problem war, dass ich zu viele Interrups hatte. Und es steht auch 
zu viel Code in einem Interrupt. Dadurch ergeben sich Verzögerungen, was 
bei einer Winkelberechnung mit einem Gyro sehr große Probleme gibt.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Marcel D. V. schrieb:
> Mein Problem war, dass ich zu viele Interrups hatte. Und es steht auch
> zu viel Code in einem Interrupt. Dadurch ergeben sich Verzögerungen, was

Marcel D. V. schrieb:
> momentan den Fehler in meinen Programm und nachdem das Programm auf dem
> ATmega16 perfekt funktioniert hat und auf dem ATmega64 nicht, bin ich


 Sicher.

von Marcel D. (dmarcel21)


Lesenswert?

Auf dem ATmega16 habe ich nut das Programm für den Gyro geschtieben und 
das hat dort perfekt funktioniert.
Auf dem ATmega64 habe ich dann zusätzlich 4 PWM Signale erzeugt und 4 
PWM Signale mittels externen Interrupts ausgelesen.
Da mein Code nicht optimiert war, hat es dort Verzögerungen bei den 
Berechnungen mit dem Gyro gegeben.
Was bei einem Gyro zu einem falschen Winkel führt.

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.