instelbare deler via up/down toets

Arco

Special Member

Aansluiten staat boven de sourcecode (port b en c):
Kan uiteraard (na aanpassing) ook met een rotary encoder.

(ikzelf vindt druktoetsen fijner...)

Versie voor encoder (aansluiten zelfde, code is nog veel simpeler):


'======================================================================================
Program Test

Dim REncA         As sbit at PORTA.B0
    REncB         As sbit at PORTA.B1

Dim Cnt           As Word
    KeyCnt        As Byte
    KeyRepCnt     As Byte
    SaveCnt       As Word
    Flags         As Byte
      fSave       As sbit at Flags.0
      fOldREncA   As sbit at Flags.1

Const MINCNT    = 3300
      MAXCNT    = 5300
      STARTCNT  = 3300
      REPTIME   = 8
      SAVETIME  = 1000
      EEADDRESS = 0x20
'========================================================================================
Sub procedure Interrupt() iv 0x0004 ics ICS_AUTO
'========================================================================================
  If TMR2IF_bit = 1 Then
    If SaveCnt < SAVETIME Then
      Inc(SaveCnt)
      If SaveCnt = SAVETIME Then fSave = 1 End If
    End If
    TMR2IF_bit = 0
  End If
End Sub

'========================================================================================
Sub Procedure Init()
'========================================================================================
  TRISA  = 0x03    ANSELA = 0
  TRISB  = 0x00    ANSELB = 0
  TRISC  = 0x00
  Flags  = 0
  PR2    = 124
  T2CON  = %01001100
  TMR2IE_bit = 1
  GIE_bit    = 1
  PEIE_bit   = 1
  Hi(Cnt) = EEProm_Read(EEADDRESS)
  Lo(Cnt) = EEProm_Read(EEADDRESS+1)
  If (Cnt < MINCNT) or (Cnt > MAXCNT) Then Cnt = STARTCNT End If
End Sub

'========================================================================================
main:

'========================================================================================
  Init()
  while true
    If REncA <> fOldREncA Then
      Delay_ms(5)
      If REncA <> fOldREncA Then
        If (REncA = 1) And (REncB = 1) Then
          Inc(Cnt) 
          If (Cnt > MAXCNT) Then Cnt = MINCNT End If
        End If
        If (REncA = 1) And (REncB = 0) Then
          Dec(Cnt) 
          If (Cnt < MINCNT) Then Cnt = MAXCNT End If
        End If
        fOldREncA = REncA
        SaveCnt = 0
        LATB = Lo(Dec2BCD16(Cnt))
        LATC = Hi(Dec2BCD16(Cnt))
      End If
      If fSave Then
        EEProm_Write(EEADDRESS, Hi(Cnt))
        EEProm_Write(EEADDRESS+1, Lo(Cnt))
        fSave = 0
      End If
    End If
  wend
End.

Test.hex

[Bericht gewijzigd door Arco op woensdag 19 oktober 2022 15:05:01 (88%)

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

Arco welke programmer raad je mij aan. Ik zie prijzen van 59 euro en die zijn alweer obsolete. Vaak zit er niet veel aan componenten in, zodat ik zelf ook zoiets kan maken, dat is nog goedkoper.
Alvast bedankt voor de moeite je neemt om een programma te schrijven.
En ik moet zeggen dat deze manier wel erg aantrekkelijk is, omdat er geen andere componenten en ic´s nodig zijn.

Telefunken Sender Systeme Berlin

Dat is eigenlijk waarom ik een Arduino (kloon) zou gebruiken, je hebt geen programmer nodig, daar zit gewoon een USB bootloader in.

Voor de PICs heb je wel een aparte programmer nodig, maar die is vast ook wel te krijgen voor een paar euro in China.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Arco

Special Member

Pickit2 met voetje voor DIL versie is hier €14.59: https://nl.aliexpress.com/item/1005003684254048.html
Zelf bouwen kan, maar er zit aardig wat in...:

Bootloader voor zo'n klein processortje vind ik overkill (en gemakzucht... :) )

[Bericht gewijzigd door Arco op woensdag 19 oktober 2022 19:26:57 (42%)

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

Hoever sta je ermee? ga je zelf pic's programmeren?

Gisteren had ik wat tijd om mijn versie op een prikbord te plaatsen en hier is het resultaat, zie filmpje

https://www.youtube.com/watch?v=TUZAj738AYA
Was het verkeerde filmpje nu is het juist.

Arco was iets sneller met zijn versie maar heeft waarschijnlijk meer tijd ;)

Deze versie is voor een 16F876a omdat ik er nog wel enkele in stock heb en veel prikbordversies.
Omzetten naar een 16F886 zou ook kunnen.
Met zo'n goedkope rotary encoder is dat niet werkbaar en een andere goed in de handel verkrijgbare heb ik niet.

De automatische opslagtijd van de instelling heb ik op 2sec gezet, volgens mij is het beter en niet levensbedreigend voor de chip.

De display's in het filmpje zijn oude HP5082-7300 met een BCD input en zijn heel moeilijk/niet verkrijgbaar.
Het schema is bijna identiek aan dat van ARCO, enkel heb je extern kristal/resonator (20Mhz) nodig en zijn de display's van plaats verwisseld.

Digit3 = eenheden
Digit4 = tientallen
Digit1 = honderdtallen
Digit2 = duizendtallen

Ik heb de hexfile erbij gevoegd moest je die zelf willen programmeren.
Het programma zelf is geschreven in LDmicro maar niemand heeft daar interesse voor en ik zou het eerst nog moeten opkuisen voor publicatie moesten er gegadigden zijn.

LDmicro user.

Mooi filmpje MGP.
De laatste dagen ben ik druk geweest met het ontwerp van de oscillator voor het frequentiebereik 3300 tot 5300kHz.
En ik heb het voor elkaar gekregen een zeer goede frequentie stabiliteit te krijgen, zo goed dat een PLL niet meer nodig is.
Het verloop van deze oscillator is niet meer als 10Hz in 10min. tijd op 5300kHz en dat maakt een PLL regeling overbodig.
En na die eerste inschakeling, na 10min. is het verloop helemaal niet meer en blijft op de frequentie staan met kristal stabiliteit.
Het gedoe rond om de PIC heb ik voor me uitgeschoven, maar kan ik geen Arduino ervoor gebruiken dan heb ik geen programmer nodig.

Telefunken Sender Systeme Berlin
Paulinha_B

Honourable Member

kan ik geen Arduino ervoor gebruiken

Ja, dat moet zeker kunnen. Denk bv. aan een Arduino Nano, 1 analoge ingang leest enkele drukknoppen in, en een cascade van 74xx595 vormt uw 13 uitgangsbits. Status uitvoeren kan via een karakter-lcd en/of serieel.

Op 22 oktober 2022 22:44:55 schreef Martin V:
Het gedoe rond om de PIC heb ik voor me uitgeschoven, maar kan ik geen Arduino ervoor gebruiken dan heb ik geen programmer nodig.

Mooi dat je het anders opgelost hebt.
Arduino is niet mijn ding, er zullen wel anderen zijn die dat wel kunnen.

Maak je geen zorgen over mij want ik ging het sowieso toch eens geprogrammeerd hebben zonder dat je het wist, want ik heb nood aan ideeën ;)

Ik maak van veel wat hier voorbijkomt een programma en een testopstelling, laatst nog dat vuurtorenlicht nog gemaakt alsook de 3 staps ledverlichting maar niet gepubliceerd want als de TS geen pic's kan programmeren heeft het eigenlijk geen zin en daar kan ik wel mee leven.

Op naar het volgende idee :)

LDmicro user.

Als je alsnog met delers in de weer zou willen is misschien een cd4059 een bruikbare oplossing?

Arco

Special Member

Het gedoe rond om de PIC heb ik voor me uitgeschoven

Microcontroller in dit geval is vooruitgang... :) (simpeler als 4 onderdelen wordt 't niet...)
Misschien heeft iemand nog wel een 1936 liggen en wil die programmeren/leveren...
(ik zelf heb niet veel meer in DIL...)

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