论坛风格切换切换到宽版
  • 33174阅读
  • 170回复

16F88 MODEMLESS TNC制作图解 [复制链接]

上一主题 下一主题
离线BD6CR
发帖
5950
只看该作者 20楼 发表于: 2006-02-09
时间紧张,随便写几句:
beacon是信标功能,btext是信标内容
beacon every 数字
表示每几分钟发一次信标,0表示禁止发信标。

digi on后,会根据mycall和myalias来进行判断是否该转发,所以,将你的myalias设置为relay会比较好。

unproto是非常重要,是转发路径。

calibrate、温度和filter不用管他。

这个“tt”直接转发gps数据,所以只有uiview才能解。

'
bd6cr我现在正在试tnc,有些问题需要确认.
一是tnc的命令:
commands (with example):
beacon (beacon every n)- n=0 is off and 1<n<60 mins
(信标每隔多长时间发一次,最小1分钟? 我调试的时候是否必须1分钟的等待是最短时间,感觉漫长)
btext (btext bob)-100 chars max
(? 不懂)
calibrate (calibrate mode - testing only)
(? 也不懂)
digipeat (digi on/off)
(做tt用只要off就行了?)
disp - display all commands
echo (echo on/off)
filter (on/off)- filter uprintable terminal chars
(? )
gps (gps $gpgga/$gpgll/$gprmc)
(只能一种语句输出,不能两种以上?)
monitor (mon all/me/off)
(monitor 什么)
myalias (myalias relay)
(?没搞懂)
mycall (mycall wb8wga-2)
perm (perm)
(=save configration)
temperature (temp f/c)
(什么时候用温度)
trace (tr xmit/rcv) - for debugging only
(? ..)
txdelay (txdelay n 0<n<201 n sets delay flags
(这个参数好象比较关键)
upproto (unproto wb8wga-14 v wb8wga-1) - 3 digis max
(? ...)
以下是我现在的设置
cmd:
filter on
echo off
temperature f
txdelay 60
gps $gpgga
trace off
monitor me
digipeater off
beacon on every 1
unproto aprs-0 v relay-0 v wide-0 v wide-0
mycall ba4rs-0
myalias
btext
'
离线BA7NQ
发帖
10258
只看该作者 21楼 发表于: 2006-02-09
'
抱歉,这几天被公司的事情给缠上了,要到下周三才能稍稍解脱。目前我的问题是组装工作还需要继续努力,盒子也还不够多。我的盒子是市场上搜到的,我再为这个盒子设计的pcb。
7nq,你如果急要,我可发你两套半成品,要花点时间自己完成安装。
5hmc,我的盒子还不够,不过可先发给你片pcb装着玩玩,20元/片,我寄挂号给你可以吗?
7lm,盒子暂时不够,如果能找到足够的数量,我再回复你。
'

好的6cr,把半成品给我吧,我来装一下,减轻您的压力。

525000 广东省佛山市华远东路13号发展大厦12楼a2 峻天公司 梁铁威 13322840234

请把您的帐号告诉我,什么银行都可以。
离线BD5HMC
发帖
1102
只看该作者 22楼 发表于: 2006-02-09
'
抱歉,这几天被公司的事情给缠上了,要到下周三才能稍稍解脱。目前我的问题是组装工作还需要继续努力,盒子也还不够多。我的盒子是市场上搜到的,我再为这个盒子设计的pcb。
7nq,你如果急要,我可发你两套半成品,要花点时间自己完成安装。
5hmc,我的盒子还不够,不过可先发给你片pcb装着玩玩,20元/片,我寄挂号给你可以吗?
7lm,盒子暂时不够,如果能找到足够的数量,我再回复你。
'

谢谢6cr,给我个农行号码吧~~~我给您汇款,谢谢了~~地址见悄悄话~
离线BD6CR
发帖
5950
只看该作者 23楼 发表于: 2006-02-09
电路图
虽然pcb上都标清楚,但是还是得给大家电路图,如果100%看不清楚,有两个办法:
打印出来看
放大到200%
附件: modemlesstncschematic.doc (0 K) 下载次数:362
离线bd4rs
发帖
5111
只看该作者 24楼 发表于: 2006-02-09
bd6cr:以下是tnc的设置
filter on
echo off
temperature f
txdelay 60
gps $gprmc
trace off
monitor me
digipeater on
beacon on every 1
unproto aprs-0 v relay-0 v wide-0 v wide-0
mycall ba4rs-0
myalias relay-0
btext
现在用手碰j3的4:i,input黄灯就亮.当接收到aprs信号时黄灯亮度会变化,但红灯没有亮.不知什么原因.我现在还在找,将gps接上,jp close,红灯会亮.
离线BD6CR
发帖
5950
只看该作者 25楼 发表于: 2006-02-10
要看你的tt的路径设置,比如relay,wide,wide,里面必须要含relay或ba4rs-0,否则digi不会管。

另外,要仔细调节digi的输入音频幅度,以及tt输入对讲机的时候的音频幅度,保证信号失真小。
离线bd4rs
发帖
5111
只看该作者 26楼 发表于: 2006-02-10
'
要看你的tt的路径设置,比如relay,wide,wide,里面必须要含relay或ba4rs-0,否则digi不会管。
另外,要仔细调节digi的输入音频幅度,以及tt输入对讲机的时候的音频幅度,保证信号失真小。
'

可能是tt设置的问题.
tt发出来的信号是可以的,我还用计算机监视(所有的包都可以解调).
离线BD5HMC
发帖
1102
只看该作者 27楼 发表于: 2006-02-10
今天在杭州看到这个盒子了,不过只有一个样品,店主不卖!!不过他说可以定做,100起定,和这个一模一样的,是别人定做的光纤盒子,呵呵,如果能凑到数字的话我倒是很想定她10个8个的,以后diy点小东西这个盒子可是很有用的,不知道坛子里的朋友们有没有兴趣啦??
离线BD4VNF
发帖
1208
只看该作者 28楼 发表于: 2006-02-10
'
bd6cr我现在正在试tnc,有些问题需要确认.
一是tnc的命令:
commands (with example):
beacon (beacon every n)- n=0 is off and 1<n<60 mins
(信标每隔多长时间发一次,最小1分钟? 我调试的时候是否必须1分钟的等待是最短时间,感觉漫长)
btext (btext bob)-100 chars max
(? 不懂)
calibrate (calibrate mode - testing only)
(? 也不懂)
digipeat (digi on/off)
(做tt用只要off就行了?)
disp - display all commands
echo (echo on/off)
filter (on/off)- filter uprintable terminal chars
(? )
gps (gps $gpgga/$gpgll/$gprmc)
(只能一种语句输出,不能两种以上?)
monitor (mon all/me/off)
(monitor 什么)
myalias (myalias relay)
(?没搞懂)
mycall (mycall wb8wga-2)
perm (perm)
(=save configration)
temperature (temp f/c)
(什么时候用温度)
trace (tr xmit/rcv) - for debugging only
(? ..)
txdelay (txdelay n 0<n<201 n sets delay flags
(这个参数好象比较关键)
upproto (unproto wb8wga-14 v wb8wga-1) - 3 digis max
(? ...)
以下是我现在的设置
cmd:
filter on
echo off
temperature f
txdelay 60
gps $gpgga
trace off
monitor me
digipeater off
beacon on every 1
unproto aprs-0 v relay-0 v wide-0 v wide-0
mycall ba4rs-0
myalias
btext
'

btext是信标的文本内容
echo (echo on/off)是指对方发数据给你,你是否回应
filter是过滤什么没搞清楚
gps (gps $gpgga/$gpgll/$gprmc)
只能选择输出一个语句,不做任何加工.gga里面有卫星个数和日期,rmc里面有速度方向高度,都包含经纬度和时间,根据需要选择.
monitor (mon all/me/off)
串口监视radio接受到的包数据,all是全部数据,me仅输出发给自己的数据包
myalias (myalias relay)
是允许转发的呼号列表,不在列表中的数据包不会digi
temperature (temp f/c)
是采集温度的单位,最新硬件版本支持,6cr的硬件可能还不支持温度采集发送
txdelay (txdelay n 0<n<201 n sets delay flags
是指从busy状态变成发送状态的延时时间,单位毫秒.避免发送冲突的
其他的调试参数代码中看不到,可能是作者自己使用的
年前看的代码,印象中是这样,4rs您做个参考吧
离线BD6CR
发帖
5950
只看该作者 29楼 发表于: 2006-02-10
4vnf的说明大多数都是正确的,我根据文章和实验结果说一下:

echo是输入回显,是指你输入的内容是不是可以显示出来让你看到;
filter是将不可显示的字符过滤掉;
mon是监视,但是不是串口监视,而是处理程序是否监视,要作digi,mon必须是me或all,否则不行;
myalias是别名,除了你本身的名字外,你可能叫警察,路人问路的时候未必知道你的名字,但是只要知道你是警察,一样可以问路;
temp是温度读取,我的硬件没有支持,需要在3脚上接一个1-wire温度传感器;
txdelay是ptt按下后,等待多少时间发送实际内容,在发送前,也不是什么也不发,而是发送一些前导码或者是帧间标记之类的。

其它大家可以看资料,或者仔细尝试。

'
btext是信标的文本内容
echo (echo on/off)是指对方发数据给你,你是否回应
filter是过滤什么没搞清楚
gps (gps $gpgga/$gpgll/$gprmc)
只能选择输出一个语句,不做任何加工.gga里面有卫星个数和日期,rmc里面有速度方向高度,都包含经纬度和时间,根据需要选择.
monitor (mon all/me/off)
串口监视radio接受到的包数据,all是全部数据,me仅输出发给自己的数据包
myalias (myalias relay)
是允许转发的呼号列表,不在列表中的数据包不会digi
temperature (temp f/c)
是采集温度的单位,最新硬件版本支持,6cr的硬件可能还不支持温度采集发送
txdelay (txdelay n 0<n<201 n sets delay flags
是指从busy状态变成发送状态的延时时间,单位毫秒.避免发送冲突的
其他的调试参数代码中看不到,可能是作者自己使用的
年前看的代码,印象中是这样,4rs您做个参考吧
'
离线BD6CR
发帖
5950
只看该作者 30楼 发表于: 2006-02-10
上海可以零买到,老板是浙江的。明天我打算去一次电子市场,只不过很不容易,我得来回在路上花3个小时。

'
今天在杭州看到这个盒子了,不过只有一个样品,店主不卖!!不过他说可以定做,100起定,和这个一模一样的,是别人定做的光纤盒子,呵呵,如果能凑到数字的话我倒是很想定她10个8个的,以后diy点小东西这个盒子可是很有用的,不知道坛子里的朋友们有没有兴趣啦??
'
离线bd4rs
发帖
5111
只看该作者 31楼 发表于: 2006-02-10
'
btext是信标的文本内容
txdelay (txdelay n 0<n<201 n sets delay flags
是指从busy状态变成发送状态的延时时间,单位毫秒.避免发送冲突的
其他的调试参数代码中看不到,可能是作者自己使用的
年前看的代码,印象中是这样,4rs您做个参考吧
'

这个参考很好,对这些设置有了更进一步的认识。我现在转发还没成,看了后可能还是设置问题。我马上试一下。thanks!
离线bd4rs
发帖
5111
只看该作者 32楼 发表于: 2006-02-10
'
4vnf的说明大多数都是正确的,我根据文章和实验结果说一下:
echo是输入回显,是指你输入的内容是不是可以显示出来让你看到;
txdelay是ptt按下后,等待多少时间发送实际内容,在发送前,也不是什么也不发,而是发送一些前导码或者是帧间标记之类的。
其它大家可以看资料,或者仔细尝试。
'

现在是越看越明白了,试一试。tnx.
离线BD4VNF
发帖
1208
只看该作者 33楼 发表于: 2006-02-10
我记错了不少东西.一年前的印象了.下面是信标发送的详细过程,供大家参考
;send out a beacon. if gps unit connected do some checking and then let nmea do it.
beacon                                   //信标发送
           btfsc      beacon_enable             //是否允许发送?
           goto      check_addresses                              
           goto      beacon_return             //不允许,退出
           ; mycall, btext, and unproto should be valid before sending
           ;a beacon. via will be used if it is valid 我的呼号\文本和unproto是可用.如故via设置了,也要被用到
check_addresses
           btfss      valid_mycall             //没设置呼号,退出
           goto      beacon_return
           btfss      valid_unproto             //没设置unproto,退出
           goto      beacon_return
           ;is there a gps unit connected? if so, gather the input and process

           btfss      gps_connected             //gps连接?
           goto      no_gps                 //不处理gps数据
           
           ;is a gps so go ahead and process nmea
           ;turn the uart receive back on
           bsf            rcsta,cren         //打开串口,接收gps数据

           ;should be a stream of chars coming in
nmea_start_again                           //等待gps数据
           call      getc_sleep
           btfsc      char_timeout                  ;规定时间内没有gps数据进入,退出
           goto      beacon_return                  ;we timed out, just get out
is_it_start?
           ;sit here waiting around until you get a valid start of a nmea sentence      
           movfw      rcd_char
           xorlw      '$'            ;start of sentence?       //寻找字符'$',作为gps开始数据
           skpnz
           goto      buffer_nmea                        ;saw the $, start buffering                  
           goto      nmea_start_again            ;look again,no $
buffer_nmea                                   //发现gps开始字符
           call      load_tty_buffer            ;load the buffer   //读入缓冲区数据
           ;check timeout again
           btfsc      char_timeout                     //检查是否超时
           goto      beacon_return            ;timed out with partial sentence   //超时退出
           call      nmea_sum                  ;is it the right nmea sentence?   //类加校验和
           movwf      temp                        ;could be either gprmc or gpgll
           btfss      gprmc                 // 判断gps数据类型是否rmc
           goto      try_gpgll
           movlw      'g'+'p'+'r'+'m'+'c'         //处理rmc数据
           goto      do_nema_test            
try_gpgll
           btfss      gpgll
           goto      try_gpgga
           movlw      'g'+'p'+'g'+'l'+'l'         //处理gll数据
           goto      do_nema_test
try_gpgga
           btfss      gpgga
           goto      beacon_return            //不是指定3种类型,退出      ;a sentence type is not set, get out
           movlw      'g'+'p'+'g'+'g'+'a'         //处理gga数据
do_nema_test
           xorwf      temp,w           //根据校验和判断gps数据接受结束?
           skpz
           goto      nmea_start_again

           ;nmea complete input, sent it
add_btext
           ;but first, turn the uart receive back off
           bcf            rcsta,cren         //关闭串口
           call      send_a_header             //首先发送一个包含呼号和unproto的包头

           movlw      '$'                                    ;put out the $
    call   reg_packet_out                  ;send it

           ;now do the body. don't want to map these to upper case
           bcf            to_upper
           clrf      offset            ;now point back to start of text

send_data_loop                 //发送gps数据
    call      unload_tty_buffer
                 
           movfw      rcd_char
    call   reg_packet_out                  ;send it

           movlw      cr
           xorwf      rcd_char,w
           skpz
    goto   send_data_loop
           goto      end_of_beacon                  ;done, finish up //发完了

no_gps            //无gps连接,为普通信标            ;no gps found, do as normal beacon
           btfss      valid_btext         //信标文本设置?
           goto      beacon_return         //没有设置退出
           call      send_a_header             //首先发送包含呼号和unproto的包头
           ;do the beacon text
           movlw      beacon_ee_start       //从eerom中读取信标文本
           movwf      var_1
beacon_loop
           movfw      var_1
           bank2
           movwf      eeadr
           bank3
           bsf            eecon1,rd            ;pull the data from the ee ram
           bank2
           movf      eedata,w
           bank0
           ;w now has the character, there is a null at the end
           skpnz
           goto      end_of_beacon
           call      reg_packet_out             //发送信标文本
           incf      var_1,f
           goto      beacon_loop

end_of_beacon
          call   finish_up               //添加ax.25校验码
           call      key_up                 //关闭发送,停止t0中断
beacon_return
           bcf      run_beacon            ;deschedule   //停止信标发送      
           return
离线BD4VNF
发帖
1208
只看该作者 34楼 发表于: 2006-02-10
这个是包接收处理过程:
;------------------------------------------------------------
;process for receiving packets                 //数据包接收子程序
packet_receive
          //清除发送标志
           bcf      xmitting            ;reset flag to allow interrupt to do freq counting on receive
           //禁止t0发送中断
          bcf      intcon,t0ie            ;turn interrupt off for timer 0, we will poll the timer in receive
           ; have to change the rate on timer 0 since will be using it to measure the time
           ;between zero crossings
           ;so, get timer 0 running at correct prescale
           //改变t0设置,用于测量接受音调频率
          bank1
           movlw      b�'                        
    movwf   option_reg         ;and set it tmr0/16
           bank0
           //允许外部中断
          bcf      intcon,rbif            ;make sure flag cleared
           bsf      intcon,rbie            ; start up the interrupt for the zero crossing detector
                                         ;gie should already be enabled

;start of basic receive loop, stay in it until have to do any xmitting (beacon, digipeat,
;text in, etc            
          //开始接收循环,在必须发送之前一直循环      
house_clean                   ;new packet

           movlw      rx_tx_start
           movwf      fsr
           //清除scratch数据
           call      clean_up                        ;clean up all scratch memory
           ;clear the data flag
          //清除数据标志
           bcf            data_flag
           
           //复位crc校验计算
    movlw   0xff
    movwf   ax25_crc_hi         ;reset crc calc
    movwf   ax25_crc_lo
           ;set up link bit timer2 to one bit time to try to get synced up
           //设置连接bit,试图同步
          clrf            tmr2
           movlw      one_5_bit
           movwf      tmr2
           复位t2中断标志                        
           bcf      pir1,tmr2if            ;reset tmr2 flag

           ;all set up to start receiving, just sit here looking
          //完成接受开始设置,寻找包开始标志
find_start_flag                        ;look for 7e b�'
     
           ;got a little time here while waiting for a valid flag
           ;so, check to see if anyone else needs some cpu cycles
           ;will do a switch if a character has arrived or timer has expired
           call      switch?   //判断是否有其他任务满足开始条件
           skpnc
           //放弃接收,处理其他任务
          goto      give_it_up                                    ;give up control if someone else needs it
     
           ;nothing found keep looking for a flag
          //无其他任务,继续寻找开始标志
    call   recv_one_bit         ;check for toggle       //
          //滚动接收一个bit数据
    rrf   byte_in,f           ;roll carry in (0 or 1)
          //寸入寄存器
    movfw   byte_in           ;byte_in to w
          判断是否为开始字符
    xorlw   packet_flag         ;is it a flag ?
    skpz
          //不是进入寻找循环
    goto   find_start_flag       ;no
离线BD4VNF
发帖
1208
只看该作者 35楼 发表于: 2006-02-10
6cr:从程序上看,moni的数据是从串口输出的,用超级终端能看到.我想你打开moni的时候就不能把他当做tnc用了,所以4rs设置了monitor me就不能有tnc的功能了.应该设成off.当digi用的时候才打开moni
离线bd4rs
发帖
5111
只看该作者 36楼 发表于: 2006-02-10
这是我现在tnc的设置。
---------------------------------
wb8wga modemless tnc v 2.00
type help for info

cmd: disp

filter on
echo on
temperature f
txdelay 1
gps $gpgga
trace off
monitor off
digipeater on
beacon off
unproto aprs-0 v relay-0 v wide-0 v wide-0
mycall ba4rs-1
myalias relay-0
btext
-----------------------------------------------
这是我现在用tt3发射后,计算机agwpe+agwtracker解调的信息
3:fm ba4rs-1 to apt311 via relay,wide,wide <ui pid=f0 len=36 >[2106]
!3202.64n/11843.45e>168/000/a=000052
-------------------------------------------------
现在黄灯的状态非常好,只在有信号来的时候才亮,但红灯依然没亮过。感觉只差一步之遥,再帮助会诊一下。
离线BD4VNF
发帖
1208
只看该作者 37楼 发表于: 2006-02-10
发射延时有点短,弄成50试试
3202.64n/11843.45e>168/000/a=000052这个数据正确,是经纬度小车方位速度高度
离线BD7LM
发帖
1367
只看该作者 38楼 发表于: 2006-02-10
'
今天在杭州看到这个盒子了,不过只有一个样品,店主不卖!!不过他说可以定做,100起定,和这个一模一样的,是别人定做的光纤盒子,呵呵,如果能凑到数字的话我倒是很想定她10个8个的,以后diy点小东西这个盒子可是很有用的,不知道坛子里的朋友们有没有兴趣啦??
'
多少钱一个?我想买几个回来,广州竟然找不到的.
离线BD4VNF
发帖
1208
只看该作者 39楼 发表于: 2006-02-10
晚上大概看了一遍程序,是这样理解的:
加电开机后首先进入设置状态,当用ctrl-c结束设置后,就不再运行设置程序,串口转为监视数据包的作用.
当一个包数据接受正确了后,会先调用moni程序,如果没有关闭moni,就将解调出的数据从串口发到pc,由INTERNET转发.然后调用digi程序,如果没有关闭digi,就根据规则从radio转发接受的包.这是一种用法,主要是tnc和idgi功能.这种用法时,跳线是断开的.beacon off.
moni和digi选项互相独立设置,可开可闭.DIGI转发的条件是收到的包中中继列表里包含我的呼号或则别名.4RS的包已经接受正确了,所以能正确显示出来,不能转发的原因可能是中继列表relay,wide,wide 中不包含ba4rs-1和relay-0引起的

还有一种用法是串口上接gps,定时将gps定位数据自动从radio发出.起到个aprs的功能.这时跳线连接.moni和digi都设置成off.beacon一定要打开.只发不收.