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){ } }
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
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
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
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.