PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Atmega328P - PortD0 PortD1 als I2C verwendbar?



JoeM1978
16.08.2015, 12:10
Hallo.
Ich hab in meinem laufenden Projekt (vieleicht zu unüberlegt) die Ports D0 und D1 für den I2C-Bus vorgesehen.
Nun ist Platine incl. Bestückung usw. komplett fertig und ich bekomm diese beiden Ports (die eigentlich RX/TX sind) nicht fürs I2C zum laufen.
:mad:

Testaufbau mit anderen Ports funktioniert problemlos!!
Nur sobald ich dann sda und scl auf D0/D1 wechsle streikt der Bus.

Kann man mir da noch helfen oder muss ich auf andere Ports ausweichen ??

MfG,... JoeM1978

oberallgeier
16.08.2015, 12:29
... sda und scl auf D0/D1 ... streikt der Bus ... Kann man mir da noch helfen oder muss ich auf andere Ports ausweichen ...Das Datenblatt (http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf) hat umfangreiche Beschreibungen was welcher Port macht. Der 328er ist dort spezifiziert für I²C mit PC4 und PC5 für SDA und SCL. Daran hängt auch die Controllerinterne Hardware. Soweit ich gelesen habe, ist softwarebasierte I²C-Kommunikation in Bascom nicht möglich (klick) (https://www.roboternetz.de/community/threads/43095-Software-I2C?p=411889&viewfull=1#post411889). Aber in diesem Thread hat einer EEPROMS über D0/D1 (https://www.roboternetz.de/community/threads/28870-I%C2%B2C-Eeprom-24LC16?p=272234&viewfull=1#post272234) angesprochen/ansprechenwollen - lies dort mal nach ? ? Möglicherweise gibts doch ne Softwaremöglichkeit.

JoeM1978
16.08.2015, 12:36
Mit dem jetzigen Aufbau und Testprogramm kann ich z.b. PortD2 und PortD3 problemlos nutzen... nur 0+1 wollen eben nicht. X/

for_ro
16.08.2015, 12:51
Hallo Joe,
wahrscheinlich hast du irgendwo im Programm einen Print Befehl oder die Compileranweisung $baud=... stehen.
Dann konfiguriert Bascom die Pins automatisch für den UART und sie sind nicht mehr als IO benutzbar.

malthy
16.08.2015, 13:14
Hey,


wahrscheinlich hast du irgendwo im Programm einen Print Befehl oder die Compileranweisung $baud=... stehen.
Dann konfiguriert Bascom die Pins automatisch für den UART und sie sind nicht mehr als IO benutzbar.

Wäre auch mein Tipp, habe mal ein LCD nicht (auf Anhieb) zum Laufen gebracht weil ich die UART Pins verwendete habe. Das Codegerüst hatte ich aus einem anderen Projekt rüberkopiert - da stand dann auch ein "$baud =" drin ... :-)


Soweit ich gelesen habe, ist softwarebasierte I²C-Kommunikation in Bascom nicht möglich (klick) (https://www.roboternetz.de/community/threads/43095-Software-I2C?p=411889&viewfull=1#post411889).

Doch, Software-I2C kommt "serienmäßig" mit BASCOM, in Deinem Link geht's offenbar darum, dass man die Pin-Belegung nicht zur Laufzeit ändern kann.

Gruß
Malte

JoeM1978
16.08.2015, 14:16
BINGO....
Danke das war genau der Haken.
Hatte nich einige Zeilen mit Print stehen weil ich vorher übers terminal die Busadresse ausgelesen habe.

Danke euch vielmals für die Tips... hat mir ne Menge Arbeit erspart.

MfG,... JoeM