Hoi Marcel,
Ik reageer ook even via het forum zodat anderen daar ook wat aan kunnen hebben.
De onderstaande versie werkt prima en naar verwachting. Pas nadat de eerste keer de LINK is geactiveerd kun je met de MUTE de PTT inschakelen. Dus ook als de HS op het BS wordt gehangen om te laden en er vervolgens weer af wordt gehaald, schakelt de PTT niet in. Prima dus!
...
Door het uitsluiten van de CHARGE LED kan er met één signaal minder volstaan worden. Daarnaast wordt de LINK nu niet meer van de LED afgehaald. Ook een voordeel.
Vanmorgen alles uitgeprobeerd en alle features waaronder ook de audio volumes, zowel mic als speaker kunnen perfect met de knoppen ingesteld worden.
PROGRAM CS361N
' * VERSIE 8
' * Project name:
' CS361N
' MCU: PIC12F683
' Note that I'm using optocouplers to detect my status LED's so the outputs of the opto's
' are inverted. A lit LED is a logic zero output. If you have transistor buffers that
' don't invert logic, then change all of the test statements the the opposite of what they currently are.
' For example: current code = "if CHARGE_LED=0" would be changed to "if CHARGE_LED=1"
' Also change initialisation commands.
SYMBOL MUTE_LED = GPIO.1
SYMBOL LINK_LED = GPIO.2
SYMBOL PTT = GPIO.5
main:
DIM PTT_DELAY AS BYTE
DIM PTT_RELEASE AS BYTE
DIM DELAY_VALUE AS BYTE
DIM RELEASE_VALUE AS BYTE
CMCON0 = 7 ' turn off comparator
ANSEL = 0 ' analog off
TRISIO=%00000110 ' Port GPIO.0,1,2 INPUTS, 3,4,5 is OUTPUT
' Initialise variables
'timer waarde voor de PTT uitschakel vertraging
DELAY_VALUE = 51 ' 51 x 10mSec = 510mSec
'timer waarde voor de PTT release als de Mute led eerder aangaat
RELEASE_VALUE = 0 ' 49 x 10mSec = 490mSec TIJDELIJK EVEN OP 0 GEZET,
PTT = 0
PTT_RELEASE = 0
PTT_DELAY = 0
Loop:
IF LINK_LED = 1 THEN ' maak van de 1 een 0 om het LINK signaal te inverteren
IF MUTE_LED = 1 THEN ' maak van de 1 een 0 om het MUTE signaal te inverteren
PTT = 0
PTT_DELAY = DELAY_VALUE
IF PTT_RELEASE < 255 THEN PTT_RELEASE = PTT_RELEASE + 1 END IF
ELSE
IF PTT_DELAY = DELAY_VALUE THEN
IF PTT_RELEASE < RELEASE_VALUE THEN PTT_DELAY = 0 END IF
PTT_RELEASE = 0
END IF
IF PTT_DELAY > 0 THEN PTT_DELAY = PTT_DELAY - 1 END IF
IF PTT_DELAY = 0 THEN PTT = 1 END IF
END IF
ELSE
PTT = 0
PTT_RELEASE = 0
PTT_DELAY = 0
WHILE LINK_LED = 0
DELAY_MS(10)
WEND
DELAY_MS(50)
WHILE MUTE_LED = 0
DELAY_MS(10)
WEND
END IF
DELAY_MS(10)
GOTO Loop
END.
73's Fokko / PA3VOS