Hulp gevraagd bij aanpassing programmaatje voor PIC 12F683

Alles over zelfbouwprojecten.
Bericht
Auteur
Gebruikersavatar
pa3vos
Berichten: 51
Lid geworden op: 24 dec 2008, 22:35
Roepletters: PA3VOS
Locatie: Lonneker

Hulp gevraagd bij aanpassing programmaatje voor PIC 12F683

#1 Bericht door pa3vos »

Hallo OM's,

voor mijn DECT headset project met de CS361N moet ik om de PTT functie te kunnen verwezenlijken iets in software voor de PI wijzigen. Helaas heb ik geen idee met welk commando en format ik dan moet realiseren. Hieronder het programma met in de kleur rood op regel 55 van het programma.
Kun je hiermee helpen of weet je iemand die dan kan of wil? Als tegenprestatie ontvang je van van mij 2 stuks Arduino Nano 3.0

1: program GN9120
2:
3: ' *
4: ' * Project name:
5: ' GN9120
6: ' MCU: PIC12F683
7:
8: ' Note that I'm using optocouplers to detect my status LED's so the outputs of the opto's
9: ' are inverted. A lit LED is a logic zero output. If you have transistor buffers that
10: ' don't invert logic, then change all of the test statements the the opposite of what they currently are.
11: ' For example: current code = "if CHARGE_LED=0" would be changed to "if CHARGE_LED=1"
12: ' Also change initialisation commands.
13:
14: SYMBOL CHARGE_LED = GPIO.0
15: SYMBOL MUTE_LED = GPIO.1
16: SYMBOL LINK_LED = GPIO.2
17:
18: SYMBOL PTT = GPIO.5
19:
20:
21: main:
22:
23: CMCON0 = 7 ' turn off comparator
24: ANSEL = 0 ' analog off
25: TRISIO=%00011111 ' Port GPIO.0,1,2,3,4 all INPUTS, 5 is OUTPUT
26:
27:
28: ' Initialise all variables
29:
30:
31:
32: CHARGE_LED = 1 ' Charge LED Off (active low)
33: LINK_LED = 1 ' Link LED Off (active low)
34: MUTE_LED = 1 ' Mute LED Off (active low)
35:
36:
37: STANDBY:
38:
39: PTT = 0 ' Ensure that PTT is OFF
40:
41: if LINK_LED = 1 THEN GOTO STANDBY END IF ' headset is off or out of range
42:
43: IF CHARGE_LED = 0 THEN GOTO STANDBY END IF ' headset is in cradle
44: ' headset is off hook here
45:
46:
47: if MUTE_LED = 0 then goto RECEIVE ' headset has been 'armed'
48: else goto STANDBY
49: end if
50:
51:
52: RECEIVE: ' headset is now ready and in mute (no ptt) link = 1 and mute = 1
53: delay_ms(200)
54:
55: if MUTE_LED = (Flashes with a duty cycle of 500msec) then goto TRANSMIT end if ' Switch to TRANSMIT
56:
57: if LINK_LED = 1 THEN GOTO STANDBY END IF ' Lost signal or closed link
58:
59: IF CHARGE_LED = 0 THEN GOTO STANDBY END IF ' headset is in cradle
60:
61: GOTO RECEIVE
62:
63: TRANSMIT:
64:
65: PTT = 1 ' Activate PTT Line and PTT Blue LED (LINK=1, PTT=1)
66:
67: IF MUTE_LED = 0 THEN PTT = 0 ' Switch to RECEIVE
68:
69: GOTO RECEIVE
70:
71: END IF
72:
73: IF LINK_LED = 1 THEN GOTO STANDBY END IF ' If link is lost then go to STANDBY Mode
74:
75: IF CHARGE_LED = 0 THEN GOTO STANDBY END IF ' headset is in cradle
76:
77: GOTO TRANSMIT ' Continue in TX mode and run checks again.
78:
79:
80: end.


73's Fokko /PA3VOS, Enschede
QRV op PI2NON
Altiet an't knooi'n :wink:

