Dat klopt op enkele uS na...
Complete lijn is ~64uS zo te zien, moeilijk op te meten op het scherm met een geo driehoek...

[Bericht gewijzigd door Arco op (63%)]

Volgens de analyzer is het 64,16 uS

Wat ik dan nog niet heb is de puls van 20mS, met een lengte van 20uS voor de verticale sync.

In MPSIM is die puls er gewoon ook...
Kleine afwijking ligt aan de interne oscillator, die is +/- 2%

[Bericht gewijzigd door Arco op (46%)]

-

[Bericht gewijzigd door Bavelt op (100%)]

MPSim is de simulator in MPLab...

Even aan andere sugestie,

Waarom gebruik je niet een standaard sync generator zoals de SAA1101 en gebruik je PIC als pixel generator ?

Op donderdag 18 januari 2024 09:29:49 schreef brabander:
Even aan andere sugestie,

Waarom gebruik je niet een standaard sync generator zoals de SAA1101 en gebruik je PIC als pixel generator ?

Ik heb wat ervaring opgedaan in het programmeren van de PIC-familie van Microchip. En gebruik daarbij MikroBasic (niet PICbasic).
De RAA1102 ken ik niet, MikroBasic kent die ook niet.
Daarbij heb ik een aantal van die PIC-microcontrollers hier liggen.
Vandaar.

Op maandag 15 januari 2024 17:09:29 schreef Lambiek:
[...]
Heb je geen digitale scoop?

Nee, helaas. Wel een Logic Analyzer.

Op dinsdag 16 januari 2024 16:28:43 schreef Arco:
omdat er een bug in de compiler zit in assembly afhandeling: een assembly call wordt niet uitgevoerd.

Brengt MikroE eigenlijk wel updates aan van MikroBasic mat bugfixes?
Ik heb al een hele poos versie 7.6.0

Deze bug is gemeld in 2012 en zou toen z.s.m. gefixed worden... :+

De support was altijd fantastisch, tot de nieuwe NECTO Studio compilers verschenen. (daar gaat alle aandacht naar toe, ze beloven beterschap, maar ja...)
Gelukkig zijn de aanwezige bugs niet al te ernstig. Meeste zijn cosmetische fouten in de IDE en statistiek.

Erger is het ontbreken van support voor de nieuwere chips.
Helaas is er tot nu toe alleen een C compiler voor NECTO, maar men zegt wel dat de andere compilers (o.a. pascal en basic) er ook aan komen (we wachten af)

Flikker die oude zooi toch weg, het is zoveel gemakkelijker met een moderne controller, zoals een ESP32, STM32, RP2040, of andere dergelijke controller. Nu zit je te klooien met een controller uit de vorige eeuw, op een klokfrequentie die je nog bijna kunt horen, met tools die geen hond gebruikt en allang niet meer ondersteund worden.

Binnen het Arduino ecosysteem is heel veel informatie te vinden, omdat miljoenen mensen dat gebruiken. De originele arduino is natuurlijk ook een oud barrel, maar de eerder genoemde moderne processors worden ook ondersteund.

Op donderdag 18 januari 2024 16:11:44 schreef SparkyGSX:
Flikker die oude zooi toch weg, het is zoveel gemakkelijker met een moderne controller, zoals een ESP32, STM32, RP2040, of andere dergelijke controller. Nu zit je te klooien met een controller uit de vorige eeuw, op een klokfrequentie die je nog bijna kunt horen, met tools die geen hond gebruikt en allang niet meer ondersteund worden.

Binnen het Arduino ecosysteem is heel veel informatie te vinden, omdat miljoenen mensen dat gebruiken. De originele arduino is natuurlijk ook een oud barrel, maar de eerder genoemde moderne processors worden ook ondersteund.

"Elk nadeel heb se voordeel.." alsdus een oud voetbalfenomeen.

Het kan wel oud spul zijn, maar werkt nog steeds wel. Een PIC16F1847 kan op 32Mhz werken met 4*PLL. Dat kan ik niet meer horen.. :)

Ik heb ook wel een ESP32, maar die wordt veelal geprogrammeerd met - Net als in Arduino - de programmeertaal C of varianten daarvan.
Dat vind ik zelf een voorbeeld van 'spaghetti-programmeren'. Die programma's schaar ik in de categorie 'write once - read never..'.

Maar er zijn inderdaad mensen die erbij zweren.

Op woensdag 17 januari 2024 23:27:31 schreef Arco:
In MPSIM is die puls er gewoon ook...

