Fehler im Programm

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 13 4 2026  16:26:03      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Fehler im Programm

    







BID = 444756

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.
 

  


Hallo,

ich habe ein Programm geschrieben, um mit einem PIC 12F508 durch das Betätigen eines Tasters zwei Relais abwechselnd zu schalten, um damit einen Weichenantrieb zu steuern.

Leider "spinnt" der PIC nach jedem 4. Schaltvorgang, da er plötzlich beide LED und beide Relais anschaltet.

Den Schaltplan habe ich angefügt. Der Wechselstrom kommt vom Trafo, die 5 V von einem 9 V Block über einen 78L05.

Ich habe den Fehler im Code nicht gefunden. Kann mir vielleicht jemand helfen?

Danke im Voraus

Peo


Code :


list p=12F508 ; list directive to define processor
#include <p12F508.inc> ; processor specific variable definitions

__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.




;***** VARIABLE DEFINITIONS
temp EQU 0x07 ;example variable definition



;**********************************************************************
ORG 0x1FF ; processor reset vector

start
; Variablen festlegen ab 10h

cblock 0x10
loops
loops2
Flags
endc

#define Tastendruck Flags,0
#define RelaisL GPIO,0
#define RelaisR GPIO,1
; #define LEDT GPIO,2
#define LEDL GPIO,5
#define LEDR GPIO,4

;*******************************************************
; Beginn des Programmcodes

org 0x0000

movwf OSCCAL ; Oszillator kalibrieren
movlw b'11011111'
OPTION
movlw b'00001100' ; GP2 und GP3 werden INPUT PINS
tris GPIO

; bcf CMCON0,CMPON ; Comparator off nur bei 10F204/206

bcf RelaisL
bcf RelaisR

HAUPT
btfsc GPIO,2
goto RICHTUNG ; Fragt ab, in welche Richtung die Weiche zu stellen ist



call HAUPT


RICHTUNG

btfss Flags,0 ;Wenn die LEDs für ausgeschaltet sind, wird die Weiche
goto NACHRECHTS ;nach rechts gestellt, ansonsten
goto NACHLINKS ;nach links

NACHRECHTS
bsf Tastendruck
bsf RelaisR ;RElais für rechts wird geschlossen
bsf LEDR ;LED für rechts wird geschlossen
call WAIT
call WAIT
call WAIT
call WAIT
call WAIT
call WAIT
bcf RelaisR ;Releis für rechts wird geöffnet
bcf LEDL ;LED für links wird ausgeschaltet
goto HAUPT

NACHLINKS
bcf Tastendruck
bsf RelaisL ;RElais für links wird geschlossen
bsf LEDL ;LED für links wird geschlossen
call WAIT
call WAIT
call WAIT
call WAIT
call WAIT
call WAIT
bcf RelaisL ;Releis für links wird geöffnet
bcf LEDR ;LED für rechts wird ausgeschaltet
goto HAUPT

WAIT
movlw .150
movwf loops

top movlw .250
movwf loops2

top2 nop
decfsz loops2, F
goto top2
decfsz loops, F
goto top
retlw .0


end






[ Diese Nachricht wurde ge&auml;ndert von: Peo am 21 Jul 2007 22:16 ]

[ Diese Nachricht wurde ge&auml;ndert von: Peo am 21 Jul 2007 22:17 ]

[ Diese Nachricht wurde geändert von: Peo am 21 Jul 2007 22:18 ]

BID = 444760

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Als erstes solltest du mal einen keramischen oder Folienkondensator von etwa 100nF direkt an den GND und +5V Pins des Prozessors anschliessen.

Dann ist der Taster falsch angeschlossen!
Der Pullup-Widerstand gehört zwischen I/O-Pin und +5V und der Schalter schliesst die Spannung dann nach Masse kurz.
Programmtechnisch solltest du dann die Abfrage umdrehen.
Evtl. kannst du auf den Pullup-Widerstand verzichten, aber dann musst du dafür sorgen, daß eine "1" im zugehörigen Datenlatch steht.

Das hier:
Zitat :

btfsc GPIO,2
goto RICHTUNG ; Fragt ab, in welche Richtung die Weiche zu stellen ist
call HAUPT
ist auch falsch. Du musst die Hauptschleife mit GOTO abschliessen. Mit dem Call ohne zugehörigen Return produzierst du einen Stacküberlauf.





_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !


[ Diese Nachricht wurde geändert von: perl am 22 Jul 2007  0:00 ]

BID = 444761

Mr.Ed

Moderator



Beiträge: 36334
Wohnort: Recklinghausen

Und Freilaufdioden könnten auch nicht schaden.

_________________
-=MR.ED=-

Anfragen bitte ins Forum, nicht per PM, Mail ICQ o.ä. So haben alle was davon und alle können helfen. Entsprechende Anfragen werden ignoriert.
Für Schäden und Folgeschäden an Geräten und/oder Personen übernehme ich keine Haftung.
Die Sicherheits- sowie die VDE Vorschriften sind zu beachten, im Zweifelsfalle grundsätzlich einen Fachmann fragen bzw. die Arbeiten von einer Fachfirma ausführen lassen.

BID = 444814

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.

Danke für die Hinweise. Das mit dem GOTO habe ich übersehen.
Den Anschluss des Tasters werde ich umdrehen.

Die Freilaufdiode ist im Relais integriert. Das hatte ich vergessen, zu erwähnen.

mfg

Peo

BID = 445387

ffeichtinger

Schreibmaschine



Beiträge: 1050
Wohnort: Traunkirchen im Salzkammergut

Hallo

Wenn du ohnehin nur Weichen schalten willst, kannst du auch DC nehmen, und dir die Relais sparen.



_________________


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 9 Beiträge im Durchschnitt pro Tag       heute wurden bisher 17 Beiträge verfasst
© x sparkkelsputz        Besucher : 191174543   Heute : 24481    Gestern : 29142    Online : 767        13.4.2026    16:26
84 Besucher in den letzten 60 Sekunden        alle 0.71 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.160863876343