PE5PVB
Berichten: 814
Lid geworden op: 10 apr 2006, 16:03
Roepletters: PE5PVB
Locatie: Oisterwijk
Contacteer:

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#2 Bericht door PE5PVB »

Wil je de charge LED 2x laten knipperen?

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

#3 Bericht door pa3vos »

Nee hoor...
Dit programmaatje werkt al en zit in een PIC 12F683 die als PTT-interface gebruikt wordt in mijn Jabra DECT GN9120 gebruikt wordt.
Ik een nu bezig om een Jabra CS361N om te bouwen en wil eveneens de PTT optie gebruiken.

Echter bij de CS361N brandt, bij het drukken op de MUTE functie de MUTE-LED, niet constant. Maar knippert deze in een ritme van 500msec. AAN-UIT. dat zou tot gevolg hebben dat de PTT ook constant TX-RX schakelt in het ritme van de MUTE-LED. En dat moet niet :) ..

in mijn oorspronkelijke bericht heb ik een stukje in de rode tekst vergeten.

dit moet zijn een duty cycle van 50% en een pulsbreedte van 500msec.
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

#4 Bericht door ----- »

Ik snap hiet niks van.

Als MUTE-LED = 1 (regel 55, jammer dat je niet de originele code heb laten staan, dat stond er namelijk denk ik) Dan spring naar: regel 63 TRANSMIT

Oke dat is duidelijk, maar hoe wordt de PTT nu ooit weer 0 ??????

Want de PTT wordt ook op 0 gezet in de TRANSMIT routine. Als maar de transmit routine niet meer wordt aangeroepen omdat MUTE-LED op 0 is gegaan, gaat de PTT nooit meer uit.

Heb je zelf al meer dingen in de code veranderd ?

Ik kan dit basic dialect niet maar ik doe een poging,

1: program GN9120
2:
3: ' *
4: ' * Project name:
5: ' GN9120
6: ' MCU: PIC12F683
7:
8: ' Note that I'm using optocouplers to detect my status LED's so the outputs of the opto's
9: ' are inverted. A lit LED is a logic zero output. If you have transistor buffers that
10: ' don't invert logic, then change all of the test statements the the opposite of what they currently are.
11: ' For example: current code = "if CHARGE_LED=0" would be changed to "if CHARGE_LED=1"
12: ' Also change initialisation commands.
13:
14: SYMBOL CHARGE_LED = GPIO.0
15: SYMBOL MUTE_LED = GPIO.1
16: SYMBOL LINK_LED = GPIO.2
17:
18: SYMBOL PTT = GPIO.5
19:
20:
21: main:
22:
23: CMCON0 = 7 ' turn off comparator
24: ANSEL = 0 ' analog off
25: TRISIO=%00011111 ' Port GPIO.0,1,2,3,4 all INPUTS, 5 is OUTPUT
26:
27:
28: ' Initialise all variables
29:
30:
31:
35:
36:
37: STANDBY:
38:
39: PTT = 0 ' Ensure that PTT is OFF
40: PTT-DELAY = 0
41: if LINK_LED = 1 THEN GOTO STANDBY END IF ' headset is off or out of range
42:
43: IF CHARGE_LED = 0 THEN GOTO STANDBY END IF ' headset is in cradle
44: ' headset is off hook here
45:
46:
47: if MUTE_LED = 0 then goto RECEIVE ' headset has been 'armed'
48: else goto STANDBY
49: end if
50:
51:
52: RECEIVE: ' headset is now ready and in mute (no ptt) link = 1 and mute = 1
53: delay_ms(50)' de delay een stuk korter gezet zodat er vaker gecheckt wordt
54: if MUTE_LED = 1 then PTT-DELAY = 11 end if 'stel de afteller in
55: if MUTE_LED = 1 then PTT = 1 ' Switch to TRANSMIT
56: IF PTT-DELAY > 0 then PTT-DELAY = PTT-DELAY - 1 END IF ' het delay aftellen,
57: IF PTT-DELAY = 0 THEN PTT = 0 ' Switch to RECEIVE als MUTE_LED langer dan 550mSec uit is
58: if LINK_LED = 1 THEN GOTO STANDBY END IF ' Lost signal or closed link
59:
60: IF CHARGE_LED = 0 THEN GOTO STANDBY END IF ' headset is in cradle
61:
62: GOTO RECEIVE
63:
80: end.


