Sterrenhemel Deel2

Bavelt

Golden Member

Modedit:
Dit is een vervolg van https://www.circuitsonline.net/forum/view/151720

Een andere denkbare oplossing zou kunnen zijn om de poorten te definiëren als echte I/O ports en niet te gebruiken voor de MSSP modules.
(via SSpxCon1).

Dan zou ik wel moeten overgaan naar Soft_SPI..

[Bericht gewijzigd door Sine op zaterdag 1 mei 2021 22:43:03 (3%)

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Of een grotere pic met genoeg pinnen... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Het is eerder al op dit forum te sprake geweest, de Chinese MAX7219 ic's zijn niet gelijk aan die van Maxim, kan ook niet voor die prijs. In een topic hierover ben je zelf ook al actief geweest:

https://www.circuitsonline.net/forum/view/131794

Ik zou zelf eens proberen met "echte" MAX7219 van bv Farnell.

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Arco

Special Member

Ze zijn inderdaad wel heel, heel erg goedkoop, ik zou ze niet gebruiken...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Het is idd al eens eerder ter sprake geweest.
Maar ze zitten al op de panelen. Eraf halen zou complete nieuwbouw betekenen.
Áls dat al moet gebeuren, dan ga ik het anders doen.

Op de Max-en die ik hier heb staat overigens echter wel MAXIM...

Of hebben die Chinezen dat er ook op gedrukt?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Ze kopieren gewoon alles, copyright doen ze niet aan... (alleen aan 'copy right'... ;) )

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Toch zullen ze ergens het spul moeten laten maken..

De spullen die je in de 'reguliere' handel haalt, komen toch ook vaak uit Taiwan, Hong Kong, Korea etc?

Of zouden de Alie-spullen dingen zijn, die niet door de Quality Control komen, niet aan de specs voldoen, etc?

Eigenlijk geen idee.. :/

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Wat ik zo zie lijkt een makkelijke schakeling om de power in te schakelen:

Een IRF520. Nooit mee gewerkt, maar makkelijk verkrijgbaar bij de reguliere handel.

Dit lijkt me beter dan met een relais...

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Ali is een verzameling van handelaars die hun spullen van over de hele wereld bij elkaar sprokkelen.
Veel zijn er betrouwbaar, maar een deel probeert zo snel mogelijk zo veel mogelijk te verdienen. Of 't spul werkt boeit ze niet erg.
Opdrukken van namen en logo's maakt ook niet veel uit: ze drukken alles erop wat nodig is om de zaak verkoopbaar te maken.

Een IRF520 is niet echt een goede keuze als je de gate met een microcontroller aanstuurt, de Vgs is vrij hoog.
Een logical mosfet als de IRL540 is dan een betere keuze...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Grappig..
Alleen heeft de vakhandel hier die weer niet ;(.

De IFR520 komt veel voor op kleine printjes met connectors en wordt bij de Arduino voorbeelden ook veel genoemd. Daarom kwam ik er ook op.

Hij zou juist zijn ontworpen voor aansturing vanuit een uC...

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Tja,

Het internet staat nu eenmaal vol met hele en halve waarheden... ;)
Hij heeft een threshold van 4v bij hele lage stromen, bij de in het plaatje genoemde 9.2A zit je al ruim boven de 7v.

Daarbij levert een mcu pin meestal niet de hele 5v output, maar iets tussen de 4.5 en 5v
Het *kan* dus goed gaan, maar ik zou er niet op vertrouwen. Als de mosfet in het lineaire gebied komt, is het feest gauw afgelopen...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op 26 april 2021 12:31:44 schreef Arco:
Tja,

Het internet staat nu eenmaal vol met hele en halve waarheden... ;)
Hij heeft een threshold van 4v bij hele lage stromen, bij de in het plaatje genoemde 9.2A zit je al ruim boven de 7v.

Daarbij levert een mcu pin meestal niet de hele 5v output, maar iets tussen de 4.5 en 5v
Het *kan* dus goed gaan, maar ik zou er niet op vertrouwen. Als de mosfet in het lineaire gebied komt, is het feest gauw afgelopen...

[bijlage]

Dan toch deze maar zien te krijgen. Duur is het in ieder geval niet!
(alleen die verzendkosten maken het prijzig)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Conrad heeft ze.

Ik kan hier gratis bestellen via de vakhandel

Voor € 0,53 per stuk kan ik geen armoede lijden... :)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

De Watchdog-versie van het programma is inmniddels geïnstalleerd.

