Hulp gevraagd bij aanpassing programmaatje voor PIC 12F683

Alles over zelfbouwprojecten.
Bericht
Auteur
-----
Berichten: 1027
Lid geworden op: 19 jul 2010, 14:43
Roepletters: XX0XX

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#31 Bericht door ----- »

pa3vos schreef:De uitschakelvertraging is ca 1,5 sec
Dat is vreemd, De wachtlus is 500mSec en niet 1500mSec en doet me denken dat de ingesteld snelheid van je processor niet de werkelijke snelheid is.

Voorbeeld, je vertelt de compiler dat het PIC op 8MHz loopt, maar het PIC loopt in werkelijkheid op 4MHz, dan is 10mSec wachttijd dus geen 10mSec maar 20mSec, 2x zo lang.

Dat zou ook verklaren waarom de PTT direct afvalt bij de latere versie's, want ook daar zou je dan veel trager moeten knipperen.

De default snelheid van de PIC12F683 is 4MHz , zorg dat mikroBasic ook op 4MHz staat. Daar zou ik dus eerst naar kijken.

Verder kan je in versie 1 de wachttijd veranderen door de regel: PTT_DELAY = 11 te veranderen, hoe lager PTT_DELAY, hoe korter er gewacht wordt. Deze kan je verkleinen tot de PTT net niet mee knippert, maar aanblijft tijdens het knipperen.

In versie 4 moet trouwens PTT_DELAY altijd groter zijn dan PTT_RELEASE. Je zou bij versie 4 PTT_RELEASE in eerste instantie 250 kunnen maken. en dan de waarde van PTT_DELAY bepalen. Door deze zover te verkleinen dat de PTT net niet mee knippert. En dan daarna PTT_RELEASE een iets lager maken dan PTT_DELAY.

Gebruikersavatar
pa3vos
Berichten: 51
Lid geworden op: 24 dec 2008, 22:35
Roepletters: PA3VOS
Locatie: Lonneker

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#32 Bericht door pa3vos »

Ooooh Marcel,

Ik maak een cruciale fout!

PTT moet niet actief zijn bij knipperen, maar bij constant branden van de MUTE!

reden; Bij MUTE knipperen is de mic uitgeschakeld!
Zoals het nu is schakeld hij welliswaar, maar heb ik geen audio. Het feit dat ik in de veronderstelling was dat ik maar 2 LED's ter beschikking heb i.p.v. 3 heeft me op het verkeerde been gezet.

Ik dacht dus even slim te zijn door de regel "IF MUTE_LED=1 THEN" de waarde 1 in 0 te veranderen. Nou dat werkt dus niet!

Om meet duidelijkheid te geven hierbij nog even de juiste werking van de het geheel (HS=headset, BS=Basestation):

HS op BS? ==> MUTE kan niet geactiveerd worden. (CHARGE is actief)

HS uit BS? ==> CHARGE is inactief en MUTE kan niet geactiveerd worden zolang LINK LED uit is.

OP HS;
druk op LINK toets ==> LINK LED op BS brandt constant.
druk op MUTE toets ==> MUTE op BS knippert nu.
druk nog een keer op MUTE toets ==> MUTE op BS brandt nu constant en PTT op BS wordt actief.
Druk nogmaals op MUTE toets ==> PTT op BS wordt weer inactief.
nu zal iedere keer dat de MUTE toets gedrukt wordt de PTT togglen tussen 0 en 1.
MUTE op BS moet constant branden om mic audio te hebben.

Ik hoop dat dit wat meer duidelijk maakt.
Anders maak ik even een flowchart.

73s Fokko/ PA3VOS
Altiet an't knooi'n :wink:

-----
Berichten: 1027
Lid geworden op: 19 jul 2010, 14:43
Roepletters: XX0XX

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#33 Bericht door ----- »

Hoppakee, versie 5. ik hoop dat ze op het forum genoeg schijfruimte hebben om het allemaal op te slaan, het begint aardig uit de kluiten te wassen dit topic, we kunnen eventueel ook via mail verder gaan.

Klopte die MHz van de PIC ?

