Forum: Mikrocontroller und Digitale Elektronik Attiny85 mit RFM69HCW


von Sven Scholz (Gast)


Lesenswert?

Hallo zusammen,

hat schon mal jemand einen Attiny85 mit einem RFM69 erfolgreich in 
Betrieb genommen und konnte hierüber Daten senden und empfangen? 
Funktioniert das überhaupt? Der Attiny bringt ja keine SPI-Schnittstelle 
mit, allerdings dürften sich doch die GPIO-Pins so steuern lassen, dass 
es funktionieren könnte?
Ich habe Beispiele gefunden, wo das z.B. mit I²C so gemacht worden ist.

Vielen Dank für euren Input!

von Michael U. (amiga)


Lesenswert?

Hallo,

aus einer uralten Source mit dem RFM02 von mir:
1
uint8_t rfm02_send_8bit(uint8_t byte)
2
{
3
  uint8_t i;
4
  for (i=0; i<8; i++)
5
  {
6
    if (byte & 0x80)
7
    {
8
      RFM02_PORT |= (1<<RFM02_SDI);  // DATA auf H als Ausgang
9
    }
10
    else
11
    {
12
      RFM02_PORT &= ~(1<<RFM02_SDI); // DATA auf L
13
    }
14
    asm("nop");
15
    RFM02_PORT |= (1<<RFM02_SCK);    // CLK auf H
16
    asm("nop");
17
    asm("nop");
18
19
    byte = (byte << 1);               // nächstes Bit nach oben
20
21
    if (RFM02_PIN & (1<<RFM02_IRQ))  // unteres Bit Status einlesen, H?
22
    {
23
      byte |= 0x01;                  // DATA war H
24
    }
25
    else
26
    {
27
      byte &= ~(0x01);               // DATA war L
28
    }
29
    asm("nop");
30
    RFM02_PORT &= ~(1<<RFM02_SCK);   // CLK auf L
31
  }
32
  return byte;
33
}

war eigentlich mal in ASM, habe ich damals nur 1:1 nach C getrageb...

Gruß aus Berlin
Michael

von Sven Scholz (Gast)


Lesenswert?

Okay, also generell würdest du auch behaupten, dass das technisch 
möglich ist?
Könntest du evtl. noch etwas zur Pin-Belegung bzw. Verdrahtung sagen?

Ich würde gerne mit so einer Lösung einen Außentemperatursender 
realisieren mit dem DS1820.
Somit würde noch ein weiterer Pin (1Wire) zum DS1820 benötigt.

Machbar oder nicht?

DANKE!

von Michael U. (amiga)


Lesenswert?

Hallo,

Sven Scholz schrieb:
> Okay, also generell würdest du auch behaupten, dass das technisch
> möglich ist?
> Könntest du evtl. noch etwas zur Pin-Belegung bzw. Verdrahtung sagen?
Du mußt doch sowieso selber an den Pins wackeln, definiere sie dahin, wo 
es Dir gefällt:
1
#define  RFM02_CS        PB1            // AVR MOSI
2
#define  RFM02_SDI       PB0            // AVR MISO
3
#define  RFM02_SCK       PB2            // AVR SCK
4
#define  RFM02_IRQ       PB3
5
6
#define  RFM02_DDR       DDRB
7
#define  RFM02_PORT      PORTB
8
#define  RFM02_PIN       PINB

Ob es machbar ist? Hier laufen seit 10 Jahren 5 Sensoren jeweils mit 
Tiny45 und FOST02 (Temperatur/Feuchte mit sehr eigenwilligem Protikoll 
und Timing).
Alles mit jeweils einer CR123A, seneden alle 2 Minuten, Battereilaufzeit 
ca. 2 Jahre.

> Ich würde gerne mit so einer Lösung einen Außentemperatursender
> realisieren mit dem DS1820.
> Somit würde noch ein weiterer Pin (1Wire) zum DS1820 benötigt.
Kann man sicher auch nehmen, einen Pin findest Du da sicher nochn ei mir 
hängt ja an PB4 auch noch das Clock-Signal für den FOS02 dran.
Meines Wissens nach braucht der RFM69 auch nur die 4 SPI-Leitungen.

Gruß aus Berlin
Michael

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

das RFM69 kannst Du über vier Pins komplett steuern und damit Senden wie 
auch Empfangen über das Fifo. Einen fünften Pin brauchst Du für den 
DS18S20.

Dann brauchst du noch eine Beschaltung am Reset-Pin des RFM69.
Beitrag "Schaltplan von RFM69HW mit ATTiny84 und Add-Ons"

Am Schwierigsten dürfte die richtige Einstellung der 64 Register zu 
bewerkstelligen sein.

mfG

von Wolfgang (Gast)


Lesenswert?

Sven Scholz schrieb:
> Machbar oder nicht?

Wenn da das jetzt noch fragst, solltest du dich entweder ein bisschen 
mehr mit dem Datenblatt deines ATtiny und den Grundlagen der Bitprökelei 
auf demselben beschäftigen, oder zu einem größeren Prozessor mit HW-SPI 
oder gar komplettem HAL mit entsprechenden Bibliotheken greifen.

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.