Het programma heeft overigens hiervoor een aantal dagen probleemloos gedraaid zonder 'vastlopers' ;)

Het euvel met één paneel is gelokaliseerd, daar maakte 1 ledje sluiting.

Er is dus nog hoop dat het goed komt!

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Helaas, vannacht trad er weer een hangsessie op. Na ca een half uur stopte de processor. Watchdog heeft niet gewerkt, die waakhond werd ook niet wakker... ;(

De Processor is dus gewoon gestopt...

Dan zal ik denk ik moeten overschakelen naar noodverband-2: een power off / on als er binnen x-tijd geen puls komt van de processor.

Kunst is wel om dat ook verder te gaan waar-ie was gebleven. Omdat er spanningsverlies is opgetreden, is de RAM weg.

Dan zal ik de meest cruciale waarden zoals functie waar hij mee bezig was, en de data van de displays (sterren) in het Eeprom gedeelte van de processor moeten stoppen...

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Je begrijpt wel dat dit geen oplossing is? (meer iets als een emmer onder een lekke waterleiding zetten... ;) )
Zoals eerder gezegd: als de processor vastloopt en de watchdog zelfs niets meer doet, dan is er iets gruwelijk mis.
(ik heb dat ooit alleen voor elkaar kunnen krijgen door BOR uit te zetten, en de voedingsspanning langzaam onder de 1.5v te laten zakken.)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op 27 april 2021 16:48:42 schreef Arco:
Je begrijpt wel dat dit geen oplossing is? (meer iets als een emmer onder een lekke waterleiding zetten... ;) )
Zoals eerder gezegd: als de processor vastloopt en de watchdog zelfs niets meer doet, dan is er iets gruwelijk mis.
(ik heb dat ooit alleen voor elkaar kunnen krijgen door BOR uit te zetten, en de voedingsspanning langzaam onder de 1.5v te laten zakken.)

Op 27 april 2021 16:48:42 schreef Arco:
Je begrijpt wel dat dit geen oplossing is? (meer iets als een emmer onder een lekke waterleiding zetten... ;) )

Erger nog...Siliconenkit aan de buitenkant van het lek...

Maar ja...

In eerste instantie had ik de schakeling met de PIC 16F18857. Daarna ben ik teruggegaan naar de PIC 16F1847, dus zonder 'remappable toestanden'.
Vervolgens de RTC er af, zodat ik geen I2C en SPI naast elkaar had.
Daarna nóg verder afgeschaald: de PWM voor ledjes voor Maan en Mars vervangen door gewoon aan of uit.
Uiteindelijk dus een simpel geheel.

Ik kan de schakeling hier thuis niet aan het hangen krijgen; dat gebeurt alleen wanneer de panelen met de MAX7219 er aan worden gekoppeld.

De voeding (5V, 2A) is dezelfde als waarmee ik heb getest. 4,8 Volt komt er uit als alles aan is.

Blijft als enige variabele de bedrading lijkt het.

Dan zou volgens jou (Arco) de processor nog niet mogen hangen.
Dat verschijnel komt echter niet vreemd bij me over. Ik kreeg dat wel regelmatig voor elkaar: in combinatie met Max7219 Led-matrixen en SPI
lukt me dat af en toe wel.

Het zou mmisschien ook kunnen dat de Processor (MSSP-module) via SPI ergens op wacht dat niet komt.

Overigens moet ik de laatste 'hangsessie' wel nog verifiëren, omdat het programma de Leds moet doven (fading heaven) en er nog een x-aantal ledjes blijven branden.
Het kán zijn dar er iets in een loop komt.

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Dan nog moeten de resetknop en watchdog *altijd* blijven werken...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Op 27 april 2021 17:47:59 schreef Arco:
Dan nog moeten de resetknop en watchdog *altijd* blijven werken...

De resetknop is wat lastig te testen, die zit op het printje dat tussen de panelen en plafond zit.

Maar omdat de Watchdog soms ook niet werkt, vrees ik dat de processor toch zélf is gestopt op die momenten.

Er móet volgens mij toch iets met die SPi zijn...(timing / delays, etc)
Is daar echt geen error-handling van?

Ondertussen werkt het andere 'lapmiddel' wel in de proefopstelling. Een separaat processortje die elke keer een puls krijgt van de sterrenhemel. Bij uitblijven hiervan (m.a.w. 'processor hangt') wordt de power uitgezet en ca 2 seconden later weer aan.

Was op zich al een aardige oefening. :)

