Nieuws:

Nu in MSM 249 REPORTAGE: Alles wat u moet weten over de 10de Grote Modelspoor Expo * Spur Z weekend in Altenbeken * RAMMA 2024

Hoofdmenu

G.I.P: automatisch schaduwstation zonder wissels

Gestart door conducteur, 09 mei 2012, 21:33:26 PM

conducteur

zodus eens testen met


PORTB=nieuwe variabele;
switch(nieuwe variabele)...?
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

MickeyMouse

#271
Citaat van: conducteur op 28 oktober 2013, 21:02:26 PM
zodus eens testen met


PORTB=nieuwe variabele;
switch(nieuwe variabele)...?
gewoon al uw bewerkingen in een variabele doen en deze dan telkens naar PortC kopieren

Delay
Var |= 0x01;
PortC = Var;
Delay
Var &= 0xFE;
PortC = Var;

Idem om van richting te veranderen, bewerking ook in Var doen, wel zorgen dat deze correct geinitialiseerd is.
Test het eerst eens, als dit de oplossing zou zijn kun je de code mooier maken door die 2 instructie welke je steeds nodig hebt, te vervangen door een #define of door een functie.

Staat uw poort trouwens als Output gedefinieerd?

Geert

conducteur

#272
volgens mij is dit niet nodig. Kijk eens naar reactie 230 en volgende, daar heb ik een testprogramma voor de relais gemaakt zonder die techniek...
TISC=0xFC; --> enkel c0 & c1 zijn output
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

MickeyMouse

Citaat van: conducteur op 28 oktober 2013, 21:20:52 PM
volgens mij is dit niet nodig. Kijk eens naar reactie 230 en volgende, daar heb ik een testprogramma voor de relais gemaakt zonder die techniek...
Ja, maar:
- Daar zet je poort C als output
- en schrijf je direct naar de poort, je gebruikt geen bewerking |= of &=, deze lezen eerst de poort uit en dit kan soms mis gaan, zeker als die niet als output staan, en dan nog...

conducteur

#274
Citaat van: MickeyMouse op 28 oktober 2013, 21:12:46 PM
Citaat van: conducteur op 28 oktober 2013, 21:02:26 PM
zodus eens testen met


PORTB=nieuwe variabele;
switch(nieuwe variabele)...?
gewoon al uw bewerkingen in een variabele doen en deze dan telkens naar PortC kopieren

Delay
Var |= 0x01;
PortC = Var;
Delay
Var &= 0xFE;
PortC = Var;

Idem om van richting te veranderen, bewerking ook in Var doen, wel zorgen dat deze correct geinitialiseerd is.
Test het eerst eens, als dit de oplossing zou zijn kun je de code mooier maken door die 2 instructie welke je steeds nodig hebt, te vervangen door een #define of door een functie.

Staat uw poort trouwens als Output gedefinieerd?

