PIC18F46K42 Timer2 Setup als einfache Zeitbasis für I2C

In dieses Forum gehören all deine Fragen rund um die Elektrotechnik und im Speziellen zum Bereich der Mikrocontrollertechnik.

PIC18F46K42 Timer2 Setup als einfache Zeitbasis für I2C

#1

Ungelesener Beitrag meso » 9. Jun 2019, 14:12

Hallo Leute,

bin neu hier und freue mich, endlich mal ein PIC Forum auf deutsch gefunden zu haben!
Ich habe bereits einige Jahre mit AVRs Erfahrung und arbeite mich für ein neues Projekt in die PIC-Welt ein.
Die Programmierumgebung ist MPLAB X v5.15 , XC8 v2.05 und MCC v3.75.

Basis ist ein PIC18F46K42 der mit HFINTOSC bei 2MHz läuft.
Für dieses Projekt brauche ich das I2C Modul mit einer SCK-Frequenz im kHz-Bereich, dewegen wollte ich den 'TMR2 postscaled output' benutzen, den das I2C-Modul als Taktquelle anbietet. Benutze ich den FOSC/4 als Takt, funktioniert der I2C-Bus einwandfrei, dann läuft er leider mit 500kHz und das ist viel zu schnell.
Aber Timer2 ist so umständlich zu konfigurieren und ich schaffe es einfach nicht das Teil zum laufen zu bringen.
Das Datenblatt und die Benutzung vom MCC bringen einen auch nicht wirklich weiter - für mich alles sehr verwirrend und teilweise widersprüchlich dokumentiert.
Als Anhang habe ich mal Screenshots meiner aktuellen Konfiguration im MCC eingefügt.

Irgendwie habe ich aber noch nicht wirklich verstanden, wie dieser Timer2 funktioniert und ob ich den überhaupt als 'normale' Zeitbasis verwenden kann.
Es gibt ewig viele Einstellungen für externe 'Reset Sources', die ich eigetlich gar nicht brauche und was bedeutet 'Software Contolled'?
Muss ich hier selber einen Reset-Code für den Timer irgenwo einfügen? Ist 'Roll over puls' überhaupt der richtige Mode?
Wieso bietet MCC mir im T2RST-Register nur das T2CKIPPS-Pin als Reset-Source an, obwohl ich 'Software Contolled' als Mode gewählt habe???

Leider habe ich nirgendwo brauchbare Infos zu diesem Timer2 gefunden und hoffe, dass vielleicht hier schon mal jemand das Teil verwendet hat.
Ich muss ja nicht nicht alle Optionen verstehen, aber eine einfache Konfiguration als 'normale' Zeitbasis für I2C währe wirkich super!!

Vielen Dank für Eure Unterstützung!!
Dateianhänge
TMR2_a.jpg
TMR2_b.jpg

Re: PIC18F46K42 Timer2 Setup als einfache Zeitbasis für I2C

#2

Ungelesener Beitrag Nico » 9. Jun 2019, 17:13

Hallo und willkommen im Forum,

bzgl des Timer2 könntest du hier mal reinschauen.

Gruß Nico

Re: PIC18F46K42 Timer2 Setup als einfache Zeitbasis für I2C

#3

Ungelesener Beitrag vloki » 9. Jun 2019, 19:48

Nico hat geschrieben:
9. Jun 2019, 17:13
bzgl des Timer2 könntest du hier mal reinschauen.
Der K42 unterscheidet sich schon erheblich von den klassischen PIC18.

@meso
Dass T2 als Zietbasis verwendet wird muss man bestimmt in der Konfiguration für I2C einstellen... (MCC verwende ich bisher nicht)

Re: PIC18F46K42 Timer2 Setup als einfache Zeitbasis für I2C

#4

Ungelesener Beitrag Gast » 9. Jun 2019, 23:20

...das habe ich leider auch gemerkt. Das ist irgendwie bei diesem Chip alles komplett anders.
Bei der Konfiguration vom I2C kann man nicht wirklich viel einstellen (siehe Screenshot),
nur dass es 'TMR2 postscaled output' als Clock Source sein soll.
Aber wie bringe ich Timer2 so zum Laufen, dass er als Zeitbasis funktioniert?
Das ist mir komplett unklar.

Falls jemand eine Idee hat oder irgend eine Dokumentation hierfür kennt wäre ich wikrlich sehr dankbar!
Muss ja nicht MCC sein, normale Registereinstellung sind genauso OK.
Dateianhänge
I2C_b.jpg
I2C.jpg

Re: PIC18F46K42 Timer2 Setup als einfache Zeitbasis für I2C

#5

Ungelesener Beitrag meso » 11. Jun 2019, 14:28

Problem gelöst.
Timer2 läuft einwandfrei mit der MCC Konfiguration oben.
Der I2C -Treiber vom MCC hat einen Fehler, wenn das Clock-Signal zu langsam wird.
Genauer beschrieben hier:
https://www.microchip.com/forums/m1056870.aspx


Antworten