Op regel 34 staat DELAY_VALUE, deze moet je proberen te verkleinen tot het punt dat de PTT net niet klappert. Daarna kan je RELEASE_VALUE daar een stukje onder zetten.

Code: Selecteer alles

PROGRAM GN9120
' * VERSIE 5
' * Project name:
' GN9120
' 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 CHARGE_LED = GPIO.0
SYMBOL MUTE_LED = GPIO.1
SYMBOL LINK_LED = GPIO.2

SYMBOL PTT = GPIO.5

main:
' LED signal inverting or not
CONST aan = 0            '  0 voor inverting, 1 voor noninverting
CONST uit = 1            '  1 voor inverting, 0 voor noninverting

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=%00000111 ' 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 = 1
PTT_RELEASE = 0

Loop:
IF LINK_LED = aan THEN
   IF CHARGE_LED = uit THEN
      IF MUTE_LED = uit THEN
        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 = 1
END IF
END IF

DELAY_MS(10)

GOTO Loop

END.

Gebruikersavatar
pa3vos
Berichten: 51
Lid geworden op: 24 dec 2008, 22:35
Roepletters: PA3VOS
Locatie: Lonneker

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#34 Bericht door pa3vos »

Hoi Marcel,

Lijkt me inderdaad beter e.a. via de mail te doen. Als alles maar behoren werkt kunne we het resultaat wel weer op het forum zetten. Ik stuur je wel ff een berichtje via de email.
Laterrrr....

73's Fokko
Altiet an't knooi'n :wink:

Gebruikersavatar
pa3vos
Berichten: 51
Lid geworden op: 24 dec 2008, 22:35
Roepletters: PA3VOS
Locatie: Lonneker

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#35 Bericht door pa3vos »

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
Altiet an't knooi'n :wink:

-----
Berichten: 1027
Lid geworden op: 19 jul 2010, 14:43
Roepletters: XX0XX

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#36 Bericht door ----- »

Mooi dat het nu werkt..

Ik zou wel die RELEASE_VALUE nog van de 0 afhalen. Daar staat ie nu op om te testen,
Maak er desnoods 40 van ofzo. dat zal de PTT aanspreek tijd al aardig verkorten.

Kan nog wel even een poging doen uit te leggen wat DELAY_VALUE en RELEASE_VALUE doen

Als de set op Mute staat knippert de mute_led met een 1x per seconden. maw . 0.5sec aan 0.5 sec uit enz...
Wanneer Mute wordt uitgeschakeld knippert de mute_led niet meer maar brand continu.

Als de mute_led dus meer 0.5 sec niet uit is geweest staat Mute uit en moet PTT aan. Dat wordt gemeten met de timer DELAY_VALUE

Maar als de mute_led uit is gegaan (dus mute is actief) maar na minder dan 0.5 sec alweer aan gaat (te vroeg dus) dan ook is de Mute uitgeschakeld en kan de PTT aan. Dat is de RELEASE_VALUE

Gebruikersavatar
pa3vos
Berichten: 51
Lid geworden op: 24 dec 2008, 22:35
Roepletters: PA3VOS
Locatie: Lonneker

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#37 Bericht door pa3vos »

Hallo OM's,

Met dank aan Marcel, is het project zo goed als af.

nog even stoeien met de adviezen van Marcel, maar ik heb er vertrouwen in.

Hierbij nog even het schema van de PTT interface.

73's Fokko PA3VOS
QRV op PI2NON
Bijlagen
PTT Interface Jabra CS361N
PTT Interface Jabra CS361N
Altiet an't knooi'n :wink:

Gebruikersavatar
pa3vos
Berichten: 51
Lid geworden op: 24 dec 2008, 22:35
Roepletters: PA3VOS
Locatie: Lonneker

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#38 Bericht door pa3vos »

Hieronder nog even de foto's voor de aansluitingen van de LINK en de MUTE op het moederbord van de BS.

73's Fokko / PA3VOS
Bijlagen
LINK to 270R resistor
LINK to 270R resistor
MUTE LED to Optocoupler
MUTE LED to Optocoupler
Altiet an't knooi'n :wink:

Plaats reactie