De TRANSMIT sub weggehaald, daar gebeurd maar 1 ding (PTT aan) dat kan ook wel gewoon inline

Regels 71 t/m 77 zijn onbereikbaar en zullen nooit uitgevoerd worden, derhalve geschrapt.

Verder een paar tips, schakel poorten die je niet gebruikt als output en niet als input zodat ze niet kunnen gaan staan klapperen
25: TRISIO=%00000111 ' Port GPIO.0,1,2 is INPUTS, 3,4,5 is OUTPUT


Aangezien dit input poorten zijn heeft het geen zin deze in software hoog of laag te maken. dat kan je weglaten
32: CHARGE_LED = 1 ' Charge LED Off (active low)
33: LINK_LED = 1 ' Link LED Off (active low)
34: MUTE_LED = 1 ' Mute LED Off (active low)

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

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#5 Bericht door ----- »

PG8M schreef: Regels 71 t/m 77 zijn onbereikbaar en zullen nooit uitgevoerd worden, derhalve geschrapt.
Het gebeurt toch iets anders, regels zijn wel bereikbaar, de END IF staat hier in tegenstelling tot overal anders een paar regels lager. Nogmaals ik kan dit dialect niet Maar goed, mijn nieuwe voorbeeld werktdenk ik ook , en als ik nog even moeite doe kan het nog een flink stuk korter.

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

Re: Hulp gevraagd bij aanpassing programmaatje voor PIC 12F6

#6 Bericht door ----- »

Zo dan, doet precies t zelfde als jou code, maar met de PTT uitschakel vertraging van 500mSec ivm het knipperen van de LED

Code: Selecteer alles

PROGRAM GN9120

' *
' * 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.

DIM PTT_DELAY AS BYTE         ' Weet niet of dat nodig is, nogmaals ik weet niet welke basic je gebruikt

SYMBOL CHARGE_LED = GPIO.0
SYMBOL MUTE_LED = GPIO.1
SYMBOL LINK_LED = GPIO.2

SYMBOL PTT = GPIO.5

CMCON0 = 7 ' turn off comparator
ANSEL = 0 ' analog off
TRISIO=%00000111 ' Port GPIO.0,1,2 INPUTS, 3,4,5 is OUTPUT

' Initialise all variables
PTT = 0
PTT_DELAY = 0

MAIN:
IF LINK_LED = 0 AND CHARGE_LED = 1 THEN
	IF MUTE_LED = 1 THEN
		PTT = 1
		PTT_DELAY = 11
	ELSE
		IF PTT_DELAY > 0 THEN PTT_DELAY = PTT_DELAY - 1
		IF PTT_DELAY = 0 THEN PTT = 0
	END IF
ELSE
	PTT = 0
END IF		

DELAYMS(50)

GOTO MAIN

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

#7 Bericht door pa3vos »

Ok Marcel,

Maar zo te zien wordt er dan niet meer geacteerd op de status van de Link led of de charge led?
Of zie ik dat verkeerd?
De PTT moet wel weer 0 worden indien de status van de link led verandert (door bijv. Als je met de headset buiten bereik van het basisstation loopt), of als je de headset in het basisstation hangt om te laden.

Fokko
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

#8 Bericht door ----- »

De mainloop begint met :
IF LINK_LED = 0 AND CHARGE_LED = 1 THEN

Daar wordt dus gecontroleerd of de set binnen bereik is en de charge led uit is

Is een van de 2 waarde niet juist dan springt de code naar de onderste ELSE

Daar staat dan PTT = 0 dus PTT wordt uitgeschakeld

Dat gebeurd elke 50 msec

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

#9 Bericht door pa3vos »

