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
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
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 ?
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.
ähm ... meinte ob in C oder Bascom pin togglen ist wurst ... noch früh am morgen
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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.