Nieuws:

Nu in MSM 244 PRAKTIJK: Een kasteeltje uit Forex * Een diorama uit de mouw schudden: een tutorial door Evan Daes

Hoofdmenu

Waar zijn we nu mee bezig ? Microcontrollers

Gestart door ToThePoint, 13 januari 2012, 10:27:28 AM

Geert

Een PIC 16F887 met interne klok start altijd op met 4MHz. De software moet deze zelf op 8MHz zetten. In Assembler moet je dat zelf doen. In JAL weet ik dit niet?

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

conducteur

#826
Ja inderdaad intussen zelf gevonden... RTFM!

Een simpel regeltje is voldoende:





OSCCON_IRCF=0b111


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

PeterC

Groetjes, Peter


PeterC

Citaat van: Geert op 19 februari 2015, 19:55:08 PM
Een PIC 16F887 met interne klok start altijd op met 4MHz. De software moet deze zelf op 8MHz zetten. In Assembler moet je dat zelf doen. In JAL weet ik dit niet?

Ook in JAL (en andere hogere talen) moet je dergelijke settings nog zelf doen.  JAL heeft als voordeel boven PIC-assembler dat je je niets meer hoeft aan te trekken van bankswitching en dat complexe code eenvoudiger is te implementeren (en te lezen!).
Groetjes, Peter


conducteur

Na eerst wat gesukkel met de uart die het niet deed... tjah rtfm.... Maar nu gaat het vooruit:


Het rechtse printje is de UART terminal, te gebruiken als tijdelijk bedieningspaneel / lcd om variabelen enzo naar toe te zenden. Gerecupereerd van m'n eindwerk...
Links: µPLC module (zie een ander draadje dat ergens nog hier zou moeten staan). Bedoeling is om gans het schaduwstation van m'n baantje te gaan aansturen met zo'n module.


De wissels worden al goed gezet indien een spoor bezet wordt gemeld,
Kan de wissels terug goed zetten door een druk op de knop van de terminal (zou graag ook deze module en andere via een netwerkje aansturen)


Nog heel veel te doen ook uiteraard...

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

conducteur

Vandaag de relais toegevoegd... werkt bijna... ook 2 relais ingezet om het keerlusprobleem op te lossen.
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

PeterC

Een ganse reeks WS2812B led's sturen via een I2C slave.  Ringbuffers sturen en µs timing...
Groetjes, Peter


Geert

#832
LOCONET terugmelder voor 32 ingangen (massa detectie). Software al geschreven, in assembler voor een PIC 16F1519 op 16MHz. De software wordt nu getest met de simulator van MPLAB van Microchip. Ik probeer zoveel mogelijk hardware te gebruiken aanwezig in de µC. De basis van de software is onderstaande schema. De zwarte blokkjes is puur hardware, al of niet in de µC. Het blauwe deel is software interrupt gestuurd. Het purpere is de software voor de terugmelder in het MAIN programma.

Het is een vereenvoudigd programma, deze werkt nog enkel maar met een LOCONET waar enkel terugmelders en een MASTER als zender op zitten (hoop ik na de testen). Ontvangers waaronder MASTER, in principe geen probleem.

Peer to Peer ontvangst/zenden  is een optie voor later. Nu moet ik het adres van de 32 melders nog in assembler invoeren (een adres program drukknop is al voorzien) Ook de priority delay van elke µC is nog vast maar kan voor elke µC in assembler anders ingesteld worden.

Geert

Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

loebaske


Geert

Citaat van: loebaske op 24 februari 2015, 08:12:37 AM
Is het dit dat ik nodig heb Geert??

als je met een intellibox basic je baan aanstuurt, dan is Loconet de enige manier, dacht ik, om terugmelders in te lezen.

Als dit ontwerp met massa detectie ooit werkt..., dan pas ik het Loconet communicatie toe op stroomdetectie.

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

PeterC

Citaat van: Geert op 23 februari 2015, 22:05:52 PM
LOCONET terugmelder voor 32 ingangen (massa detectie)...

Geert, wat ik je wil meegeven ivm LocoNet terugmelders: er bestaat geen LocoNet opcode waarmee de status van een terugmelder kan worden opgevraagd (voor de status van een wissel, sein ed wel).  Een centrale en treinbesturingsprogramma wil wel de status van al de melders weten voor er automatisch wordt gereden.
 
Zonder 'speciale' trucjes moet die centrale wachten tot de terugmelder een opcode stuurt dat de toestand aan één van zijn poorten is gewijzigd, niet echt praktisch.
Een trucje die vaak wordt gebruikt bij terugmelders is om <OPC_GPON> in de gaten te houden.  Verschijnt die opcode op de bus, geeft de terugmelder de status van elke afzonderlijke melder na elkaar weer:


