Hallo zusammen, ich habe ein Problem. Ich habe ein Programm für eine Feuerwehrsteuerung geschrieben - Modellbau, Car System. Das Ganze funktioniert in meinem STK500 Board auch einwandfrei. Wenn ich es aber nun mit meiner Platine nutze will funkioniert es sind. Die internen Pullups sind ausgeschaltet. Den Schaltplan meiner Platine habe ich mal als Dateianhang mit beigefügt. Woran könnte das liegen ? Zum Programm sei noch erwähnt, dass K... die Kontakte und S... die Stoppstellen sind. Würde mich sehr über Eure Hilfe freuen. Ich weiß echt nicht mehr weiter ... Hier mal das komplette Programm: ------------------------------------------------------------------------ ; Die Anschüsse: ; PA0 = ; PA1 = ; PA2 = ; PA3 = ; PA4 = ; PA5 = ; PA6 = ; PA7 = ; PB0 = Taster "Alarm" ; PB1 = ; PB2 = ; PB3 = ; PB4 = ; PB5 = ; PB6 = ; PB7 = ; PC0 = K1 - PC komplett Eingang ; PC1 = K2 ; PC2 = K3 ; PC3 = K4 ; PC5 = K5 ; PC6 = K6 ; PC7 = K7 ; PD0 = S1 PD komplett Ausgang ; PD1 = S2 ; PD2 = S3 ; PD3 = S4 ; PD4 = S5 ; PD5 = W1 ; PD6 = W2 ; PD7 = W3 .include "8515def.inc" .def CntLoop1 = r17 .def CntLoop2 = r18 .def CntLoop3 = r19 .def Hugo = r20 ldi Hugo, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL, Hugo ldi Hugo, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH, Hugo ; Festlegen der Ein- und Ausgänge: ldi r16, 0b11111111 out DDRA, r16 ldi r16, 0b11111110 ; PB1 auf Eingang, der Rest auf Ausgang out DDRB, r16 ldi r16, 0b00000000 ; Alle PC auf Eingang out DDRC, r16 ldi r16, 0b11111111 ; Alle PD auf Ausgang out DDRD, r16 ; Alle Ausgänge ausschalten ldi r16, 0b11111111 out PortD, r16 ; Interne Pull Up´s ldi r16, 0b11111111 out PortA, r16 ldi r16, 0b11111110 out PortB, r16 ldi r16, 0b00000000 out PortC, r16 Alarm: ; Nun beginnt das Hauptprogramm sbic PINB, 0 ; Wird Taster "Alarm" betätigt, überspringe nächsten Befehl rjmp Alarm cbi PortD, 0 ; Stopstelle S1 ein - Fahrzeug bleibt stehen cbi PortD, 1 ; Stopstelle S2 ein - Fahrzeug bleibt stehen rcall Pause ; Rufe Unterporgramm "Pause" auf cbi PortD, 2 ; Parkplatz 1 ein - Fahrzeug fährt los Abfrage1: sbic PINC, 5 ; Wird Reedkontakt K6 betätigt, überspringe nächsten Befehl rjmp Abfrage1 sbi PortD, 2 ; Parkplatz 1 aus - Fahrzeug bleibt stehen cbi PortD, 3 ; Parkplatz 2 ein - Fahrzeug fährt los Abfrage2: sbic PINC, 6 ; Wird Reedkontakt K7 betätigt, überspringe nächsten Befehl rjmp Abfrage2 sbi PortD, 3 ; Parkplatz 2 aus - Fahrzeug bleibt stehen cbi PortD, 4 ; Parkplatz 3 ein - Fahrzeug fährt los Abfrage3: sbic PINC, 7 ; Wird Reedkontakt K8 betätigt, überspringe nächsten Befehl rjmp Abfrage3 sbi PortD, 4 ; Parkplatz 3 aus - Fahrzeug bleibt stehen rcall Pause ; Rufe Unterprogramm "Pause" auf sbi PortD, 0 ; Stopstelle S1 aus - Fahrzeug fährt wieder sbi PortD, 1 ; Stopstelle S2 aus - Fahrzeuge fährt wieder ; Nun kehren die Fahrzeuge vom Einsatz zurück rcall weiche Abfrageweiche1: sbic PINC, 4 ; Ist Reedkontakt K5 betätigt, überspringe nächsten Befehl rjmp Abfrageweiche1 cbi PortD, 5 ; Weiche 1 auf Abzweig rcall Weiche Abfrageweiche2: sbic PINC, 3 ; Ist Reedkontakt K4 betätigt, überspringe nächsten Befehl rjmp Abfrageweiche2 sbi PortD, 5 ; Weiche 1 auf Gerade cbi PortD, 6 ; Weiche 2 auf Abzweig rcall Weiche Abfrageweiche3: sbic PINC, 2 ; Ist Reedkontakt K3 betätigt, überspringe nächsten Befehl rjmp Abfrageweiche3 sbi PortD, 6 ; Weiche 2 auf Gerade rjmp Alarm ; Unterprogramme Pause: Loop1: inc CntLoop1 cpi CntLoop1, 255 brcc Loop2 rjmp Pause Loop2: inc CntLoop2 cpi CntLoop2, 255 brcc Loop3 rjmp Loop1 Loop3: inc CntLoop3 cpi CntLoop3, 20 brcc EndLoop clr CntLoop1 rjmp Pause EndLoop: clr CntLoop1 clr CntLoop2 clr CntLoop3 ret ; Unterprogramm Weiche Weiche: sbic PINC, 0 rjmp Weiche cbi PortD, 7 ; Weiche auf Abzweigstellen weichenpause: sbic PINC, 1 rjmp weichenpause sbi PortD, 7 ; Weiche auf Gerade stellen ret ------------------------------------------------------------------------ -
Irgendwie klappt das mit dem Hochladen der Datei nicht. ich habe die Grafik des Schaltplans mal auf meinen Webspace gestellt: http://www.mikromodelle.de/bilder/Feuerwehrsteuerung.jpg
1. Was genau funktioniert bei deiner Platine nicht? Rührt sich da gar nix? 2. Poste Deinen Code mal als Anhang und OHNE ALL DIE UNNÖTIGEN LEERZEILEN !!! So wie du den Code hier geposted hast kann man ihn sich ja unmöglich ansehen... :( Gruß, Magnetus [Edit] Das mit dem Anhängen funktioniert schon. Du darfst nur nicht den Fehler machen, nach der Definition des Dateianhanges auf "Vorschau" zu klicken... dann isser nämlich weg. By the way... @Andreas Schwarz: Könntest du diesen Bug nicht mal beheben?
Noch was... Wenns im STK500 einwandfrei funktioniert hat, muss es wohl ein Hardwarefehler sein ;)
Hallo zusammen, Nach dem Einschalten leuchten ganz kurz S1 und S2 auf, sofort danach kommt S3 und S1 und S2 gehen aus. Das ist schon falsch. Normalerweise darf garnichts eingeschaltet werden. Erst nach betätigen des Taster "Alarm" dürfen S1, S2 und ca. 5 Sek. später S3 angehen .... Ich kann mir eigentlich auch nur vorstellen, dass es irgendwie mit der Hardware zusammen hängt. Die vielen Leerzeilen bitte ich zu entschuldigen. Ich habe das komplette Programm nochmal in eine zusammengepackte Textdatei als Anhang beigefügt. Auf INT-RC Osci habe ich gestellt.
> Ich kann mir eigentlich auch nur vorstellen, dass es irgendwie mit der > Hardware zusammen hängt. Das vermute ich auch. > Die vielen Leerzeilen bitte ich zu entschuldigen. Ich habe das komplette > Programm nochmal in eine zusammengepackte Textdatei als Anhang > beigefügt. Uuaaaaah (schauder) das kann man ja immer noch nicht lesen... Ich hab den Code mal ein klein wenig bearbeitet (nur Leerzeilen rausgenommen und die Formatierung verbessert - Code ist unverändert) und nochmal angehängt. Vielleicht finden sich dann auch andere Forenteilnehmer, die sich (wenn nötig) den Code ansehen und kommentieren können. Ich selbst hab mir Assembler noch nicht angetan ;) Ich werde gerade noch mal einen flüchtigen Blick auf die Schaltung werfen... Bis denne, Magnetus
Der Fehler liegt wohl sowohl an der Hard- als auch an der Software. Deine "Meldeeingänge" (PB0 und PC0...PC7) sind vermutlich mit Reedkontakten verbunden. Die Leitungen zwischen Controller und Reed gehen bestimmt über lange Strecken quer über eine EMV-verseuchte Modellbahnanlage. Die Internen PullUps hast du (warum eigentlich?) nicht aktiviert und externe PullUps hast du auch nicht drangehängt. In diesem Falle wären bestimmt auch kleine Kondensatoren (~22nF ?) zwischen den Eingängen und GND angebracht. Du kannst vorerst mal versuchen, die PullUps für deine Eingänge zu aktivieren und uns dann mitteilen ob es was gebracht hat. Gruß, Magnetus
Hallo Magnetus, die Schaltung ist nur für kleine Module 70 x 50 cm gedacht. Geschaltet wird über Reedkontakte, richtig. Die Leitungen sind max. 20 cm lang. Ich denke mal das ist noch im vertretbaren Rahmen. Zum Testen habe ich es aber direkt an der Platine probiert. Also ohne Reedkontakte. Externe PullUps habe ich doch eingebaut. Das sind die 10 kOhm im Mittleren Teil des Schaltplans. Daher habe ich auch die internen PullUps ausgeschaltet.
> aber direkt an der Platine probiert. Also ohne Reedkontakte. Externe > PullUps habe ich doch eingebaut. Das sind die 10 kOhm im Mittleren Teil > des Schaltplans. Daher habe ich auch die internen PullUps ausgeschaltet. Quatsch mit Soße... Die 10k sind Längswiderstände und keine PullUps. Die 10K müssen nach VCC (+5V) geschaltet werden. Muss jetzt ins Bett.... die Regierung ruft grins
Wollte euch nur kurz berichten, dass alles funktioniert. Erstmal habe ich die internen PullUps eingeschaltet. Der größe Fehler war aber, dass ich die Ausgänge falsch geschaltet habe. Da ich mit Transistoren arbeite, muß ich die Ausgänge Ausschalten um eine Funktion zuschalten. Naja, Hauptsache es funktioniert ! Vielen Dank nochmal für eure Hilfe ! :o) Viele Grüße Sven
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.