Super bedankt Marcel!

Ja ik snap hem. Dus ik heb alleen dat stukje nodig wat jij hebt geschreven? Dan ga ik er mee aan de slag.
Ik gebruik overigens microBasic. Hiermee heeft VK3KBC het programmaatje geschreven. Ik heb daar nog weinig ervaring mee. Heb met microbrn (K150 programmer) de PIC geprogrammeerd.
Ik moet eerst even een nieuw interface-je maken maar dat gaat vrij snel.
En een paar PIC-jes heb ik ook nog wel dus, moet lukken. Ik laat je even weten als het gelukt is en dan heb jij 2 Arduino's Nano 3.0 verdient. 8)

Eerst maar ff wat prutsen.

Ik ben overigens vaak QRV op PI2NON....
(Ook met mijn DECT headset de GN9120 te horen :) )

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

#10 Bericht door pa3vos »

Hi Marcel,

indien ik op "build" klik krijg ik de volgende error melding op regel 15
Bijlagen
Error message
Error message
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

#11 Bericht door ----- »

Dat komt denk ik door regel 13, dat heb ik er ook bij gezet dat ik niet weet of en hoe je variabele declareerd. De compiler verwacht end, maar stuit bij regel 15 op SYMBOL zegt ie. Dus de fout zit eerder

Haal regel 13 weg, of zoek in de handleiding hoe je een variabele declareerd.

Ik ben nu weg dus kan vanmiddag niet meer helpen.

Je heb inderdaad alleen het onderste stukje code nodig,

Dat ik de 2 stuks Arduino Nano 3.0 verdiend heb is al genoeg erkenning, ik hoef ze niet ook daadwerkelijk fysiek te hebben :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

#12 Bericht door pa3vos »

Ok, ja ik weet het ook ff niet. Maar ik ga wat proberen. je hoort het wel s 8).

En belofte maakt schuld... dus al het werkt gaan er twee Arduino's die kant op.

later...

73's
PA3VOS
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

#13 Bericht door pa3vos »

Hoi Marcel,

Als ik regel 13 verwijder en opnieuw compileer dan krijg ik een heleboel errors. Dus blijkbaar zat je wel in de goede richting gezien de format.

Om je vraag te beantwoorden....dit heb ik gekopieerd uit de help-file:

Variables
Variable is an object whose value can be changed during the runtime. Every variable is declared under unique name which must be a valid identifier. This name is used for accessing the memory location occupied by a variable.

Variables are declared in the declaration part of the file or routine — each variable needs to be declared before being used. Global variables (those that do not belong to any enclosing block) are declared below the include statements, above the label main.

Specifying a data type for each variable is mandatory. Syntax for variable declaration is:

dim identifier_list as type
Here, identifier_list is a comma-delimited list of valid identifiers and type can be any data type.

For more details refer to Types and Types Conversions. For more information on variables’ scope refer to the chapter Scope and Visibility.

Here are a few examples:

dim i, j, k as byte
dim counter, temp as word
dim samples as longint[100]


kun je hier wat mee?

Fokko
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

#14 Bericht door ----- »

In syntax zaten meerdere fouten, maar zo zou het denk ik moeten werken. Zoals gezegd je moet even het juiste dialect spreken.

Code: Selecteer alles

PROGRAM GN9120
' *
' * 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:
DIM PTT_DELAY 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 all variables
PTT = 0

Loop:
IF LINK_LED = 0 THEN
   IF CHARGE_LED = 1 THEN
      IF MUTE_LED = 1 THEN
        PTT = 1
        PTT_DELAY = 11
      ELSE
        IF PTT_DELAY > 0 THEN PTT_DELAY = PTT_DELAY - 1 END IF
        IF PTT_DELAY = 0 THEN PTT = 0 END IF
      END IF
ELSE
    PTT = 0
END IF
END IF

DELAY_MS(50)

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

#15 Bericht door pa3vos »

Het enig dialect dat ik goed spreek is Twents :lol:

Ik ga het ff proberen...

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

Plaats reactie