Forum: Mikrocontroller und Digitale Elektronik 2 i2c ports in bascom mit mega8 ode mega 88


von Ralph W. (tiscali)


Lesenswert?

Hallo,
giebt es die möglichkeit in bascom mit einem atmega8 2 i2c ports 
anzusprechen?

das Problem ist ich möchte mit einem atmega8 4 Module steuern 2 der 
module haben jedoch die gleiche adresse und dies läst sich leider nicht 
ändern.

Modul 1-3 Hängen sollen an einem i2c port des mega8 hängen (das 
funktioniert schon. das 4modul soll an einem 2. i2c port des atmega 
hängen

von Peter D. (peda)


Lesenswert?

Für den AVR ist das überhaupt kein Problem. Du kannst soviele 
Single-Master I2C benutzen, wie Du Pins hast.
Wenn es nur um die Adressen geht, kannst Du den SCL-Pin auch gemeinsam 
benutzen.

Ob allerdings die Bascom Blackboxes das unterstützen, weiß ich nicht.
Ich mache sowas immer selber (in C).


Peter

von Ralph W. (tiscali)


Lesenswert?

hallo, das ist schon mal gut zu wissen das es überhaupt geht,
mit c kenne ich mich leider überhaupt nicht aus. in bascom sehe ich 
zumindest etwas durch aber ich merke schon das ich  recht schnell ein 
einigen dingen mit bascom an die grenzen stoße.. könntest du mir ein 
wenig starthilfe bei c geben ?

von Marko (Gast)


Lesenswert?

das geht auch mit bascom, ob ich mit c nen pin toggle oder in c ist
gerademal wurst. es wird in jedem fall ne software-twi-schnittstelle
generiert. du kannst für die einen zwei module die hardware twi
nehmen, das zweite paar generierste dir ne software twi.
mit set portx.y, reset portx.y und toggle portx.y haste schonmal
n grundwerkzeug ... immer dieses c ist besser als asdfhblasdb ...
so langsam kann ichs nicht mehr hören bzw. lesen.

von Marko (Gast)


Lesenswert?

ähm ... meinte ob in C oder Bascom pin togglen ist wurst ... noch früh 
am morgen

von Marko (Gast)


Lesenswert?

ach so, bascom kann auch die pins ändern / festlegen, auf denen ne 
software-twi läuft. schau mal nach config.
mit dem befehl kannst du die pins scl sda auch zur programmlaufzeit
ändern.

von Ralph W. (tiscali)


Lesenswert?

derzeit habe ich
(auszug)
1
Config Pinc.4 = Output
2
Config Pinc.5 = Output
3
Config Scl = Portc.5
4
Config Sda = Portc.4
5
Dim Sp_pll As Word
6
Dim Pllstat As Byte
7
Locked Alias Pllstat.6
8
9
Const Addr1 = 192                                           '
10
Const Addr2 = 193
11
12
I2cinit
13
Do
14
Tastenschleife:
15
  Gosub Read_sp5055
16
  Gosub Write_sp5055
17
  Lcd Pllstat.1
18
  Locate 1 , 15
19
  If Locked = 1 Then Lcd "L"
20
  If Locked = 0 Then Lcd "X"
21
22
  Goto Tastenschleife
23
Loop
24
Write_sp5055:
25
I2cstart                                                    'start condition
26
I2cwbyte Addr1                                              'Aress
27
I2cwbyte 072                                                ' High byte (SendeFreq*8)/256  (ohne Kommastelle)
28
I2cwbyte 204                                                ' Low  byte (SendeFreq*8) - (256 * High Byte)
29
I2cwbyte &HCE                                               ' lade ausgewählte fequenz
30
I2cwbyte 0                                                  ' I/O port control bits
31
Return
32
I2cstop
33
Read_sp5055:
34
    I2creceive Addr2 , Pllstat
35
    Return
also müste die config dan jeweils mit in Write_sp5055:...
1
Config Pinc.4 = Output
2
Config Pinc.5 = Output
3
Config Pinc.6 = Output
4
Config Pinc.7 = Output
5
Do
6
Tastenschleife:
7
  Gosub Read_sp5055
8
  Gosub Write_sp5055
9
  Gosub Read_sp5055_1
10
  Gosub Write_sp5055_1
11
  Lcd Pllstat.1
12
  Locate 1 , 15
13
  If Locked = 1 Then Lcd "L"
14
  If Locked = 0 Then Lcd "X"
15
16
  Goto Tastenschleife
17
Loop
18
Write_sp5055:
19
Config Scl = Portc.5
20
Config Sda = Portc.4
21
I2cstart                                                    'start condition
22
I2cwbyte Addr1                                              'Aress
23
I2cwbyte 072                                                ' High byte (SendeFreq*8)/256  (ohne Kommastelle)
24
I2cwbyte 204                                                ' Low  byte (SendeFreq*8) - (256 * High Byte)
25
I2cwbyte &HCE                                               ' lade ausgewählte fequenz
26
I2cwbyte 0                                                  ' I/O port control bits
27
Return
28
I2cstop
29
Read_sp5055:
30
Config Scl = Portc.5
31
Config Sda = Portc.4
32
    I2creceive Addr2 , Pllstat
33
    Return
34
Write_sp5055_1:
35
Config Scl = Portc.6
36
Config Sda = Portc.7
37
I2cstart                                                    'start condition
38
I2cwbyte Addr1                                              'Aress
39
I2cwbyte 072                                                ' High byte (SendeFreq*8)/256  (ohne Kommastelle)
40
I2cwbyte 204                                                ' Low  byte (SendeFreq*8) - (256 * High Byte)
41
I2cwbyte &HCE                                               ' lade ausgewählte fequenz
42
I2cwbyte 0                                                  ' I/O port control bits
43
Return
44
I2cstop
45
Read_sp5055_1:
46
Config Scl = Portc.6
47
Config Sda = Portc.7
48
    I2creceive Addr2 , Pllstat
49
    Return

aussehen ist das ok?

von Peter D. (peda)


Lesenswert?

Marko wrote:

> ... immer dieses c ist besser als asdfhblasdb ...
> so langsam kann ichs nicht mehr hören bzw. lesen.

Dann lies besser richtig!

Ich habe nur gesagt, daß ich es in C mache.
Eine Wertung habe ich nirgends nicht abgegeben.
Und daß ich in C programmiere, wirst Du mir wohl zugestehen.

Warum fühlen sich Bascomer immer gleich angegriffen, wenn man mal eine 
andere Programmiersprache erwähnt?


Peter

von Ralph W. (tiscali)


Angehängte Dateien:

Lesenswert?

also hab es mal probiet, abe bekomme is nicht wiklich hin, zwar kann ich 
den i2c verlegen auf einen anderen port aber auswikungen das sich die 
ports wärend der laufzeit ändern ist leide nicht vorhanden.
hatte auch versucht eine wartezeit einzubringen, aber auch dann mag er 
dies nicht
muss auch dazu sagen, das die module eigentlich fast permanent 
angeprochen werden müssen bzw abgefagt werden müssen, auch wenn diese 
gerade nicht aktiv sind.
Herstellerbeding sind die SP5055 nur an wenn das gesamte modul beim 
senden unter strom kommt.

Verucht habe ich
i2c 1
auf Portc.2 und portc.3 für 2,4Ghz modul
und
i2c 2
auf Portd.6 und portd.7 für 1,3ghz modul.
zugriff auf die ports funktioniert aber kein leider kein wechsel wärend 
de laufzeit.
am port i2c port 1 oder 2 sollen dann noch 2 weitere module die aber nur 
bei ändeungen ihrer konfig kurz angespochen werden.

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.