Ik zie die puls die om de 20 m(milli) seconde zou moeten komen toch niet.
Ik heb de weerstanden op poort B.0 EN B.1 en een belasting van 75 Ohm aangebracht, een soort DAC dus. Dat werkt wel.
Maar ik mis dus mijn Vsync Puls in het plaatje..

Wat is de timebase van het scoop plaatje?
De puls moet iedere 20mS (20000uS) komen, en is 20uS lang (dus lastig te zien)

De 20uS puls is eigenlijk een 'verlengde' 5uS puls na ieder 312 line frame.

Ik kan eventueel via een andere pin een synchronisatiepuls voor de scoop uitsturen. (hoe doe je dat nu, lijkt me lastig?)

[Bericht gewijzigd door Arco op (24%)]

Dit is 20uS / Div

Als ik hem op bv 5mS / Div zet, zie ik geen puls..

Hoe synchroniseer je de scoop om de puls te zien? (dat lijkt me vrijwel onmogelijk?)
Versie met syncpuls voor scoop op port B.2


;==============================================================================
; SyncTest.asm. Clock frequency = 8MHz
;==============================================================================
#include <p16F1847.inc>
 
                __CONFIG _CONFIG1, 0x3FFF & _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOREN_OFF 
                __CONFIG _CONFIG2, 0x3FFF & _LVP_OFF & _PLLEN_OFF 

                radix dec
                errorlevel -302
 
cnt             equ     0x70                    ;Counters/digits
cnt2            equ     0x71

;==============================================================================
; Program start
;------------------------------------------------------------------------------
                org     0x000
                goto    Init
 
;==============================================================================
; Initialize
;------------------------------------------------------------------------------ 
                org     0x020
Init		    
	        banksel trisb                   ;Port B all output
                movlw   b'00000000'             ;
                movwf   trisb                   ;

                movlw   b'01110000'             ;Oscillator 8MHz
                movwf   osccon                  ; 
          
                banksel anselb                  ;All pins digital 
                clrf    anselb                  ;			
                banksel latb                    ;
                nop                             ;
                clrf    latb                    ;
                nop                             ;
 
;==============================================================================
loop2           movlw    156                    ;156 x 2 = 312 lines
                movwf    cnt2                   ;Loop counter
loop1           call     sendline2              ;Run 2 times 
                call     sendline               ; 
                decfsz   cnt2, f                ;All done?
                goto     loop1                  ;No, next loop
                movlw    b'11111100'            ;Done, add frame sync 
                andwf    latb, f                ;
                movlw    8                      ;
                movwf    cnt                    ;
cntlp3          decfsz   cnt, f                 ;
                goto     cntlp3                 ;
                goto     del14                  ;All done, new frame 
del14           goto     loop2                  ;

;==============================================================================
sendline        goto    del0                    ;
del0            nop                             ;
sendline2       nop                             ;goto    del1                    ;
del1            nop                             ;
                bsf     latb, 0                 ;Set b0           
                goto    del3                    ;Wait 7uS
del3	        goto    del4                    ;
del4            goto    del5                    ;
del5            goto    del6                    ;
del6            goto    del7                    ;
del7            goto    del8                    ;Scoop syncpuls on B2
del8            bsf     latb, 2                 ;
;                nop                             ;
                bsf     latb, 1                 ;Set b1
                movlw   16                      ;Wait 26uS
                movwf   cnt                     ;
cntlp1	        decfsz  cnt, f                  ;
                goto    cntlp1                  ;
                nop                             ;
                nop                             ;  
                bcf     latb, 1                 ;Clear b1
                movlw   15                      ;Wait 26uS 
                movwf   cnt                     ;
cntlp2          decfsz  cnt, f                  ;
                goto    cntlp2                  ;
                goto    del11                   ;
del11           goto    del12                   ;
del12           bcf     latb, 2                 ;Scoop syncpuls end
;                nop                             ;
                bcf     latb, 0                 ;
                retlw   0	                ;Done and return

                end

Scopebeeld:
Bovenste is de output op de spanningsdeler.

Onderste poort B.2. cyclus is 66Us. Hoog: 28 uS, Laag: 38 US

.
.
.

Vergroot:

[Bericht gewijzigd door Bavelt op (12%)]

Een PIC16F1847 kan op 32Mhz werken met 4*PLL. Dat kan ik niet meer horen..

Klok snelheid zegt niets. Deze oude PICs hebben 4 klokcyclus nodig per instructie de chip in de arduino doet elke klokcyclus 1 instructie. en dat maakt de arduino op 16Mhz 2x zo snel.