Geert
Geeft dit geen probleem die VAR, gezien er nog enkele andere in/outputs zijn op die poort? Ik geloof dat de homepositieswitch daar ook zit, alsook het inrijspoorrelais & eindespoorlichtsluis... (ik denk alle I/0 van m'n µC te hebben gebruikt, op een of twee na).


Ik ben nog maar een 'beginner' als het op programmeren aankomt, dus dit kan complete nonsens zijn:
Is contactdender niet eerder een probleem als je moet tellen hoe vaak een knop wordt ingedrukt of hoe vaak een sensor een signaal krijgt? Indien niet, kun je eenvoudig contactdender filteren in software?
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

conducteur

-->analoge uitgangen uitzetten lost het probleem niet op



ANSEL=0;  //toe te voegen instructies in C...
ANSELH=0;



Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Michiel

Rian,

ik lees in stilte mee, maar er mij iets niet duidelijk in je probleemomschrijving. Heb je nu een probleem met PORTB, en de switch/case reeks? Ben je zeker dat deze (inclusief het gedrag en voorwaarde van de ""default" case) correct werkt? Ben je zeker dat je steeds binaire waarden via PORTB krijgt (1,2,...128) of krijg je ook andere getallen (33, 68...) die dan ongewilt in de "default" case sukkelen? Wat gebeurt er als PORTB "0" terug geeft? Mag/kan dit?

Of heb je een probleem met het berekenen van de bestemmingsstappen en sturing van de stappenmotor naar deze positie?
groetjes, Michiel ...een modelbaan bouwend: het station Brussel-Luxemburg in 1:160, en een paar videos.
TPIe - Belgische Staatsspoorwegen - DCC(Lenz) - Koploper - N(1:160) - code55(Peco) - zelfbouwer(50%)

Geert

Nog enkele mogelijkheden:

De schakelaars op portB zijn dit maak- of breekcontacten? Bij maakcontacten krijg je 255 i.p.v. 0 als deze allen op staan. (omdat ik ergens gelezen heb dat je externe pull-up R gebruikt)

Probeer is bit gestuurd te programmeren naar de uitgangen en niet via een byte.

De volledige ingang B port naar een ander port (D of A) als uitgang doorsturen en nameten wat er gebeurd op port B. (LED's)


Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

conducteur

De knoppen zijn maakcontacten, maar met een weerstandje naar massa --> 0 op de ingang als niet ingedrukt is, 1 op de ingang als de knop wel ingedrukt is (want dan verbind je de ingang via de knop met 5V).
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Geert

Citaat van: conducteur op 29 oktober 2013, 12:42:02 PM
De knoppen zijn maakcontacten, maar met een weerstandje naar massa --> 0 op de ingang als niet ingedrukt is, 1 op de ingang als de knop wel ingedrukt is (want dan verbind je de ingang via de knop met 5V).

staat de interne pull-up dan uit?

Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

conducteur

ah... eh... hoe doe je dat ::)  Ik zit nu wel echt te werken met dingen die we nooit gedaan hebben in die lessen C en moet het nu wel veel zelf gaan uitzoeken, maar heb nog niet echt een deftige uitleg gevonden voor bv het Timer0 probleem, vandaar nu terug zoals ik het zelf beheers met __delay-us();... Ik heb in m'n planning portb voorzien voor de knoppen om eventueel gebruik te kunnen maken van de pull-up intern, maar die heb ik nu niet nodig...
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Michiel

Rian, kan je de logica niet omkeren, en met de interne pull-ups werken? Alles staat dus op "1", behalve de pin (bit) dat je "0" trekt. Programmastrutuur blijft, maar "1" wordt "254", etc... Je activeert de interne pull-ups, en klaar! (ik roep maar wat, maar weten doe ik het ook niet, hoor)  ;D
groetjes, Michiel ...een modelbaan bouwend: het station Brussel-Luxemburg in 1:160, en een paar videos.
TPIe - Belgische Staatsspoorwegen - DCC(Lenz) - Koploper - N(1:160) - code55(Peco) - zelfbouwer(50%)

conducteur

Citaat van: Michiel op 29 oktober 2013, 13:03:38 PM
Rian, kan je de logica niet omkeren, en met de interne pull-ups werken? Alles staat dus op "1", behalve de pin (bit) dat je "0" trekt. Programmastrutuur blijft, maar "1" wordt "254", etc... Je activeert de interne pull-ups, en klaar! (ik roep maar wat, maar weten doe ik het ook niet, hoor)  ;D
Blij dat we in een gelijkaardige situatie verkeren...
... maar dan moet ik gans het knoppenbordje terug ombouwen, niet dat dat zoveel werk is... Ik probeer het deze avond.
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Geert

Ombouwen zal ik niet direct doen. Zet is een R van 1k parallel over je huidige pull-up als test. De interne pull-up van de µC is zeer zwak, en volgens de data sheet niet ingeschakeld bij opstart. (net gekeken). Stapje voor stapje werken, elke ingang rechstreeks naar een uitgang sturen om te zien wat er gebeurd en zo stapje verder. Ik doe dat ook zo om fouten te zoeken. (kan soms weken duren voor alle fouten er uit zijn  ;D :o )


Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

Michiel

Bij de Arduino gebruik ik pin 13 met LED als debugsignaal. Is een tijdelijke debugvoorwaarde waar/niet-waar? -> onboard led aan/uit. Geeft meteen een visuele controle.
groetjes, Michiel ...een modelbaan bouwend: het station Brussel-Luxemburg in 1:160, en een paar videos.
TPIe - Belgische Staatsspoorwegen - DCC(Lenz) - Koploper - N(1:160) - code55(Peco) - zelfbouwer(50%)