Forum: Mikrocontroller und Digitale Elektronik miniRadio mit Attiny13A+TEA5767


von uC_beginner (Gast)


Lesenswert?

Hallo,
habe mir aus verschiedenen Quellen folgendes gebastelt und wollte mal 
wissen, ob ich noch etwas vergessen habe? Ich nutze die I2C-Bibliothek 
von Peter Fleury. Habe nach folgender Anleitung die Ports für den 
Attiny13 angepasst: 
http://www.dexterindustries.com/howto/working-with-avr/any-port-any-pin-a-twi-master-for-attiny-atmega/

Das Programm sieht so aus, bin aber noch nicht ganz mit dem Datenblatt 
vertraut und hoffe das passt so.
1
#include <avr/io.h>
2
#include "i2cmaster.h"
3
4
5
#define TEA5767  0x60                    // device address of tea5767 => 0b1100000
6
7
int main(void) {
8
  
9
  char frequency = 87.5;                  //starting frequency
10
  char frequencyB = 4*(frequency*1000000+225000)/32768;  //calculating PLL word
11
  char frequencyH = frequencyB>>8;
12
  char frequencyL = frequencyB&0XFF;
13
  
14
  unsigned char ret;
15
  i2c_init();                          // init I2C interface
16
  ret = i2c_start(TEA5767+I2C_WRITE);            // set device address and write mode
17
  
18
    if ( ret ) {
19
        /* failed to issue start condition, possibly no device found */
20
        i2c_stop();
21
    }
22
  else {  
23
    i2c_write(frequencyH);
24
    i2c_write(frequencyL);
25
    i2c_write(0xB0);
26
    i2c_write(0x10);
27
    i2c_write(0x00);
28
        i2c_stop();
29
   }
30
    for(;;);  
31
}

von uC_beginner (Gast)


Angehängte Dateien:

Lesenswert?

Oh, die Schaltung hatte ich vergessen.

von uC_beginner (Gast)


Lesenswert?

Hallo,
hat keiner ein Kommentar dazu?

von Axel R. (Gast)


Lesenswert?

Wasn?
Gehts nicht?

von jmp (Gast)


Lesenswert?

Hi,

das wird nicht funktionieren.
Rechne mal nach, was Du in frequencyB versuchst reinzustopfen und 
welchen Datentyp die Variable hat...
Im Kommentar steht ja schon was von "word".

--jmp

von Axel R. (Gast)


Lesenswert?

http://www.neuhold-elektronik.at/catshop/popup_image.php?pID=4435
Laut dieser Beschaltng sollte alles da sein.

50Ohm impedanzangepasstes Routing am Antenneneingang wäre gut.
Abblock-Cs am ATTiny dicht an PIN8-4. ISP Schnittstelle mach noch drann. 
Dann musst Du nicht den Tiny immer wieder vom Sockel reißen.

Axelr.

von chris_ (Gast)


Lesenswert?

Das ist ja eine nette, kleine Schaltung. Auf Ebay gibt es das IC als 
Modul recht günstig.

Vielleicht fehlt noch ein kleiner Ausgangsverstärker: TDA2282

( dann hätte man schon 3 achtbeinig ICs :-) )

von Sixeck (Gast)


Lesenswert?

Soviel Platz und trotzdem rechte Winkel beim routing... sind die 
erwünscht ?

von uC_beginner (Gast)


Lesenswert?

@jmp
Danke für den Tipp, habs jetzt überarbeitet.
1
#include <avr/io.h>
2
#include "i2cmaster.h"
3
4
5
#define TEA5767  0x60                    // device address of tea5767 => 0b1100000
6
7
unsigned char frequencyH = 0;
8
unsigned char frequencyL = 0;
9
unsigned int frequencyB;
10
double frequency = 0;
11
12
int main(void) {
13
  
14
  frequency = 87.5;                    //starting frequency
15
  frequencyB = (4*(frequency*1000000+225000))/32768;    //calculating PLL word
16
  frequencyH = frequencyB>>8;
17
  frequencyL = frequencyB&0XFF;
18
  
19
  unsigned char ret;
20
  i2c_init();                          // init I2C interface
21
  ret = i2c_start(TEA5767+I2C_WRITE);            // set device address and write mode
22
  
23
    if ( ret ) {
24
        /* failed to issue start condition, possibly no device found */
25
        i2c_stop();
26
    }
27
  else {  
28
    i2c_write(frequencyH);
29
    i2c_write(frequencyL);
30
    i2c_write(0xB0);
31
    i2c_write(0x10);
32
    i2c_write(0x00);
33
    i2c_stop();
34
   }
35
    for(;;);  
36
}

Das Layout ist erst mal nur ein Versuch gewesen, werde die Schaltung 
morgen mal auf einem Breadboard aufbauen. Der Klinke-Ausgang geht an ein 
paar alte Aktivboxen.

von chris (Gast)


Lesenswert?

Wie stellst Du eigentlich den Sender ein? Das Radio-IC hängt ja fest am 
Attiny ohne Knöpfe.

von uC_beginner (Gast)


Lesenswert?

Soll erstmal nur ein Sender fest eingestellt werden. Mir geht es auch 
ein bisschen darum, den i2c-Bus zu verstehen und anzuwenden.

von masse (Gast)


Lesenswert?

Der zweite Gnd Anschluss hat keine Verbindung.

von Thomas D. (thomasderbastler)


Lesenswert?

Autorouter in Action..

von Frank B. (jeanluc7)


Lesenswert?

Salut,

deine Adresse ist falsch. Der TDA5767 ist nicht unter 0x60, sondern 0xC0 
erreichbar. Die binäre Adresse auf Seite 31 des Data Sheets enthält eine 
Null zu wenig; im weiteren Verlauf stimmt die Beschreibung aber.

Grüße, Frank

von Bastler (Gast)


Lesenswert?

Genauer: die Adresse ist 0x60, denn I2C (standard) hat nur 7-Bit 
Adressen. Nur wird diese als Bit1..7 verschickt und Bit0 entscheidet 
über die Richtung. Steht an entsprechender Stelle in obigen Code sogar 
als Kommentar! Nur beachtet wird es nicht. Also "0x60<<1 + I2C_WRITE"!

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.