Forum: Compiler & IDEs Mega1280 STK503 UART sendet fehlerhaft? WINAVR/ATMANAVR


von Ulrich S. (uli)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich hab seit einigen Tagen ein STK503 Entwicklungskit mit einem Mega 
1280 im Einsatz. Leider komm ich mit dem Teil einfach nicht weiter:

Daten die ich über Uart verschicke kommen falsch an.
Das gleiche Programm(auf die Register angepasst) läuft aber auf einem 
Mega32 einwandfrei.

Problem: Ich verwende einen 8MHz Quarz der über den Socket am STK500 
dranhängt.
Stelle ich im µC die UBBR Rate für 8MHz ein meldet mein Hyperterm am PC 
fehlerhafte Packete. Irgendwann kam ich auf die Idee das evt. der 
interne software takt vom stk500 mit 3.9 MHz reinpfuscht und hab die 
UBRR Rate entsprechend angepasst. Dann werden zwar die Pakete richtig 
empfangen, aber der Inhalt stimmt immer noch nicht.

Irgendwie hab ich das Gefühl das ich auf dem Board was falsch bejumpert 
habe. Hat mir von euch irgendjemand einen Tipp?
Um nen Compilerfehler auszuschliesen hab ich das ganze mit dem WINAVR 
und dem ATMANAVR getestet. Identisches Verhalten.
Mein Programm zum testen hängt unten dran.
Bei mir wird der LM317(Spannungsregler auf dem STK500) ziemlich warm 
sobald ich das STK503 draufsetz. Hat da jemand ähnliche Erfahrungen?

Gruß, guten Rutsch und Danke im Vorraus

Ulrich Spizig
_
Anhang: Test Prog zum nachvollziehen
// Dieses Programm dient zum Testen des Entwicklungskits STK503
// Externer Quarz 8 MHZ
// Fuses: EXT Crystal High Freq 16Ck +64ms
// OCSCEL Jumper ist auf "On-Board Crystal signal connected"
// XTAL1 Jumper steckt
// Mega 1280 auf STK503-ZIFSockel
// Baudrate 19200 8 Data; 1 Stop; even Parity
// PORT:E1 auf RXD PORT:E2 auf TXD von RS232 Spare
// PATCH KabelRS232Spare an PC



#define USART_BAUD_RATE 19200
#define F_CPU 8000000


#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <string.h>




void uart_init(void)
{
  UBRR0L = 12;/*?? warum bei 3.9 Mhz gültige Daten aber Inhalt falsch*/
  //UBRR0L = 25; /* [8000000/(16*19200)]-1=25,04*/
  UCSR0A &= ~( (1<<TXC0) | (1<<U2X0) | (1<<MPCM0));
        /* Sicherstellen das U2X=0 ist*/
  UCSR0B &= ~( (1<<RXCIE0) | (1<<TXCIE0) | (1<<UDRIE0) | (1<<UCSZ02)); 
/* keine Interrupts */
  UCSR0B |= ((1<<RXEN0) | (1<<TXEN0));
        /* einschalten von TX + RX*/
  UCSR0C &= ~( (1<<UMSEL00) | (1<<UMSEL01) | (1<<UPM00) | (1<<USBS0) 
|(1<<UCPOL0) );/*Async USART */
  UCSR0C |= ((1<<UPM01) | (1<<UCSZ01) | (1<<UCSZ00)); /* 8bit; even 
parity */
}

void uart_putc(void)
{


          while (!(UCSR0A & (1<<UDRE0)));
                                        // warten bis Senden moeglich
          PORTB = 0xAA;
          UDR0 = 0xAA;
          uint16_t i;
          for (i = 0; i < 10; i++)
           {
            _delay_ms(100);
           }

}
void main(void)

{
DDRB = 0xFF;
PORTB = 0xFF;
uart_init();
uart_putc();

while(1){

}
}

von Ulrich S. (uli)


Lesenswert?

hmm keine Antwort?

Also mit einem 16 MHz Quarz und einem 8 MHz Quarz hab ich durch ne 
einfachen for schleife mit blinki LEDs mittlerweile rausbekommen das der 
Quarz für die Clock verwendet wird und nicht der interne Takt.
Ansonsten bin aber nicht weiter.
Bei 16 MHz Quarz werden die Packete bei UBRRL = 25 als gültig erkärt.
Bei 8 MHZ Quarz bei UBRRL = 12;

