-
        
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Hardware I2C bei M16 in Bascom

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.08.2004
    Beiträge
    11

    Hardware I2C bei M16 in Bascom

    Hallo Leute,

    wie spricht man den I2C-Bus von einem ATMega16 in Bascom an?

    Die Slave-Beispiele von Bascom funktionieren nur mit den kleineren AVR's.

    In den Bascom-Hilfe-Dateien steht, dass man beim M16 den
    Hardware-I2C verwenden soll, was ja auch sinnvoll wäre.
    Doch wie spricht man ihn an, ich finde dafür leider nur
    Assembler-Beispiele.

    Bin dankbar für jede Hilfe.

    mfg

    sam86

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Hi sam86!
    Wo hast Du die ganzen Assembler-Beispiele gefunden?
    Ich finde nämlich kaum welche! :o(
    Für Bascom findest Du was in der Artikelliste ganz oben! :o)
    TWI!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    HI!

    Habe auch gerade ein Problem mit dem I²C und dem Mega16.
    Kann es sein dass das NUR auf diesen Pins funktioniert??

    Viele Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  4. #4
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Auf welchen PIN´s der I2C Bus liegt kann in Bascom ja frei gewählt werden. Derzeit wird nicht der Hardware I2C-Bus genutzt, vemutlich ist dies aber ab der nächsten Version der Fall.
    Momentan kannst du die Bascom I2C Befehle mit beliebigen PIN´s nutzen. DIe PIN´s kannst du so einstellen:

    Config Scl = Portc.0 'Ports fuer IIC-Bus
    Config Sda = Portc.1

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    HI Frank!

    Ich habe das so gemacht, aber es kommt laut Speicheroszilloskop nix raus! Pullups usw...

    Mein Quellcode:


    Config Sda = Porta.0 'I²C SDA
    Config Scl = Porta.1 'I²C SCL



    Beep Alias Portd.2

    595dat Alias Portc.6
    595takt Alias Portc.1
    595act Alias Portc.0

    165dat Alias Pinc.7 '!!WICHTIG: Beim EINLESEN IMMER PinX.Y
    165takt Alias Portb.1
    165act Alias Portb.0

    '===FUNKTIONEN===
    Declare Function 595akt() As Byte
    Declare Function Get165() As Byte

    Declare Function Send_to_slave() As Byte
    Declare Function Slv_input() As Byte

    Declare Function Errorbeep(byval Number As Byte) As Byte
    Declare Function Sirene(byval Oft As Byte) As Byte

    Declare Function Rechts_vor() As Byte
    Declare Function Rechts_rueck() As Byte
    Declare Function Rechts_stop() As Byte

    Declare Function Links_vor() As Byte
    Declare Function Links_rueck() As Byte
    Declare Function Links_stop() As Byte

    Declare Function Beide_vor() As Byte
    Declare Function Beide_rueck() As Byte
    Declare Function Beide_stop() As Byte
    Declare Function Beide_links() As Byte
    Declare Function Beide_rechts() As Byte

    Declare Function Mstop() As Byte

    '===VARIABLEN===

    Dim A As Byte
    Dim B As Byte
    Dim D As Byte
    Dim E As Byte
    Dim Tmpink As Byte

    Dim 165pinstate(2) As Byte
    Dim 595pinout(3) As Byte

    Dim F As Byte
    Dim S As Byte
    Dim Actualslaveip As Byte
    Dim Stscom As String * 4

    Const 595online = 2 + 1
    Const 165online = 1 + 1

    '===PROGRAMMBEGINN===

    Begin:

    595act = 0 'activate '595 auf null
    595takt = 0 'takt
    595dat = 0 'data

    165act = 1 'activate '595 auf null
    165takt = 0 'takt

    S = Asc( "s" ) 'S für success
    F = Asc( "f" ) 'f für failure

    595pinout(2) = 0 '595er auf null
    595pinout(3) = 0
    A = 595akt()

    Sound Beep , 250 , 1000 'Ein bisschen gepiepse zum Anfang...
    Sound Beep , 250 , 900
    Sound Beep , 250 , 800
    Sound Beep , 500 , 500


    Starting:

    A = Sirene(3) 'IICCCCCCCCCCHHHHHHHHHHH KKKOOOOOOMMMMMMMMMMMMMMMMMMMMMMMMMMEEEEEEEE!!

    Waitms 500 'Watren


    '====Eigentlicher PROGRAMMSTART====


    Source: 'TESTPROGRAMM

    B = &B01110001 'Addresse des Datenchip Daten
    D = &B01110011 'steuer

    I2cstart
    I2cwbyte D
    I2cwbyte &B00000000
    I2cstop

    Waitms 25

    I2cstart
    I2cwbyte B
    I2cwbyte &B00001100
    I2cstop

    Waitms 25

    I2cstart
    I2cwbyte D
    I2cwbyte &B10000000
    I2cstop

    Waitms 25

    I2cstart
    I2cwbyte D
    I2cwbyte &B00000000
    I2cstop

    Waitms 25

    I2cstart
    I2cwbyte B
    I2cwbyte 97
    I2cstop

    Waitms 25

    I2cstart
    I2cwbyte D
    I2cwbyte &B10000000
    I2cstop

    Waitms 25

    I2cstart
    I2cwbyte D
    I2cwbyte &B00000000
    I2cstop

    End 'ENDE!!

    Ich weis, es gibt dieses Codefenster, aber ich find's so übersichtlicher...

    Zu den Pins kommt absolut nada raus. Meine Pullups sind 5,6kOhm.

    Achso, ich steure damit 2 PCF8574P an. Das ist ein LCD wie auf
    http://www.destroy-yourself.de/julia...amr/i2clcd.htm

    Ich schätze, dass es irgendwie an der Programmierung liegt, aber...
    Ihr kennt euch da besser aus. Bin I²C Noob.

    Viele liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.06.2004
    Ort
    Rhein-Neckar-Raum
    Beiträge
    504
    fehlt da nicht der i2cinit ???

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    Hi!

    Siehe PM... keine Ahnung! das Buch das ich habe, ist dazu etwas ungeeignet.

    Viele liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    22.08.2004
    Beiträge
    11
    Hi!
    @Florian: Die Asm-Beisp. waren im Datenblatt vom M16.
    Für den Master müssten doch die Befehle I2csend und I2creceive funktionieren. Doch die Bascom-Beispiele für den Slave funktionieren nicht mit dem M16. Der Compiler meldet dann, dass das I2C-Library nicht mit dem M16 funktioniert.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Hi sam86!
    Danke für den Tipp, da ich derzeit nur den Mega8 benutze, habe ich das völlig übersehen!

    Danke nochmals! :o)

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    22.08.2004
    Beiträge
    11
    Hi,
    vielleicht sollte ich meine Frage mal anders formulieren:
    Wenn die BasCom-Hife meint, ich soll die "harware I2C implementation" verwenden, dann heißt das doch, dass ich die Steuerregister setzen und die Interupts verwalten soll.
    Blos wie kann ich in Bascom die Register setzen und die Interrupts verwalten?

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •