Forum: Mikrocontroller und Digitale Elektronik MicroAPRS auf Arduino Uno läuft nicht


von Florian W. (florenzw)


Lesenswert?

Hallo,

ich versuche MicroAPRS im Kiss-Mode
https://github.com/markqvist/MicroAPRS
auf einem Arduino Uno zum Laufen zu bringen.

Leider zeigt der Arduino nach dem Flashen auf meine 
Kommunikationsversuche aus dem Arduino-Terminal heraus (z.B. H -> Print 
configuration) keinerlei Reaktion. Das Terminal ist auf 9k6Baud 
eingestellt, getestet wurde mit/ohne nl/cr.

Empfangen tut er auch nichts. Der NF-Eingang A0 wurde über zwei 100k-Rs 
als Spannungsteiler auf 1,65V gelegt und über einen 1nF-C mit dem 
AFSK-Signal gefüttert. Getestete Pegel 100mV - 1,5V.

Wo habe ich was übersehen?

Kompiliert wurde mit den Standardeinstellungen, die nach Durchsicht der 
Dateien recht sinnvoll erschienen:

Starting build...
Compiling: main.c
Linking: images/MicroAPRS.elf
avr-objcopy: --change-section-lma .eeprom=0x0000000000000000 nie benutzt

AVR Memory Usage
----------------
Device: atmega328p

Program:    5702 bytes (17.4% Full)
(.text + .data + .bootloader)

Data:       1852 bytes (90.4% Full)
(.data + .bss + .noinit)

Firmware compiled successfully!


Beim Flashen ist mir auch nichts besonderes aufgefallen:

florian@MessPC:~/Downloads/MicroAPRS-master$ ./flash ACM0

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be 
performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "images/MicroAPRS.hex"
avrdude: input file images/MicroAPRS.hex auto detected as Intel Hex
avrdude: writing flash (5702 bytes):

Writing | ################################################## | 100% 
1.03s

avrdude: 5702 bytes of flash written
avrdude: verifying flash memory against images/MicroAPRS.hex:
avrdude: load data flash data from input file images/MicroAPRS.hex:
avrdude: input file images/MicroAPRS.hex auto detected as Intel Hex
avrdude: input file images/MicroAPRS.hex contains 5702 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 
0.81s

avrdude: verifying ...
avrdude: 5702 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

FlorenzW

von Florian W. (florenzw)


Angehängte Dateien:

Lesenswert?

Bin jetzt einen kleinen Schritt vorwärts gekommen:

Das Demoprogramm der libAPRS aus gleicher Quelle auf gleicher Hardware 
funktioniert, dekodierte APRS-Pakete sehen sinnvoll aus.

Wenn ich von https://github.com/markqvist/MicroAPRS aus dem 
precompiled-folder statt der 3V die 5V-Version flashe, wird etwas 
dekodiert, was aber nur zum Teil sinnvoll ist (siehe Bild). Xastir kann 
damit nichts anfangen.
Ein Abrufen der Konfiguration des Modems durch "H" ist nicht möglich, 
auch alle anderen Kommunikationsversuche scheitern.
Wenn ich via make selbst compiliere, gibt der Arduino keinen Mucks von 
sich.

Ich habe den Verdacht, dass in der seriellen Kommunikation der Wurm drin 
ist.

von Daniel B. (dbuergin)


Lesenswert?

Hast Du einen original Arduino UNO ? So nach Datenblatt sind die doch
5V und nicht 3.3V oder ?
Je nach dem musst Du im device.h File noch Aenderungen vornehmen.

von Florian W. (florenzw)


Lesenswert?

Unter den getesteten Arduino Unos war auch ein Original dabei.

Hier ist die device.h, die zum compilieren verwendet wurde:

#include "util/constants.h"

#ifndef DEVICE_CONFIGURATION
#define DEVICE_CONFIGURATION

// CPU settings
#define TARGET_CPU m328p
#define F_CPU 16000000
#define FREQUENCY_CORRECTION 0

// ADC settings
#define OPEN_SQUELCH true
//#define ADC_REFERENCE REF_3V3
// OR
#define ADC_REFERENCE REF_5V

// Sampling & timer setup
#define CONFIG_AFSK_DAC_SAMPLERATE 9600

// Serial protocol settings
#define SERIAL_PROTOCOL PROTOCOL_KISS
// OR
//#define SERIAL_PROTOCOL PROTOCOL_SIMPLE_SERIAL

// AX25 settings
#if SERIAL_PROTOCOL == PROTOCOL_SIMPLE_SERIAL
    #define CUSTOM_FRAME_SIZE 330
#endif

// Serial settings
#define BAUD 9600
#define SERIAL_DEBUG true
#define TX_MAXWAIT 2UL

// Port settings
#if TARGET_CPU == m328p
    #define DAC_PORT PORTD
    #define DAC_DDR  DDRD
    #define LED_PORT PORTB
    #define LED_DDR  DDRB
    #define ADC_PORT PORTC
    #define ADC_DDR  DDRC
#endif

#endif

von Markus (Gast)


Lesenswert?

Lies mal bitte die Formatierungsregeln:
https://www.mikrocontroller.net/articles/Formatierung_im_Forum

von Florian W. (florenzw)


Lesenswert?

Problem gelöst.
1.: Man muß die Vref von außen zuführen.
2.: Fehler in meiner Konfiguration von Xastir:
Man muss serielles KISS TNC einstellen und nicht serielles TNC...
microAPRS auf dem Arduino Uno funktioniert einwandfrei.

Thanks markqvist

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.