Coder Social home page Coder Social logo

pic_5r8g's Introduction

Name

PIC_5R8G (5.8GHz communication board)

Overview

5.8GHz communication PIC

Description

OrigamiSat1 is first nano satellite of ORIGAMI PROJECT this repository is for manage source code of PIC on 5R8G board. 5R8G controlled by OBC using UART prptocol. Mission of this is

  • Downlink Picture of Membrane
  • Downlink Movie of Membrane deploying

Contribution

  1. Require privileges for owner or admin.
  2. Clone it ( https://github.com/OrigamiSat1Project/PIC_5R8G.git )
  3. Create your feature branch (git checkout -b )
  4. Commit your changes (git commit -am 'Add some feature')
  5. Push to the branch (git push origin )
  6. Create new Pull Request

Author

reokashiyama ryogaide

Hardware

PIC16F886 (Microchip)

Datasheet

PIC16F882/883/884/886/887 Data Sheet

Language

C

Compiler

XC8

Debuger

MPLAB X IDE

Encoding

Shift-JIS

FM module coding

comit : [51237d7] 51237d7e783d32032fe3db0332d3c69a6ab9e13e Add function ECC receive mode without CAM1 IDE : MPLABX IDE ver4.15 compiler : XC8 ver1.45

pic_5r8g's People

Contributors

reokashiyama avatar ryogaide avatar

Watchers

 avatar

pic_5r8g's Issues

OBCからのコマンド受信エラーの処理について

OBCからのコマンド8byteで受信エラーが起きた場合(bit反転など),5R8Gでそのエラーコマンドを弾くことはできているが,OBCはそのコマンドを送ったつもりになっている.

  • BUSYなどのOUTPUT
  • 同じコマンドを複数回送信
    などの対処方法でコマンド受信エラーが起きた場合でも継続的にOBC-5R8G間でこちらが意図するような動作をできるようにしなければならない

柏山的にはコマンドが通ったら5R8GがBUSYを3秒間Highにして,それをOBCが検知できたらコマンドを通ったものとOBCが解釈する,でよいと思っている.
(つまり5R8Gはコマンド通ったらBUSYを3秒間Highにするだけ)
OBC側はコマンドを送ったのにBUSYがHighになっていなかったら,コマンドを再送.それを複数回繰り返す.繰り返す回数も地上局から設定できるようにする.

Write Test code

ソフトウェア上で試すものをCとかで作れたら...

Erase Sector関数内でエラーが起きがち

・関数内でタイマをOFFにして、セクター消去後に再びONにする必要がある。
この処理をしないと画像転送のwhile文が抜けられない。Flagを見ると既に抜ける条件は満たしているはず。

・セクター消去後にCREN = Highにしないと画像転送が出来ない。

この2つの問題は画像転送モード内では対応したが、'E' Erase sector モード後の挙動は未検証
検証の必要あり

ECCの長さ依存の画像転送におけるOBC側のUART送信処理

現在、OBCがBUSY信号を読みに行くのは
① 40byte送った後
② EOF (0xff, 0x1eや0x00, 0x00, 0x01, 0x1e) をOBC側で検知した後

ECCの長さが一定ではないため、1/8分割の際にBUSYを無視して送信することになり、エラーが起こる

FROMセクタの都合

セクタ終了の40byte以内で,1/8分割画像が終了するとバグが発生
RPi撮像画像サイズによって分割数を地上局で決めるが,その際に5R8G上のFROMセクタの都合も考えて決めてもらう

Stack overflow with Timer

タイマー処理でコンパイルは通るのに stack overflow がwarning で表示される。以下メッセージ
source/5R8G_TEST.c:36: warning: (1393) possible hardware stack overflow detected; estimated stack depth: 9

要注意 コンパイルが通ったとしても、エラーが起こる

不明点:CommandのTimerを利用したbreak処理やDownlinkのTimerを利用したレスト処理ではwarningは出たが、実際のエラーな起こらず。
Receive関数ではwariningに加えエラーが起きた。Receive関数内では割り込み処理は一切行っていない。
エラー内容:receiveEndJpegFlagが溜まってwhile処理を抜け出した後(抜け出したことはsendCharで確認済み)なぜかwhile文の前に戻る(Eraseの前ではない。これもsendCharで確認済み)
タイマーに関する処理を削ったところ、Receive関数が正常に動いた。
CommandとDownlinkは正常に動いた事から、stackに問題があるのか、TimerとReceiveJpegの相性が悪いだけなのかはわからず。

一度に40byte以上送ると、どこかのループに入ってしまうバグ

模擬サムネイル転送時、40byte以下のバイナリはFROMに格納できたが、それを超えるとどこかのループに入り、EOFを1つずつ何個送っても、Bufferに入っていなかった。(Bufferに入れた直後にSendCharで返って来なかったため)
この原因をPC-Uart通信で探す必要がある

Erase Sectorの例外処理

候補
①何もしない
②全部のセクターを消す (Bulk Erase)
③Roop_adrとJump_adrの組み合わせで書き込む前に消す予定の部分だけ消す

ダウンリンク時の受信機の周波数の設定

14400bps : 440MHz (画像復元済み)
57600bps : 439.9MHz (ダミーデータのみ)
115200bps : 439.96MHz (ダミーデータのみ)

・14400bpsを439.96MHzで受信した場合
 ダミーデータは問題ない。JPEGは大雑把な見積もりで6,7割程度の合致率。

FROM故障時のダウンリンクモードを作ったほうが良いのか?

現状はOBCからUART貰った画像binaryデータを逐一FROMに保存して画像保存を行っている。
その後OBCからダウンリンク指令を受けてFROMに保存されている画像をダウンリンクする仕様。
しかし、宇宙空間上でFROMが故障した場合の冗長システムが組めていない。
FROMが故障した場合PIC内のバッファで対応せざるを得ないが、その動作モードを作る必要があるのか?
その場合PIC内のバッファがフルになるたびにアンプの電源ON・OFFを繰り返し、動作モードとしてはかなりロスが多くなりそう。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.