www.mikrocontroller.net

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


Autor: Ralph W. (tiscali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralph W. (tiscali)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marko (Gast)
Datum:

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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralph W. (tiscali)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
derzeit habe ich
(auszug)
Config Pinc.4 = Output
Config Pinc.5 = Output
Config Scl = Portc.5
Config Sda = Portc.4
Dim Sp_pll As Word
Dim Pllstat As Byte
Locked Alias Pllstat.6

Const Addr1 = 192                                           '
Const Addr2 = 193

I2cinit
Do
Tastenschleife:
  Gosub Read_sp5055
  Gosub Write_sp5055
  Lcd Pllstat.1
  Locate 1 , 15
  If Locked = 1 Then Lcd "L"
  If Locked = 0 Then Lcd "X"

  Goto Tastenschleife
Loop
Write_sp5055:
I2cstart                                                    'start condition
I2cwbyte Addr1                                              'Aress
I2cwbyte 072                                                ' High byte (SendeFreq*8)/256  (ohne Kommastelle)
I2cwbyte 204                                                ' Low  byte (SendeFreq*8) - (256 * High Byte)
I2cwbyte &HCE                                               ' lade ausgewählte fequenz
I2cwbyte 0                                                  ' I/O port control bits
Return
I2cstop
Read_sp5055:
    I2creceive Addr2 , Pllstat
    Return
also müste die config dan jeweils mit in Write_sp5055:...
Config Pinc.4 = Output
Config Pinc.5 = Output
Config Pinc.6 = Output
Config Pinc.7 = Output
Do
Tastenschleife:
  Gosub Read_sp5055
  Gosub Write_sp5055
  Gosub Read_sp5055_1
  Gosub Write_sp5055_1
  Lcd Pllstat.1
  Locate 1 , 15
  If Locked = 1 Then Lcd "L"
  If Locked = 0 Then Lcd "X"

  Goto Tastenschleife
Loop
Write_sp5055:
Config Scl = Portc.5
Config Sda = Portc.4
I2cstart                                                    'start condition
I2cwbyte Addr1                                              'Aress
I2cwbyte 072                                                ' High byte (SendeFreq*8)/256  (ohne Kommastelle)
I2cwbyte 204                                                ' Low  byte (SendeFreq*8) - (256 * High Byte)
I2cwbyte &HCE                                               ' lade ausgewählte fequenz
I2cwbyte 0                                                  ' I/O port control bits
Return
I2cstop
Read_sp5055:
Config Scl = Portc.5
Config Sda = Portc.4
    I2creceive Addr2 , Pllstat
    Return
Write_sp5055_1:
Config Scl = Portc.6
Config Sda = Portc.7
I2cstart                                                    'start condition
I2cwbyte Addr1                                              'Aress
I2cwbyte 072                                                ' High byte (SendeFreq*8)/256  (ohne Kommastelle)
I2cwbyte 204                                                ' Low  byte (SendeFreq*8) - (256 * High Byte)
I2cwbyte &HCE                                               ' lade ausgewählte fequenz
I2cwbyte 0                                                  ' I/O port control bits
Return
I2cstop
Read_sp5055_1:
Config Scl = Portc.6
Config Sda = Portc.7
    I2creceive Addr2 , Pllstat
    Return

aussehen ist das ok?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ralph W. (tiscali)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.