1

(2 replies, posted in CTCSS Generator)

Update zu diesem Thema

Diesen CTCSS Generator habe ich auch in meinem Yeasu FT-767GX mit 70cm Modul verbaut. Das original CTCSS Modul des FT-767 ist ja kaum noch aufzutreiben. Die FW wurde leicht modifiziert, damit kann man die gewünschte CTCSS Frequenz direkt am FT-767 (via Menü) einstellen.


Auch mein allererstes 70cm Funkgerät, das  FT-790, habe ich damit ausgestattet und kann nun wieder für den Betrieb über Relais verwendet werden.

https://www.dropbox.com/s/ovzdunyrmdefsnx/ctcss_ft-790_s.JPG?dl=1

2

(2 replies, posted in CTCSS Generator)

Hier der zugehörige Code für den ATMEL Attiny44

/*

    CTCSS ... sub audio tone generator (replacement for Yaesu FTS-7)
    Target µC: ATtiny44

    Auf der IARU Konferenz in Südafrika wurde beschlossen alle FM Umsetzter bis Ende 2014 mit CTCSS Tönen
    auszustatten. Nach Möglichkeit sind die unten angeführten Töne zu verwenden:

    OE1    EIA 01    67,0 Hz
    OE2    EIA 08    88,5 Hz
    OE3    EIA 26    162,2 Hz
    OE4    EIA 11    84,8 Hz
    OE5    EIA 12    100,0 Hz
    OE6    EIA 13    103,5 Hz
    OE7    EIA 04    77,0 Hz
    OE8    EIA 08    88,5 Hz
    OE9    EIA 07    85,4 Hz
    
    Ausnahme: OE1XUU EIA26 162.2Hz

    Die CTCSS Frequenz kann über PA2..PA0 gewählt werden

        2012/10/07 OE1GCA, initial version
    2013/02/23 OE1GCA, changes for ATtiny44
    2013/05/09 OE1GCA, corrected fuse bits
    
        avr-gcc -mmcu=attiny44 ctcss_t44.c -o ctcss_t44
        avr-objcopy -O ihex ctcss_t44 ctcss_t44.hex
        avrdude -c stk500v2 -pt44 -P/dev/ttyUSB0 -U lfuse:w:0x7f:m -U hfuse:w:0xdc:m
        avrdude -c stk500v2 -pt44 -P/dev/ttyUSB0 -U flash:w:ctcss_t44.hex


    (c) 2012,2013 by OE1GCA
*/


#include <avr/io.h>
#include <stdio.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>


#define F_CPU 12000000UL      // 12 MHz
// fpwm = fclk / N*(1+TOP), where N is the prescaler (1, 8, 64, 256 or 1024)
// prescaler: 8


/* pwm sinus lookup table */
const uint16_t  SLUT_32[8][32] PROGMEM = {
/* 162.2 Hz */ {
145,173,200,225,247,265,278,286,289,286,278,265,247,225,200,173,145,116,89,64,42,24,11,3,0,3,11,24,42,64,89,116},
/* 67 Hz */ {
350,418,483,544,597,640,672,692,699,692,672,640,597,544,483,418,350,281,216,155,102,59,27,7,0,7,27,59,102,155,216,281},
/* 88.5 Hz */ {
265,316,366,411,452,484,509,524,529,524,509,484,452,411,366,316,265,213,163,118,77,45,20,5,0,5,20,45,77,118,163,213},
/* 84.8 Hz */ {
276,330,382,429,471,505,531,547,552,547,531,505,471,429,382,330,276,222,170,123,81,47,21,5,0,5,21,47,81,123,170,222},
/* 100 Hz */ {
234,280,324,364,399,429,450,464,468,464,450,429,399,364,324,280,234,188,144,104,69,39,18,4,0,4,18,39,69,104,144,188},
/* 103.5 Hz */ {
226,270,312,352,386,414,435,448,452,448,435,414,386,352,312,270,226,182,140,100,66,38,17,4,0,4,17,38,66,100,140,182},
/* 77 Hz */ {
304,363,420,473,519,557,585,602,608,602,585,557,519,473,420,363,304,245,188,135,89,51,23,6,0,6,23,51,89,135,188,245},
/* 85.4 Hz */ {
274,327,379,426,468,502,527,543,548,543,527,502,468,426,379,327,274,221,169,122,80,46,21,5,0,5,21,46,80,122,169,221}
};

/* frequency factor */
const uint16_t FLUT[8] PROGMEM = { 289, 699, 529, 552, 468, 452, 608, 548 };

/* Zugriff auf PROGMEM: pgm_read_byte (&SLUT_32[]); */

/*PWM Ausgang: OC1A (PA6) */


/* global variables */
unsigned char F = 0;

ISR(TIM1_OVF_vect) /* timer 1 overflow */
{
static int i=0;
unsigned int w;

    // update pwm register
    
    w = pgm_read_word (&SLUT_32[F][i]);
    OCR1AH = (unsigned char) (w>>8);
        OCR1AL = (unsigned char) w;
    i++;
    if (i > 31)
        i = 0;
    PORTA |= (1<<PA7);
    PORTA &= ~(1<<PA7);

}

