Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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)
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
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..
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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%)]
benleentje
Golden Member
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.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
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%)]
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
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. 