Irgendjemand ne Idee ob ich noch irgendwo nen Presccaler vergessen habe?

Gruß

Uli

von Oliver (Gast)


Lesenswert?

Ohne jetzt den Mega 1280 im Detail zu kennen, vermute ich mal, daß er, 
genau wie der Mega 32, weder mit einem 8 Mhz noch mit einem 16 Mhz 
Quartz eine "normgerechte" Baudrate erzeugen kann. Schau mal in die 
Datenblätter, ob die entstehende Aberichung beim Mega 1280 größer ist 
als die beim Mega 32.

Oliver

von Ulrich S. (uli)


Lesenswert?

Vielen Dank Oliver für die Hilfe,
du warst nah dran, aber es war dann doch was anderes
tja, wiedermal das alte Problem(FUSES)...habs gelöst

der mega1280 hat einen internen Prescaler(div 8)
der sollte laut datenblatt defaultmäßig auf 0 stehen.... war aber nicht 
so.
Deshalb hats mir meinen Takt zerbröselt und der UART hat seinen Pakete 
mit ner falschen Clock erzeugt.

also... Fuses IMMER checken...

somit
- RTFM[read the fucking manual]
- und Sicherungen immer checken..

ABER:
Mein Problem mit dem STK503 hab ich immer noch nicht gelöst...
Das Ding zieht mit dem 16 MHz Quarz 1A Strom... !!!!!

Den schuldigen Baustein auf dem STK 503 hab ich auch schon 
entdeckt(hinfassen->Finger Verbrennen). Es ist das 10-pinige SMD-Bauteil 
neben dem MAXBAustein.

Hab im AVRFreaks.net Forum gelesen das auch andere dieses Problem 
haben.. Hat das schon irgendjemand gelöst?

Gruß

Uli

von Ulrich S. (uli)


Lesenswert?

Hi zusammen,

auch das STK503 Hitze Problem hab ich gelöst:

Sollte auch euer STK503 nach ca. 1 Woche auf einmal deutlich mehr 
Strom(0.85 A steigend heut Nachmittag warens dann 1.1A) verbrauchen so 
kommt das von dem

- Bauteil TPS61027 auf eurem STK503(das wird gut warm)
- Ich hab jetzt die Spule die das TPS61027 mit Strom versorgt 
rausgelötet und sieheda.. 0.2 A und der LM317 bleibt auch schön kalt. 
Danke an Jeff Dommbach.

Ich seh schon der Mega1280 wird mir noch viel Freude bereiten.
Gruß

Uli



von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Die CKDIV8-Fuse ist bei allen AVRs im Auslieferungszustand gesetzt,
weil das die einzige Möglichkeit ist zu garantieren, dass sie mit
jeder zulässigen Betriebsspannung noch akzeptabel getaktet werden.

Das mit dem TPS61027 scheint wirklich eine heftige Schwachstelle
zu sein.

von Michael Kraft (Gast)


Lesenswert?

Hallo Uli,
im Dezember letztes Jahr hattest du ein Problem mit dem TPS61027 
(boostconverter von TI)auf dem STK503 geloest. Wir haben da ein 
aehnliches Problem in einer eigenen Schaltung! Trotz google, finde ich 
leider keinen Schaltplan des STK503.

Kannst du mir da weiterhelfen?

Herzlichen Dank im Voraus,
Michael


Michael Kraft
Development
Synthax Audio AG
www.synthax.com

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Michael,

Klar hab ich die Schematics noch.
Siehe Anhang..


Ich hab das Teil damals nach langem Suchen bei Goggle gefunden.
Das Original muss irgendwo auf der Doku-CD in einer .nth File versteckt 
sein.

Auf AVRFreaks gabs im Dezember im letzten Jahr einen heissen Thread 
bezüglich dieses Bausteins auf dem STK503. Der hilft dir sicher bei 
deinem Problem auch  weiter.

Freundliche Grüße

Ulrich Spizig

von FBI (Gast)


Lesenswert?

Hi,

hättet Ihr auch einfacher haben können.
Der Schaltplan zum STK503 steckt in der Hilfe vom AVRStudio. Genauer 
gesagt im "STK503 User Guide" (STK503.chm) und da im "Appendix" ganz 
unten. Da findet sich dann auch gleich noch der Bestückungsplan.

Der Thread auf avrfreaks.net dürfte wohl dieser hier gewesen sein:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=30257

CU

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.