RFM12 und LCD - Problem

OP #2802004
Hallo,

ich glaube ich stehe auf'm Schlauch. Ich habe eine Funkstrecke mit der 
Routine von Benedikt aufgebaut und sie funktioniert auch soweit. Jetzt 
möchte ich die empfangenen Daten aber nicht per UART ausgeben, sondern 
sie auf einem LCD-Modul anzeigen lassen. Hier mein Code:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <avr/pgmspace.h>
4
#include <avr/eeprom.h>
5
#include <stdlib.h>
6
#include "portbits.h"
7
#include "global.h"
8
#include "uart.h"
9
#include "rf12.h"
10
#include "lcd-routines.h"
11
#define F_CPU 10000000UL
12
#include <util/delay.h>
13

14
#define RF_BAUDRATE    15000    // Baudrate des RFM12
15

16
unsigned char data[128];
17
unsigned char tdiv=30;
18

19
int main(void)
20
{  PORTB=1;
21
  PORTD=31;
22
  DDRC=63;
23
  DDRD=238;
24

25
  sei();
26
  
27
  lcd_init();
28
  rf12_init();                      // RF12 + IO Ports initialisieren
29
    uart_init(UART_BAUD_SELECT(9600, F_CPU));
30
  rf12_config(RF_BAUDRATE, RF12FREQ(433.92), 0, QUIET);  // Baudrate, Frequenz, Leistung (0=max, 7=min), Umgebungsbedingungen (QUIET, NORMAL, NOISY)
31
  rf12_rxmode();                      // Empfang starten
32
  uart_puts("123");
33
  lcd_string("test");
34
  for (;;)
35
  {  
36
    
37
    check_rx_packet();                  // interne Empfangsroutine, muss periodisch aufgerufen werden
38

39
    if (rx_data_in_buffer())              // Daten empfangen?
40
    {  unsigned char count, i;
41
      count=rx_data(data);
42
      for (i=0; i<count; i++)      // Empfangs Beispiel
43
        
44
        {
45
        uart_putc(data[i]);
46
        lcd_data(data[i]);
47
        }
48
        
49
        
50
    }
51
    
52
    
53
    if (uart_data())          // Sende Beispiel 1: UART Daten senden
54
    {  data[0]=uart_getchar();
55
      uart_putc(tx_data(data,1));    // 1Byte Daten senden, Rückantwort ob Daten zugestellt wurden (0 = OK, 1 = Fehlgeschlagen)
56
      
57
    }
58
    
59
    if (secflag)                    // 1Hz
60
    {  secflag=0;
61
      if (!--tdiv)          // Sende Beispiel 2: Daten im 30s Takt senden
62
      {  tdiv=30;
63
        data[0]=123;
64
        tx_data(data,1);      // 1Byte Daten senden
65
      }
66
    }
67
  }
68
}




Wenn ich wie am Anfang 'lcd_string("test");' sende wird es auf dem 
Display auch wunderbar angezeigt, jedoch kommt über den Befehl: 
'lcd_data(data[i]);' nur wirres zeug auf dem Display an und nicht die 
übertragenen Daten.

Kann mir bitte mal Jemand einen Stups geben?

Danke
Gast #2802019
Dennis Scholz schrieb:

> Wenn ich wie am Anfang 'lcd_string("test");' sende wird es auf dem
> Display auch wunderbar angezeigt, jedoch kommt über den Befehl:
> 'lcd_data(data[i]);' nur wirres zeug auf dem Display an und nicht die
> übertragenen Daten.
>
> Kann mir bitte mal Jemand einen Stups geben?
>
> Danke

Hallo Dennis, sind deine Daten in "ASCII" gewandelt bevor du sie ans 
Display schickst!


Gruss Kurt
Gast #2802036
Hallo Leute, weils gerade passt.

Ich möchte auch diese HF-Module nutzen, habe aber von C keine Ahnung.
BASCOM wäre das richtige!

Gibt es irgendwo eine Sammlung von Tips und Sonstigem wo die RFM12 und 
AVR's unter BASCOM für Abundzuprogrammierer wie mich dargelegt werden?


Kurt
OP #2802063
>
> Hallo Dennis, sind deine Daten in "ASCII" gewandelt bevor du sie ans
> Display schickst!


Hallo Kurt,
meines Erachtens brauche ich das bei der Funktion LCD_data nicht, die 
erledigt das, ähnlich wie die uart_putc.

Ich glaube es liegt an was anderem, denn wenn ich innerhalb der 
for-Schleife das gleiche: lcd_string("Test"); sende, dann kommt 
ebenfalls nur Datenmüll auf dem Display raus....hmm....



Viel schlimmer ist eigentlich das das Funkmodul regelmäßig abstürzt und 
nur über einen Hardware-Reset wieder zu aktivieren ist, nicht mal Strom 
abstellen hilft. Aber das nur by-the-way...
Gast #2802085
Dennis Scholz schrieb:

Vielleicht bist du auch nur zu schnell mit der Ausgabe ans Display und 
den HF-Teil.
Sende mal nur Daten die dem (sichtbarem) SACII-Satz entsprechen.
Z.B 49, 50, 51
Wenn dann die Zahlen 123 sichtbar werden dann ists eine 
Darstellungssache.

Für Hänger gibts viele Ursachen, sind deine Bausteine/Baugruppen 
untereinander ausreichend entkoppelt?


Kurt

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.