Autor |
1-Wire Projekt, Code Hilfe C |
|
|
|
|
BID = 936265
trafostation Schriftsteller
Beiträge: 595
|
|
Hallo,
Ich arbeite gerade an einem Dallas iButton Schloss Projekt, dazu habe ich im Netz eine Anleitung+Code gefunden, für den PIC12F683.
Habe ich auf der Steckplatine nachgebaut und funktioniert soweit auch.
Zur Schaltung: wenn man einen Dallas Key ansteckt und den Programmierbutton drückt wird die Seriennummer im EEPROM des PIC gespeichert, eine grüne LED leuchtet, und der Transistorausgang wird auf "high" geschaltet(für Relais etc.)
Nun möchte ich aber einen zweiten, unabhängigen Kanal dazu programmieren, das heißt 2. Programmierbutton + 2.Transistor.(die 2 notwendigen Ports sind noch frei)
Der Autor des Codes meinte ich sollte dazu ein weiteres Byte einfügen(0x0F für Transistor 1 und 0XF0 für den 2. Transistor), und in der "CheckEEPROM" Sektion ein zusätzliches "returnvalue".
Das wäre so gedacht returnvalue 0= nicht registrierter Key(da passiert nichts), 1= Transistor 1, 2= Transistor 2.
Dazu müssten aber auch die Programmieruttons entsprechen gemappt werden.
Einziger Haken ist das ich der Programmiersprache C nicht wirklich mächtig bin, der Code ist zwar recht einfach, und einige Teile davon habe ich kopiert und soweit angepasst, nur,das mit den 2 unabhängig programmierbaren Kanälen bekomme ich nicht hin, vielleicht könnte mir dabei jemand helfen.
Vielen Dank schonmal !
BUTTON_INPUT wäre für TRANSISTOR
BUTTON_NEW wäre für TRANSISTOR_NEW
Anbei der Code
[ Diese Nachricht wurde geändert von: trafostation am 31 Aug 2014 15:08 ] |
|
BID = 936273
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
|
Setz mal den Link zum Projekt bzw. den unveränderten Quellcode hier rein.
Du hast schon ein wenig rumgemurkst - da möchte ich mal das lauffähige original sehen |
|
BID = 936276
trafostation Schriftsteller
Beiträge: 595
|
Bitte sehr, der Orginal Code(getestet), zur Erklärung, die RED_LED habe ich als TRANSISTOR_NEW, und den BUZZER als BUTTON_NEW modifiziert, in meinem Code.
Mein gemurkster Code ist zwar auch lauffähig, tut aber noch nicht das was er soll
Anbei auch noch der Schaltplan zum besseren Verständnis.
|
BID = 936278
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
Danke!
Ich lese mich nachher mal in Ruhe rein.
Wo liegt dein Problem genau?
[ Diese Nachricht wurde geändert von: Maik87 am 31 Aug 2014 16:39 ]
|
BID = 936283
trafostation Schriftsteller
Beiträge: 595
|
Ich schaffe es nicht das die Programmierbuttons unabhängig voneinander die unterschiedlichen Schlüssel(Dallas DS2401) speichern und dann den jeweiligen Transistor dafür schalten.
Momentan schalten beide Buttons beide Transistoren gleichzeitig.
Danke für deine Hilfe
|
BID = 936285
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
Zitat :
trafostation hat am 31 Aug 2014 16:57 geschrieben :
|
beide Transistoren gleichzeitig.
|
Sicher?
Transistor2 kann nur schalten, wenn iskeyonlist == 2. Das wird aber im jetzigen Stand des Codes niemals vorkommen. Hier kann iskeyonlist NUR 0 oder 1 sein.
|
BID = 936289
trafostation Schriftsteller
Beiträge: 595
|
Ja, stimmt !, ich hatte aber vorher auch den 2. Transistor als der "iskeyonlist = 1", da haben dann beide natürlich gleichzeitig geschalten.
Wenn ich Schlüssel A anstecke und mit Button A in den EEPROM speichere soll auch nur Transistor A geschalten werden.
Und umgekehrt dasselbe dann für Kanal B.
Die DS2401 sind ja jeweils einzigartige Seriennummern.
|
BID = 936295
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
Ich habe leider keine Möglichkeit zu testen - daher bitte einmal versuchen:
|
BID = 936305
trafostation Schriftsteller
Beiträge: 595
|
Da sind noch einige Fehler drinnen, leider, MPLAB meckert rum.
Einen Teil konnte ich beheben, wie die doppelten Ports (RED_LEDetc.
Zitat :
| MPLAB\main.c; 85.1 function declared implicit int
MPLAB\main.c; 86.1 ";" expected
MPLAB\main.c; 98.24 too many function arguments
MPLAB\main.c; 111.1 no identifier in declarationMPLAB\main.c; 111.1 missing basic type; int assumed
MPLAB\main.c; 111.1 ";" expected
MPLAB\main.c; 114.1 no identifier in declaration
MPLAB\main.c; 114.1 missing basic type; int assumed
MPLAB\main.c; 114.1 ";" expected
MPLAB\main.c; 115.1 no identifier in declaration
MPLAB\main.c; 115.1 missing basic type; int assumed
MPLAB\main.c; 115.1 ";" expected
MPLAB\main.c; 117.8 ")" expected
MPLAB\main.c; 117.9 type redeclared
MPLAB\main.c; 117.9 conflicting declarations for variable "_delay"
MPLAB\main.c; 117.22 no identifier in declaration
|
|
BID = 936309
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
Zitat :
trafostation hat am 31 Aug 2014 19:09 geschrieben :
|
Einen Teil konnte ich beheben, wie die doppelten Ports (RED_LEDetc.
|
Da klappte wohl die Auskommentierung vor der Raute nicht
Guck bitte nochmal, was noch über ist.
Edit:
Neue Datei - zwei selbstgefundene noch raus.
[ Diese Nachricht wurde geändert von: Maik87 am 31 Aug 2014 19:41 ]
|
BID = 936315
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
|
BID = 936325
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
|
BID = 936326
trafostation Schriftsteller
Beiträge: 595
|
Fast ! keys ist noch nicht definiert.
TRISIO ist übrigens 0x18 wegen dem neuen Button.
Und mein Modem spinnt auch gerade rum...
Zitat :
| MPLAB\main.c; 145.5 undefined identifier "keys"
MPLAB\main.c; 145.18 undefined identifier "keysl
MPLAB\main.c; 159.16 undefined identifier "keys" |
[ Diese Nachricht wurde geändert von: trafostation am 31 Aug 2014 20:12 ]
|
BID = 936327
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
Zitat :
trafostation hat am 31 Aug 2014 20:10 geschrieben :
|
Fast ! keys ist noch nicht definiert.
TRISIO ist übrigens 0x18 wegen dem neuen Button.
Und mein Modem spinnt auch gerade rum...
Code : |
MPLAB\main.c; 145.5 undefined identifier "keys"
MPLAB\main.c; 145.18 undefined identifier "keysl
MPLAB\main.c; 159.16 undefined identifier "keys"
|
|
|
Grad behoben (s.o.) - doppelte Definition dank Copy&Paste.
TRISIO:
Bei mir geändert - danke.
[ Diese Nachricht wurde geändert von: Maik87 am 31 Aug 2014 20:16 ]
|
BID = 936331
Maik87 Schriftsteller
Beiträge: 856 Wohnort: Wesel / Niederrhein
|
Jetzt in (hoffentlicher) Perfektion.
|