Clocksnelheid zegt weinig als de code goed is. De pic kan dit klusje fluitend op 8MHz... :+ (zelfs een pic10F302 kan dat in een sot23-6 behuizing met maar 256 words geheugen)
Ga even in MPSIM kijken...

[edit]
Zat inderdaad een foutje in ('t zijn altijd de simpele wijzigingen die je nekken, in de simulator nu een puls van 17uS op B.2)


;==============================================================================
; PAL_Sync.asm. Clock frequency = 8MHz
;==============================================================================
#include <p16F1847.inc>
 
                __CONFIG _CONFIG1, 0x3FFF & _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOREN_OFF 
                __CONFIG _CONFIG2, 0x3FFF & _LVP_OFF & _PLLEN_OFF 

                radix dec
                errorlevel -302
 
cnt             equ     0x70                    ;Counters/digits
cnt2            equ     0x71

;==============================================================================
; Program start
;------------------------------------------------------------------------------
                org     0x000
                goto    Init
 
;==============================================================================
; Initialize
;------------------------------------------------------------------------------ 
                org     0x020
Init		    
	        banksel trisb                   ;Port B all output
                movlw   b'00000000'             ;
                movwf   trisb                   ;

                movlw   b'01110000'             ;Oscillator 8MHz
                movwf   osccon                  ; 
          
                banksel anselb                  ;All pins digital 
                clrf    anselb                  ;			
                banksel latb                    ;
                nop                             ;
                clrf    latb                    ;
                nop                             ;
 
;==============================================================================
loop2           movlw    156                    ;156 x 2 = 312 lines
                movwf    cnt2                   ;Loop counter
loop1           call     sendline2              ;Run 2 times 
                call     sendline               ; 
                decfsz   cnt2, f                ;All done?
                goto     loop1                  ;No, next loop
                movlw    b'00000100'            ;Done, add frame sync 
                movwf    latb                   ;Sync puls scoop start
                movlw    8                      ;
                movwf    cnt                    ;
cntlp3          decfsz   cnt, f                 ;
                goto     cntlp3                 ;
                goto     del14                  ;All done, new frame 
del14           goto     loop2                  ;

;==============================================================================
sendline        goto    del0                    ;
del0            nop                             ;
sendline2       bcf     latb, 2                 ;
del1            nop                             ;
                bsf     latb, 0                 ;Set b0           
                goto    del3                    ;Wait 7uS
del3	        goto    del4                    ;
del4            goto    del5                    ;
del5            goto    del6                    ;
del6            goto    del7                    ;
del7            goto    del8                    ;
del8            nop                             ;
                bsf     latb, 1                 ;Set b1
                movlw   16                      ;Wait 26uS
                movwf   cnt                     ;
cntlp1	        decfsz  cnt, f                  ;
                goto    cntlp1                  ;
                nop                             ;
                nop                             ;  
                bcf     latb, 1                 ;Clear b1
                movlw   15                      ;Wait 26uS 
                movwf   cnt                     ;
cntlp2          decfsz  cnt, f                  ;
                goto    cntlp2                  ;
                goto    del11                   ;
del11           goto    del12                   ;
del12           nop                             ;
                bcf     latb, 0                 ;
                retlw   0	                ;Done and return

                end

PAL_Sync.HEX

Deze geeft exact hetzelfde resultaat als de vorige HEX...

Ik probeerde de ASM sourcefile opnieuw te compileren met MPLAB IDE, v 8.92,
maar dat stuit op

"Could not spawn language tool. Check command-line options. (5)
A language-plugin exception occurred and was logged"

Of moet ik het met iets anders compileren?

[Bericht gewijzigd door Bavelt op (70%)]

Op donderdag 18 januari 2024 23:31:00 schreef Arco:
Clocksnelheid zegt weinig als de code goed is. De pic kan dit klusje fluitend op 8MHz...

Wellicht, maar dan kan hij niets anders meer doen. Als je een willekeurige STM32 pakt, kun je de DMA instellen om dit patroon te genereren, en vervolgens heeft de CPU al zijn tijd over om andere dingen te doen, zoals pixeldata genereren. Daarbij is bijvoorbeeld een STM32F4 ruim 20x sneller en 32 bits, dus nog veel sneller als je 16/32 bit instructies gebruikt. In de praktijk kan het zomaar 50-100x sneller zijn.

Ik heb geprobeerd om MPLAB X IDE te downloaden. Maar wat een draak van een software. Er wordt ik weet niet allemaal geïnstalleerd, duurde ook erg lang. En dan nog mist hij de Assembler Compiler.
Om die toe te voegen is mij heel onduidelijk...
Wat maken ze dat toch ingewikkeld. ;(