Het relais-moduultje ipv de MOSFET is hierbij nog niet eens zó slecht: in normale stand (relais inactief) maakt hij verbinding. Dus geen enkel spanningsverlies.

Heeft het processortje geen puls ontvangen binnen een bepaalde tijd? Dan schakelt het relais in (verbreekcontact) en verbreekt de voeding. Na 2 sec weer aan en voilá het loopt weer.

Maar - I know - , geen oplossing, wel een 'workaround', op hoop de oorzaak van de ellende te achterhalen en een échte oplossing te vinden...

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Ik ben nog even bezig met de EEPROM van de PIC16F1847. Die heeft 256 bytes aan boord.

Nu stop ik de waardes van variabelen (flags) en de matrixen hierin. En als er een power reset komt, dan restore ik die waardes weer van de EEPROM naar de RAM.

Ik doe dat met:

pic basic code:

t1 = 0
  For x1 = 0 to 7
    For y1 = 0 to 7                                          'Store Content Matrix
        Inc(t1)
        EEPROM_Write((0x10 + t1), Inh[x1] [y1])
    Next y1
  Next x1

En restore andersom:

pic basic code:

t1 = 0
    For x1 = 0 to 7
    For y1 = 0 to 7                                           'Restore Content Matrix
        Inc(t1)
        Inh[x1] [y1] = EEPROM_Read((0x010+t1))
    Next y1
  Next x1

Afgezien van de vraag of dit zo wel de slimste methode is, zit er geen limiet aan het schrijven naar de EEprom? Dat niet na verloop van tijd het 'op' is?

Is daarnaast de instructietijd per read write gelijk aan een 'normale' instructie (fosc / 4)?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

zit er geen limiet aan het schrijven naar de EEprom?

Writes per cel is min. 100k voor iedere byte.
Echter na een totaal aantal writes van 1M (naar verschillende bytes) moet de eeprom opnieuw gewist en beschreven worden om corruptie te voorkomen.

Is daarnaast de instructietijd per read write gelijk aan een 'normale' instructie (fosc / 4)?

Nee, voorbeeld staat in de datasheet (er moeten 7 instructies worden uitgevoerd)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Ah, dank...

Ik meende me in een (zeer) grijs verleden te herinneren dat de eerste generaties EEPROMs transistoren 'opbliezen' als ware het een zekering om een 1 of 0 vast te houden. En dat na verloop van tijd de voorraad op was...

Het opnieuw wisssen is op zich makkelijk en ook wel in te bouwen.

Het schrijven gaat goed, maar ik kan de inhoud niet 'live' zien met bv Pickit3 (staat een een hex scherm, maar daar staat alleeen overal FF in.

De EEprom-editor van MB geeft je volgens mij alleen de mogelijkheid een vooraf vastgestelde waardes in te stellen en te bewaren in een íhex file wat ik zo zie.

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Qua schakeling heb ik het nu wel werkend. Met Watchdog als bewaker, en - als ware het een defibrillator - de schakeling die 'klapt' als er geen hartslag meer is... :)

Dit had ik vooraf ook niet kunnen bedenken dat dat zou gaan gebeuren... :/

Ik zou nog kunnen kiezen om niet de hele voedingsspanning te schakelen (waar de MAX7219's met hun LED's aan hangen), maar alleen de Microcontroller. Voordeel hiervan kan zijn dat wanneer ik tóch kies voor een MOSFET ipv een relais, de stroom van alle Leds niet via de MOSFET hoeft.

Maar ik ben wat huiverig om dat los te koppelen met die MAX7219-dingen.

Op zich vroeg ik ook af: als ik de CLK of SDO losmaak, schieten ze in de stress. Maar als ik die er weer aankoppel, waarom zouden ze het dan niet gewoon weer doen? Ze krijgen dan toch de juiste data?
Maar ze willen pas weer als de voeding is afgesloten en daarna weer aan...

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Nee, voorbeeld staat in de datasheet (er moeten 7 instructies worden uitgevoerd)

Dat betekent dus als ik het goed begrijp bij een klokfrequentie van 32 Mhx:

32 / 4 = 8 Mhz = 125 ns cycle. Maal 7 = 875 nS. Nog minder dan een uSec dus?

Bij ca 80 keer schrijven voor alle variabelen ben ik dan 70uS kwijt.

Dat zal dan geen beperkende factor ergens in de timing zijn..

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Tja,

Of die Chinese dingen brak in elkaar zitten of niet weet ik ook niet. Wellicht dat een echte geen last heeft van loskoppelen...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com