int main(void){
unsigned char port,oldport=0;

    // setup direction=OUT, OC1A PWM output
    DDRA |= _BV(PA6);
    DDRA |= _BV(PA7);
    DDRB |= _BV(PB2);
    // enable pullups
    PORTA = ((1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3) | (1<<PA4) | (1<<PA5) | (1<<PA7));
    PORTB = (1<<PB2);    // unused pin
   
    // initialization of timer/counter1
    // mode = 14

    TCCR1A = (1<<WGM11) | (1<<COM1A1) | (1<<COM1A0); 
    TCCR1B = (1<<CS11) | (1<<WGM12) | (1<<WGM13);

    // set TOP value 

    F = (PINA & 0x07);     // read switch, ctcss f-selection 
    ICR1H = (unsigned char) (pgm_read_word (&FLUT[F])>>8);
    ICR1L = (unsigned char)  pgm_read_word (&FLUT[F]);
    
    // enable interrupt

    TIMSK1 = (1<<TOIE1);

    sei();

    while(1){
        port = PINA & (1<<PA3);        // RX/TX input 
        if (oldport != port) {
            oldport = port;
            if (port == 0) {
                PORTB |= (1<<PB2);
                sei();    // enable CTCSS output on TX
            }
            else {
                PORTB &= ~(1<<PB2);
                cli();    // disable CTCSS output on RX
            }
        }
    }
    return 0;
}

Hier der Link zur Dokumentation: https://www.dropbox.com/s/phxcs5wvqa8ms … 0.pdf?dl=1

Das HEX File: https://www.dropbox.com/s/wcss9zt7kh06g … 4.hex?dl=1

3

(2 replies, posted in CTCSS Generator)

Das ist ein simpler CTCSS Generator zum Nachrüsten von Funkgeräten.

Der ATMEL µC erzeugt über einen internen Timer und einer Look-Up-Table per PWM das CTCSS Signal.
Die Frequenz des CTCSS-SIgnals kann über einen DIP-Switch gewählt werden.

https://www.dropbox.com/s/ntnmrbu0n25ll3w/ctcss_t44.png?dl=1

Der Flux-Gate Sensor wird durch einen µC (Atmel ATmega 8) angesteuert.

  • Oben [1]: Ansteuerung der Treiber-Spule

  • Unten [2]: SYNC Signal für den synchronen Gleichrichter

https://www.dropbox.com/s/mqjn5yhpqplesn5/20131029_233806.jpg?dl=1

µC mit LCD, erzeugt die Treiber-Signale und mißt die Ausgangsspannung vom synchronen Gleichrichter mit dem on-chip ADC:

https://www.dropbox.com/s/jnfhhtqkn9tue5p/20131029_233817.jpg?dl=1


Die Sensor-Spule:

https://www.dropbox.com/s/wkpc2n2oeq4ov58/20131030_101248.jpg?dl=1

Der µC mit angeschlossenem LCD:

https://www.dropbox.com/s/htai7qvgd9zftxu/20131031_075603.jpg?dl=1

Die diskret aufgebaute Ansteuerung ohne µC:

https://www.dropbox.com/s/y3eh11jo1l1trvi/20131031_075614.jpg?dl=1

Bilder vom Oszilloskop:

  • Oben [1]: Strom durch die Treiber-Spule

  • Unten [2]: Ausgangssignal der Sensor-Spule

https://www.dropbox.com/s/nqsb0my3txhg0dv/20131031_080141.jpg?dl=1

Sensor-Spule umd 180° gedreht:

https://www.dropbox.com/s/m45dtx8x7zhrdis/20131031_080248.jpg?dl=1

Die Helmholzspule:

https://www.dropbox.com/s/368x4domo3vrr27/20131111_075836.jpg?dl=1
https://www.dropbox.com/s/yk1fmkdbecl318f/20131111_075905.jpg?dl=1

5

(0 replies, posted in Test forum)

Hallo Leute!
So sieht das Ding aus, wo dieses Board derzeit läuft.
https://www.dropbox.com/s/g7itpyz3ykdzzo9/U1A-C-0418-05_m.jpg?dl=1
Processor    : ARMv7 Processor rev 2 (v7l)
BogoMIPS    : 1006.38
Features    : swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x3
CPU part    : 0xc08
CPU revision    : 2
Hardware    : sun4i
Revision    : 0000
Serial        : 0000000000000000
RAM: 1 GB
Flash: 8 GB (SDHC card)

Allerdings ist mein Stick vom Conrad.
Auf der  Flash-Karte befindet sich ein Debian GNU/Linux 7.0.
73!
Gerhard

Die Impulse eines Geiger-Müller-Zählers sollen von einem µC gezählt werden und über die USB 1.0 Schnittstelle an einen üblichen Computer übermittelt werden
Die Zählerwerte können über ein Shell-Script via cron periodisch ausgelesen werden
Die Visualisierung erfolgt via thingspeak.com
Die Anzeige erfolgt in cpm (count per minute)