Forum: Mikrocontroller und Digitale Elektronik PIC18 CCP1 funktioniert nur manchmal.


von Luca (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin gerade dabei, mich ins CCP1 des PIC18F45k22 einzuarbeiten. Der 
Code Funktioniert so wie er soll, aber nur manchmal. Der Code soll an 
RC7 und RC0 ein Rechteck mit 90° Phasenverschiebung erzeugen.
Manchmal passiert an RC7 mach dem Reset nicht, manchmal funktioniert es 
nach dem Reset. Das TMR3-Interrupt funtioniert immer. Ich habe keine 
Ahnung wieso der PIC das macht. Der PIC ist nicht kaputt, ein anderer 
hat das gleiche Problem.

Bitte um Hilfe.

von Luca (Gast)


Lesenswert?

Mir ist aufgefallen, manchmal geht es nach dem programmieren nach jedem 
2. Reset.

Manchmal geht es nie, egal wie oft ich Reset drücke, wenn ich aber noch 
mal Programmiere, dann verhält es sich wie oben.

von Luca (Gast)


Lesenswert?

Habe ich vielleicht irgendein Register vergessen zu konfigurieren?

von Luca (Gast)


Lesenswert?

Kann mir keiner Helfen?

von Michael S. (rbs_phoenix)


Lesenswert?

Also wenn ich im Datenblatt auf Seite 9, Tabelle 2 gucke, dann sehe ich 
bei RC7 nur einen AD-Eingang und eine RX-Leitung. Und bei RC0 ist P2B, 
also vom CCP2-Modul ein Ausgang.

von Luca (Gast)


Lesenswert?

In meinem Programm werden die Pins aber als normale IOs verwendet (siehe 
ISR)

von Michael S. (rbs_phoenix)


Lesenswert?

Ach jaa.. Kann es vielleicht sein, dass der Interrupt ausgelöst wird:

void IVH(void)
{
  _asm            // So werden Assembler-Befehle in C eingebettet
    goto ISH        // Interrupt Service Routine fuer HP
  _endasm
}

Er geht dann in die IVH, ein GOTO zur ISH Funktion, diese wird aber mit 
einem return beendet?

Kannst ja mal probieren statt das _asm .... _endasm nur ein Aufruf der 
Funktion zu machen: ISH();

Oder den inhalt der ISH in die IVH zu schreiben. Wenns dann geht, liegts 
daran.

von Luca (Gast)


Lesenswert?

Die ISR funktioniert, das timer interrupt funktioniert ja immer.

von Luca (Gast)


Lesenswert?

Hat jemand noch eine Idee woran das liegen könnte?

von Luca (Gast)


Lesenswert?

???

von Erich (Gast)


Lesenswert?

Sieh' mal dort,
   Beitrag "Re: Beispielprogramm PIC18F45k22"
lade dir die "lesson" Datei, das Beispiel Nr. 12 CCP PWM wird die wohl 
weiterhelfen.
Gruss

von Luca (Gast)


Lesenswert?

Das Beispiel hilft mir leider nicht weiter, da ich mit dem Compare 
Interrupt arbeiten will und das Beispiel sich mit dem PWM-Modus befasst.

von Erich (Gast)


Lesenswert?

Mein Gott Luca,
ist dein GOOGLE defekt?

Dann nimm' doch das hier
http://www.technik.dhbw-ravensburg.de/~lau/datenlogger.html
und sieh' dir den Code an (Quelltext).

nochmals Gruss

von Luca (Gast)


Lesenswert?

Erich schrieb:
> Dann nimm' doch das hier
> http://www.technik.dhbw-ravensburg.de/~lau/datenlogger.html
> und sieh' dir den Code an (Quelltext).

Der verwendet den Capture-Moder.
Bei Google habe ich auch schon gesucht, aber nicht viel Gescheites 
gefunden...

Ich habe ja auch schon eine Code geschrieben, nur funktioniert er nicht 
immer  wie er nicht immer wie er sollte.

von Erich (Gast)


Lesenswert?

Dein Code ist schlecht lesbar, weil praktisch unkommentiert.
Gruss

von Luca (Gast)


Lesenswert?

Erich schrieb:
> Dein Code ist schlecht lesbar, weil praktisch unkommentiert.

Die Interrupts.c-Datei habe ich doch kommentiert, und die main.c müsste 
sich von selbst erklären.
Am Anfang werden die Ports initialisiert, dann wird ein Text auf dem LCD 
ausgegeben und dann werden CCP1 Timer3 und Interrupts initialisiert.

In der ISR wird jeweils ein Pin getoggelt.

von Erich (Gast)


Lesenswert?

>müsste sich von selbst erklären

Ja, klar !
Deshalb haben dir auch bisher so viele verschiedene Leute geschrieben.

http://c-buch.sommergut.de/Kapitel2/Regeln-beim-Schreiben-von-C-Programmen.shtml

Gruss

von Luca (Gast)


Lesenswert?

Erich schrieb:
>>müsste sich von selbst erklären
>
> Ja, klar !
> Deshalb haben dir auch bisher so viele verschiedene Leute geschrieben.

Was bitte ist daran so unverständlich?

Erich schrieb:

> http://c-buch.sommergut.de/Kapitel2/Regeln-beim-Sc...
Der Compiler versteht es auch ohne Kommentare, deshalb wird mir das bei 
der Lösung meines Problems nicht weiterhelfen

von Luca (Gast)


Lesenswert?

Auf der Website steht auch:
>>Vermeiden Sie redundante Kommentare. Es bringt keine zusätzliche
>>Information über das Programm, wenn Sie leicht verständliche Anweisung
>>durch Kommentare versehen. Darunter leidet die Übersichtlichkeit.

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.