www.blafusel.de


  Home  |   Privat  |   Impressum  |   Bücher  |   Computer  |   Mikrocontroller  |   Misc  |   OBD  |   Forum
Aktuelle Zeit: Montag 29. April 2024, 23:15

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Donnerstag 4. Juni 2009, 00:26 
Offline

Registriert: Mittwoch 3. Juni 2009, 23:59
Beiträge: 2
Hallo,
ich versuche mit einem Atmel Atmega16 unter Nutzung der UART (RX/TX) Schnittstelle seit Tagen eine Kommunikation mit einem Motorsteuergerät von einem Golf 3 herzustellen. Um die TTL Pegel in ISO Pegel zu wandeln nehme ich den L9637d.
Das Steuergerät ist definitiv richtig angeschlossen, da ich es mit VAG-COM und USB Adapter auslesen kann.
Fuse Bits für externen Quarz im uC sind gesetzt!
Schaltung wurde x-mal durchgemessen.(ist korrekt)
Nach der 5 Baud Initialisierung aktiviere ich den Uart und erhalte nur Datensalat. Habe schon alle möglichen Baudraten versucht (4800,9600,10400,......). Bekomme nicht die gewünschten 3 Byte (0x55,0x01,0x8A), sondern insgesamt 7?
Es ist mir einfach nur noch ein Rätsel wieso es nicht funktioniert. Irgendwas klappt mit der Baudrate nicht.
Den Schaltplan habe ich als Attachement beigefügt. Ein Auszug aus dem Quellcode für die Konfiguration des UART befindet sich unten.
Hoffe, das mir vielleicht hier jemand weiter helfen kann!;)


void uart_init(){
UCSRC |= (1<<URSEL); //must be 1 when read/write UCSR UCSRC &=~((1<<UPM1)|(1<<UPM0));//Parität deaktiviert
UCSRC &= ~(1<<UMSEL);//Asynchronous oeration 0
UCSRC &= ~(1<<USBS);//1 Stop Bit 0
UCSRB &=~ (1<<UCSZ2);
UCSRC |= (1<<UCSZ1)|(1<<UCSZ0);
//8 Datenbits 011(Z2,Z1,Z0)
//Einstellen der Baudrate
UCSRC &= ~(1<<URSEL); //must be 0 when read/write UBRR
UBRRH = 0b00000000;
UBRRL = 0b00101111; //UBBR=47 da 7372800/(9600*16)-1

while ((UCSRA & (1<<RXC))) //Flush Receive-Buffer
{}
UDR;
UCSRA = (1 << RXC) | (1 << TXC);// Rücksetzen von Receive und Transmit Complete-Flags

}

void uart_enable(){
UCSRB |= (1<<TXEN); //Enable Transmitter
UCSRB |= (1<<RXEN); //Enable Receiver
UCSRB |= (1<<RXCIE);//RX Interupt Enable
}


Dateianhänge:
Dateikommentar: Schaltplan
schaltplan1.pdf [33.8 KiB]
691-mal heruntergeladen
Nach oben
 Profil Private Nachricht senden  
 
 Betreff des Beitrags:
BeitragVerfasst: Donnerstag 4. Juni 2009, 07:53 
Sind es immer die selben 7 byte die du bekommst? Aber die schnittstelle ist schon auf 8N1 gesteltl oder?


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: Donnerstag 4. Juni 2009, 09:43 
Ja es sind immer exakt die gleichen Byts.
Ich denke schon daß der Uart auf 8N1 steht. 8 Datenbits keine Parität und ein Stopbit. Die Uart konfig habe ich sogar im ersten Post mitgeschickt.

1 Byte:10101
2 Byte:11111
3 Byte:1
4 Byte:1010
5 Byte:10101
6 Byte:11111
7 Byte:1
8 Byte:1010

Grüße


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: Donnerstag 4. Juni 2009, 10:37 
Aber das sind ja garnicht 8 bit. das erste byte sieht ja schonmal gut aus aber da fehlen paar bit


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: Donnerstag 4. Juni 2009, 11:40 
Offline

Registriert: Mittwoch 3. Juni 2009, 23:59
Beiträge: 2
Bei meiner Angabe fehlen die führenden Nullen. Habe die empfangenen Byte in einem uint8_t [] Array gespeichert und lasse sie mir anschließend auf LCD ausgeben. Habe dabei die Funktion itoa(array[pos],buffer,2) genutzt.

sprich:

uint8_t feld[40];
uint8_t size=0;
//zum testen der max 40 ersten bytes
//dieses Feld wird über den ReceiveInterupt gefüllt und size gesetzt
//anschließend nach erfolglosem Verbindungsaufbau

uint8_t i;
char buffer[8];
for(i=0;i<size;i++){
itoa(feld[i],buffer,2);
lcd_clear();
lcd_string(buffer);
_delay_ms(2000);
}


Nach oben
 Profil Private Nachricht senden  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 87 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de