Sterrenhemel

Dit topic is gesloten

Arco

Special Member

Bij de meeste pics staat wat je met de trisx registers moet instellen.
(meestal als input, zodat de 'normale' pindriver is uitgeschakeld, de UARRT/SPI/I2C hebben hun eigen drivers)
Bij pics als de 18857 is het nog wat complexer door de aanwezigheid van de PPS (staat e.e.a. in het PPS hoofdstuk daarover)

De 'ingebakken' PPS_xxx library functies gebruik ik nooit, die gebruiken veeels te veel geheugen (tot 1000 bytes omdat ze erg universeel zijn)
Zelfgeschreven init gebruikt maar 18 bytes... ;)

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

Golden Member

Ik vroeg me nog iets anders af in MB:

Ik heb op veel plaatsen staan:

pic basic code:


FlagsA = 0
FlagsB = 0
FlagsC = 0 

Ik ben geneigd om deze statements in een Sub te stoppen en die dan steeds aan te roepen, bv Clear_Flags().
Dat houdt de code klein.

Maakt dit uit in wat de compiler genereert, of kost de aanroep van een routine meer 'overhead'?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Een call kost (zonder parameters) 4 bytes extra. Verder is het gelijk aan wat inline code doet.

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

Golden Member

Op 5 januari 2021 23:50:40 schreef Bavelt:
De PIC 16F18857 ga ik bestellen. € 1,44 ex BTW bij Farnell is gewoon goedkoop.

Ik zie dat Farnell nu €5,00 verwerkingskosten rekent, ook voor zakelijke klanten...

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Tja,

Dat varieert nogal van tijd tot tijd. Vroeger had Farnell ook 5 euro orderkosten, zelfde bij RS (ook soms wel/niet)

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

Golden Member

Ik zit nog met een vervelend foutje in de interrupt routine. Ben er al een halve dag mee bezig maar krijg de vinger er niet achter.

bij opstarten komt het programma nl in het gedeelte terecht waar hij alleen maar mag komen als er op de IR is gedrukt. Dwz PORTB.0 wordt laag.
Ik inverteer het signaal dmv IRin = NOT PORTB.0

Dus IRIn mag alleen hoog worden als de TSOP PORTB.0 laag trekt.

Tóch komt hij bij IRin = 1 terecht (bij opstarten) zonder dat de AB wordt gebruikt.

Ik heb al met ledjes proberen te achterhalen waar het nu fout gaat, maar kom er niet uit.

pic basic code:

'=======================================================================================
Sub procedure Interrupt() iv 0x0004 ics ICS_AUTO
'=======================================================================================
  If TMR2If_bit Then                                          'Timer interrupt?
  

    IRIn = NOT PORTB.0                                        'Signal is Inverted
     If fIRFound = 0 Then
       If IrIn <> fPrev Then
          if fPrev = 0 Then                                   'Low to high
          lata.7 = 1     'Test LED
             If (Cnt > 17) and (Cnt < 26) Then                'Bit 18 - 25 = Command Code
                 If PulsCnt < 14 then
                     CodeByte.(Cnt-18) = 0
                 Else
                     CodeByte.(Cnt-18) = 1
                 End If
              End If
              PulsCnt = 0
              Inc(Cnt)
              If Cnt > 33 Then fIrFound = 1 Cnt = 0 PulsCnt = 0 End If
           End If
          fPrev = IrIn
        Else
           Inc(PulsCnt)
        End If
     End If
 TMR2If_bit = 0
 End If
End Sub

Wat gaat hier nu mis?