[Rx - 83 7C]  Global Power ON.
[Rx - B2 00 40 0D]  Sensor S1 () is Lo.  (BDL16 #1, DS1; DS54/64/SE8c #1, AuxA/A1/DS01)
[Rx - B2 00 60 2D]  Sensor S2 () is Lo.  (BDL16 #1, DS2; DS54/64/SE8c #1, SwiA/S1/DS02)
[Rx - B2 01 40 0C]  Sensor S3 () is Lo.  (BDL16 #1, DS3; DS54/64/SE8c #1, AuxB/A2/DS03)
[Rx - B2 01 60 2C]  Sensor S4 () is Lo.  (BDL16 #1, DS4; DS54/64/SE8c #1, SwiB/S2/DS04)
[Rx - B2 02 40 0F]  Sensor S5 () is Lo.  (BDL16 #1, DS5; DS54/64/SE8c #1, AuxC/A3/DS05)
[Rx - B2 02 60 2F]  Sensor S6 () is Lo.  (BDL16 #1, DS6; DS54/64/SE8c #1, SwiC/S3/DS06)
[Rx - B2 03 40 0E]  Sensor S7 () is Lo.  (BDL16 #1, DS7; DS54/64/SE8c #1, AuxD/A4/DS07)
[Rx - B2 03 60 2E]  Sensor S8 () is Lo.  (BDL16 #1, DS8; DS54/64/SE8c #1, SwiD/S4/DS08)
[Rx - B2 04 40 09]  Sensor S9 () is Lo.  (BDL16 #1, DS9; DS54/64/SE8c #2, AuxA/A1/DS01)
[Rx - B2 04 60 29]  Sensor S10 () is Lo.  (BDL16 #1, DS10; DS54/64/SE8c #2, SwiA/S1/DS02)
[Rx - B2 05 40 08]  Sensor S11 () is Lo.  (BDL16 #1, DS11; DS54/64/SE8c #2, AuxB/A2/DS03)
[Rx - B2 05 60 28]  Sensor S12 () is Lo.  (BDL16 #1, DS12; DS54/64/SE8c #2, SwiB/S2/DS04)
[Rx - B2 06 40 0B]  Sensor S13 () is Lo.  (BDL16 #1, DS13; DS54/64/SE8c #2, AuxC/A3/DS05)
[Rx - B2 06 60 2B]  Sensor S14 () is Lo.  (BDL16 #1, DS14; DS54/64/SE8c #2, SwiC/S3/DS06)
[Rx - B2 07 40 0A]  Sensor S15 () is Lo.  (BDL16 #1, DS15; DS54/64/SE8c #2, AuxD/A4/DS07)


Bij heel wat aangesloten melders genereert dat wel wat trafiek op het net.

Modernere melders (oa die van Digitrax zelf) reageren op een sequentie  van codes die door de centrale worden verstuurd.  Rocrail en JMRI doen dat ook:


[Tx - B0 78 27 10]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 1/0/0; addresses...
33-40, 97-104, 161-168, 225-232, 289-296, 353-360, 417-424, 481-488,
545-552, 609-616, 673-680, 737-744, 801-808, 865-872, 929-936, 993-1000,
1057-1064, 1121-1128, 1185-1192, 1249-1256, 1313-1320, 1377-1384, 1441-1448, 1505-1512,
1569-1576, 1633-1640, 1697-1704, 1761-1768, 1825-1832, 1889-1896, 1953-1960, 2017-2024
[Tx - B0 79 27 11]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 1/0/1; addresses...
41-48, 105-112, 169-176, 233-240, 297-304, 361-368, 425-432, 489-496,
553-560, 617-624, 681-688, 745-752, 809-816, 873-880, 937-944, 1001-1008,
1065-1072, 1129-1136, 1193-1200, 1257-1264, 1321-1328, 1385-1392, 1449-1456, 1513-1520,
1577-1584, 1641-1648, 1705-1712, 1769-1776, 1833-1840, 1897-1904, 1961-1968, 2025-2032
[Tx - B0 7A 27 12]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 1/1/0; addresses...
49-56, 113-120, 177-184, 241-248, 305-312, 369-376, 433-440, 497-504,
561-568, 625-632, 689-696, 753-760, 817-824, 881-888, 945-952, 1009-1016,
1073-1080, 1137-1144, 1201-1208, 1265-1272, 1329-1336, 1393-1400, 1457-1464, 1521-1528,
1585-1592, 1649-1656, 1713-1720, 1777-1784, 1841-1848, 1905-1912, 1969-1976, 2033-2040
[Tx - B0 7B 27 13]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 1/1/1; addresses...
57-64, 121-128, 185-192, 249-256, 313-320, 377-384, 441-448, 505-512,
569-576, 633-640, 697-704, 761-768, 825-832, 889-896, 953-960, 1017-1024,
1081-1088, 1145-1152, 1209-1216, 1273-1280, 1337-1344, 1401-1408, 1465-1472, 1529-1536,
1593-1600, 1657-1664, 1721-1728, 1785-1792, 1849-1856, 1913-1920, 1977-1984, 2041-2048
[Tx - B0 78 07 30]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 0/0/0; addresses...
1-8, 65-72, 129-136, 193-200, 257-264, 321-328, 385-392, 449-456,
513-520, 577-584, 641-648, 705-712, 769-776, 833-840, 897-904, 961-968,
1025-1032, 1089-1096, 1153-1160, 1217-1224, 1281-1288, 1345-1352, 1409-1416, 1473-1480,
1537-1544, 1601-1608, 1665-1672, 1729-1736, 1793-1800, 1857-1864, 1921-1928, 1985-1992
[Tx - B0 79 07 31]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 0/0/1; addresses...
9-16, 73-80, 137-144, 201-208, 265-272, 329-336, 393-400, 457-464,
521-528, 585-592, 649-656, 713-720, 777-784, 841-848, 905-912, 969-976,
1033-1040, 1097-1104, 1161-1168, 1225-1232, 1289-1296, 1353-1360, 1417-1424, 1481-1488,
1545-1552, 1609-1616, 1673-1680, 1737-1744, 1801-1808, 1865-1872, 1929-1936, 1993-2000
[Tx - B0 7A 07 32]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 0/1/0; addresses...
17-24, 81-88, 145-152, 209-216, 273-280, 337-344, 401-408, 465-472,
529-536, 593-600, 657-664, 721-728, 785-792, 849-856, 913-920, 977-984,
1041-1048, 1105-1112, 1169-1176, 1233-1240, 1297-1304, 1361-1368, 1425-1432, 1489-1496,
1553-1560, 1617-1624, 1681-1688, 1745-1752, 1809-1816, 1873-1880, 1937-1944, 2001-2008
[Tx - B0 7B 07 33]  Interrogate LocoNet Turnouts/Sensors with bits a/c/b of 0/1/1; addresses...
25-32, 89-96, 153-160, 217-224, 281-288, 345-352, 409-416, 473-480,
537-544, 601-608, 665-672, 729-736, 793-800, 857-864, 921-928, 985-992,
1049-1056, 1113-1120, 1177-1184, 1241-1248, 1305-1312, 1369-1376, 1433-1440, 1497-1504,
1561-1568, 1625-1632, 1689-1696, 1753-1760, 1817-1824, 1881-1888, 1945-1952, 2009-2016


Op het LocoNet-Hackers forum is daar enige tijd geleden een hoop uitleg over gegeven.  Als je interesse hebt, zal ik de mails eens opsnorren en je via PM doorsturen.
Groetjes, Peter


Harm

Ondertussen "bijna" klaar  ;D

Ik heb van de 4096 beschikbare program words er nog maar 748 vrij
Voor de waterpeil en voorraadwatertanks zal ik een tweede PIC moeten gaan gebruiken.

Het afstellen van de gaskraan en de afstand van de vonk elektrodes:
https://www.youtube.com/watch?v=JXYZi1KcEWo

Geheel automatisch laten opstarten op gas, laten overgaan op wasbenzine en dan de vlam regelen afhankelijk van de druk:
https://www.youtube.com/watch?v=VNcZBWMNnyU

verder nog een test van de veiligheid.
Door een te groot vuur zakt bij het opengaan van de veiligheid de druk te weinig en moet ik wat helpen met de stoomafsluiter.
Later komt er een (reeds eerder berekende) tweede veiligheid bij:
https://www.youtube.com/watch?v=7bpZUpBS8Dk

groet van Harm


Harm

Van narigheid maar van de 16F883 overgestapt naar de 16F887, dan heb ik weer ruimte om wat programwords bij te voegen.
De kleine PIC zat vol  ::)

Gelukkig spreekt die exact dezelfde taal als de kleine.
Overzetten ging dus heel wat soepeler dan de wisseling van 88 naar 883.

raf

zwijg me van om zetten he Harm
een 12F628 en een 16f628 spreken ook niet dezelfde taal
voor het schaduw station wil ik die kleintjes gebruiken omdat er toch geen signalen mee gestuurd moeten worden
je ziet ze toch niet staan
buiten 1 led die aangeeft dat de processor werkt is er niets naar buiten zichtbaar uitgevoerd
alleen ze spreken niet het zelfde chinees

gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

PeterC

Citaat van: Harm op 01 april 2015, 14:42:06 PM
...Gelukkig spreekt die exact dezelfde taal als de kleine...

Citaat van: raf op 01 april 2015, 16:17:42 PM
...een 12F628 en een 16f628 spreken ook niet dezelfde taal...

Toch even een rechtzetting: ze spreken allen identiek dezelfde taal want ze hebben dezelfde instructieset.  Alleen bij de 18F (en hogere) versies is die instructieset uitgebreid.  Ze spreken dezelfde taal, alleen zijn de benamingen van hun interne componenten anders.

Johnny en Marina in Vlaanderen spreken hetzelfde Nederlands als Joop en Truus in Nederland.  Alleen gaat Johnny een Jupiler uit de frigo halen en Joop een Heineken (oa GPIO.X versus PortX.Y).

Eén goede raad: lees tenminste de datasheets alvorens aan iets te beginnen en heel veel (mogelijke) problemen zijn op voorhand al opgelost.  Raad van iemand die regelmatig 200 à 400 pagina's saaie lectuur doorneemt (saai op het eerste zicht maar vaak boeiend door de vele ontdekkingen/mogelijkheden die opduiken in die lectuur)...

...En vooral: blijven verder doen!
Groetjes, Peter