Attiny24A probleme mit TWI

OP (Firma: --) #2700683
Lesenswert?
• ▲
▼
Hallo,

Ich versuche gerade mit dem Attiny einen i2c-bus zum laufen zu brigen.
Dazu verwende ich die i2c library von Peter Fleury, hab ich bei mehreren 
megas auch schon gemacht.
Aber wenn ich jetz das Programm für den attiny in Codeblocks 
compillieren will kommen mehrere Fehler das er Register nicht gefunden 
hat z.B. TWSR, TWBR usw.
Heißt das jetzt das der Controller gar kein Hardware I2c hat, oder 
heißen die Register da nur anders ?

gruß Timo
Gast #2700807
Lesenswert?
• ▲
▼
Hi

>Kann ich denn den attiny auch mit anderen controllern zusammen benutzen
>die richtiges hardware i2c haben ?

Warum nicht? I2C ist I2C.

>und kennst du zufälligt irgentwo eine gute anleitung zum USI ?

Master und Slave mit PDF und Software:

http://www.atmel.com/Images/doc2561.pdf
http://www.atmel.com/Images/AVR310.zip

http://www.atmel.com/Images/doc2560.pdf
http://www.atmel.com/Images/AVR312.zip

MfG Spess
OP (Firma: --) #2700877
Lesenswert?
• ▲
▼
Ich habe probiert die Programme von atmel zu compillieren, aber ich habe 
wieder eine menge Fehler bekommen.
Es gibt dorf auch includes die bei mir nicht existieren:
1
#include <inavr.h>
2
#include <ioavr.h>
Die programme wurden wohl mit einem anderen compiller entwickelt, ich 
verwende den avrgcc mit codeblocks.
Gibt es da irgendeine Lösung für ?
OP (Firma: --) #2701163
Lesenswert?
• ▲
▼
Ok, also so richtig hilft mir das nicht weiter. Ich habe für die beiden 
nicht gefunden includes einen ersatz für gcc gefunden, aber er gibt 
immernoch viele Fehler aus das er defines nicht finden kann, obwohl 
diese in der UDI_TWI_MASTER.h datei deklariert werden.
Woran könnte das noch liegen ?
OP (Firma: --) #2701435
Lesenswert?
• ▲
▼
Hallo nochmal,
Also alles funktioniert doch noch nicht, übertergungen klappen 
einwnadfrei, aber wenn ich 2 master chips im Bus habe blockiert der eine 
den anderen, auch wenn er gar nicht versucht zu senden.
Nach einer übertragung wird der SDA PIN wieder auf high gesetzt der SCL 
PIN aber nicht.
Obwohl der SCL PIN so wie ich das hier in der funtion sehe auch auf high 
gesetzt werden sollte.
(Ausschnit aus der USI_TWI_Master.c)
1
unsigned char USI_TWI_Master_Stop( void )
2
{
3
  PORT_USI &= ~(1<<PIN_USI_SDA);           // Pull SDA low.
4
  PORT_USI |= (1<<PIN_USI_SCL);            // Release SCL.
5
  while( !(PIN_USI & (1<<PIN_USI_SCL)) );  // Wait for SCL to go high.
6
  _delay_loop_2( T4_TWI );
7
  PORT_USI |= (1<<PIN_USI_SDA);            // Release SDA.
8
  _delay_loop_2( T2_TWI );
9

10
#ifdef SIGNAL_VERIFY
11
  if( !(USISR & (1<<USIPF)) )
12
  {
13
    USI_TWI_state.errorState = USI_TWI_MISSING_STOP_CON;
14
    return (FALSE);
15
  }
16
#endif
17
  return (TRUE);
18
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.