;( :?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Is IrIn een bit? Wordt fPrev wel 0 gemaakt bij opstarten?

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

Golden Member

Ja,

pic basic code:

 FlagsA       As Byte
      fIRFound   As sBit  At FlagsA.0
      fPrev      As sBit  At FlagsA.1
      IRIn       As sBit  At FlagsA.2
      fSw1       As sBit  At FlagsA.3
      fOnOff     As sBit  At FlagsA.4
      fHide      As Sbit  At FlagsA.5

En in de Main:

pic basic code:

FlagsA = 0

Ik heb voor de zekerheid even een testje gedaan door fPrev en IRIN uit de flags te halen en ze als bit te declareren. Dat maakt niets uit.

Raar probleem (kost uurtjes slaap.. ;()

In de logoca zie ik geen gekke dingen (of ik kijk er finaal overheen).
Of zou er 'iets' zijn dat maakt dat PORTB.0 bij starten toch even laag wordt getrokken?

Hij zit met een pullup van 10K naar +VCC en uiteraard de output van de TSOP.
Ook voor de zekerheid PORTB.0 = 1 in de main gezet (eigenlijk overbodig)

Als ik de TSOP er uithaal, dan heb ik het verschijnsel niet...
Haalt die hem misschien eventjes naar laag?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Als het zonder TSOP niet gebeurt, dan komt er duidelijk iets van storing binnen. Maar lijkt me sterk dat dat toevallig een geldige code zou zijn...

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

Golden Member

Ik heb een routine, die in de Main wordt gestart: (vlak voor de hoofd While - true loop).

pic basic code:

For Rw = 0 to 7                                              'Random startvalue For the matrixes
   For m1 = 0 to 7                                            'Value between 0 - 255
     Matrix[Rw][m1] = rand()/128
     Delay_ms(5)
   Next m1
 Next Rw

Hierin wordt een random waarde in de display-tabel gezet.

Als ik de delay_ms(5) er uit haal, dan is het verschijnsel ook weg.
Die delay hoeft er eigenlijk ook helemaal niet in.

Maar hierdoor kan ik niet verklaren of dit de oorzaak is...

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Nu moet ik toegeven dat het allemaal lekker vol zit..

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Als het zonder TSOP niet gebeurt, dan komt er duidelijk iets van storing binnen. Maar lijkt me sterk dat dat toevallig een geldige code zou zijn...

In dit geval test ik niet op een geldige code.
Enkel of IRIN naar hoog gaat (ofwel PORTB.0 naar laag).

Dit mag dus alleen maar gebeuren als de TSOP active wordt. Maar dit is hij niet (tenminste, ik druk nergens op...)

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Die statistics kloppen niet altijd helemaal, dus ik zou proberen wat ruimte vrij te houden...

Sommige zaken worden (ten onrechte) niet meegeteld, zoals constants declarations met een vast adres, bijv:

pic basic code:


Const MyConst As Word[8] = (0,0,0,0,0,0,0,0) Org 0x0800

Als je dit toevoegt zul je zien dat de statistics niet veranderen... ;)
Zelfde geldt voor directives als OrgAll (en er zal nog wel meer zijn...

Bij die TSOP's staat nergens wat de opstarteigenschappen zijn, ik zou dus na opstart zeker een paar honderd mS wachten voor de tsop uit te lezen.
(zou makkelijk kunnen dat er wat 'rommel' binnenkomt...)

[Bericht gewijzigd door Arco op donderdag 7 januari 2021 12:16:45 (19%)

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

Golden Member

Ruimte vrijmaken is lastig; of ik moet echt functies verwijderen.

Ik heb natuurlijk nog die PIC19F1936 liggen die veel ruimer in zijn jasje zit.

Ik zie in de datasheet een SDO Voor SPI en SDA voor I2C en een gezamenlijke pin voor SCL/SCK.

Betekent dat nu dat ik zowel I2C als SPI kan gebruiken? (en dan bedoel ik tegelijkertijd).

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Je kunt er maar 1 tegelijk gebruiken. (anders moet je de 16F1946/47 nemen)

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

Golden Member

.

[Bericht gewijzigd door Bavelt op donderdag 7 januari 2021 16:46:28 (99%)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

De PIC16F1946 is vergelijkbaar met de PIC16F1847. Dat blijft toch wel een alleskunner, met zijn 8K RAm en 2 MSSP's. (én 18-pins DIL)
Ik zoek eigenlijk exemplaren met in een DIL-uitvoering, zodat ik ze in breadboards kan testen.

Kom ik weer uit op de reeks PIC 16F18857 - PIC 16F18875.

Het blijft me verbazen hoeveel types MicroChip wel niet produceert...
Qua leverancier zit je toch wel gauw vast aan Farnell. Conrad heeft steeds minder in deze hoek merk ik wel.

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Als je een groot assortiment, snelle levering en een redelijke prijs zoekt voor componenten kom je al snel bij Farnell, RS, of TME terecht...
(het lijkt wel of Conrad met de dag minder standaard componenten heeft...)

[Bericht gewijzigd door Arco op donderdag 7 januari 2021 17:38:05 (21%)

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

Golden Member

Bij RS moet ik er minimaal 15 tegelijk bestellen (zitten ws in zo'n kokertje)

TME heeft idd een uitgebreid assortiment merk ik. Alleen hier zijn de 'verwerkingskosten' weer hoger (ca 8 Euro). Dat maakt dat je product duur wordt als je maar weinig nodig hebt.
(Of opsparen, tja..)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Het blijft allemaal maar raar met mijn projectje. Ik kom zo ook niet verder.. :'(

Het probleem blijft dat de TSOP de output op onvoorspelbare momenten omlaag trekt, zonder een IR signaal in de buurt.
Hou ik echter mijn hand voor het ding, dan is het verschijnel weg!

Hand weer wegtrekken, dan gaat het weer mis...

Dus ik met het ding naar een donkere kamer, waarvan ik zeker weet dat er geen andere IR-signalen zijn.
Maar ook daar doet hij raar.

Wat kan ik hier nu nog mee? Staat het ding te oscilleren op een lage frequentie?

:? :?

Fouten zijn het bewijs dat je het probeert..

Op 7 januari 2021 23:24:11 schreef Bavelt:

Het probleem blijft dat de TSOP de output op onvoorspelbare momenten omlaag trekt, zonder een IR signaal in de buurt.
Hou ik echter mijn hand voor het ding, dan is het verschijnel weg!

Strange, heb ik nog niet gehad, doet hij dat ook zonder aan de controller te leggen?
Staat er een 100nF over de voeding dicht bij de pinnen?

LDmicro user.
Arco

Special Member

Geen led , spaarlampen of TL met EVSA in het zicht van de TSOP? (vaak werken die ongelukkig genoeg ook rond de 40kHz)

Kunnen soms de vreemdste dingen zijn.
Ik had bij testen ook last van vreemde signalen. Bleek veroorzaakt door mijn laptop. Die heeft een serieele IR poort ingebouwd.
Die schijnt standaard om de zoveel seconden een soort boodschap uit te zenden om te kijken of er andere IR soortgenoten in de buurt zijn... ;)

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

Golden Member

Ik begin al een beetje warm te worden...

Het lijkt erop dat de pulsen van de schakeling zelf komen. Dat wil zeggen:

De LEDS!

Ik test de sterrenhemel met 8 matrixen met rode leds. En die blijken kennelijk invloed uit te oefenen op de TSOP!
En die dingen zijn altijd in de buurt van de schakeling!

Maar dat zou toch geen IR-licht moeten zijn?

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Dit moet het zijn!
Wat een grap!

Dan vallen de puzzelstukjes samen. Geen wonder dat er bij opstarten iets raars gebeurde: ik laat bij start als test alle leds branden,
En ook in de donkere kamer, waar. ‘ niks’. Zou zijn. Jawel, de ledjes!
En geen wonder dat het op een loop leek: de schakeling toont iets en dat pikt de TSOP op en gaat ermee aan de haal...

Morgen maar eens echt uittesten of dat alleen bij de rode leds is, of ook bij andere!

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Buisje om de TSOP en klaar... ;)

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

Dit topic is gesloten