hilfe beim atmega48

Gast #768756
Lesenswert?
• ▲
▼
hallo, ich bin anfänger, also nicht lachen.

ich möchte auf dem stk 500 ein atmega48ans laufen bekommen.

leds blinken auch, aber auf der serielle kommt nur müll raus. immer nur 
"€€"

als quarz habe ich ein 4mhz quarz

fuses stehen auf Ext.Crystal Osc. 3-8Mhz....+65ms

hier der code
1
#include <avr/io.h>
2

3

4
#define CLOCK    4000000                4MHz
5
#define BAUD    9600                
6
#define UBRR_BAUD  ((CLOCK/(16ul*BAUD))-1)    
7

8
int send(unsigned char c)
9
{
10
  while (!(UCSR0A & (1<<UDRE0)));         
11
    UDR0 = c;  
12
    return 0;
13
}
14

15

16
void wait (void)               
17
{ 
18
 unsigned int i;
19
 for (i = 65535; i > 0; i--);
20
}
21

22

23
int main(void)
24
{
25
    UCSR0B  |= (1<<TXEN0);             //TX einschalten
26
    UCSR0C   = (3<<UCSZ00);            //8N1
27
   UBRR0H   = (UBRR_BAUD>>8);          //9600 Baud      
28
   UBRR0L   =  UBRR_BAUD;            //9600 Baud    
29
  DDRB   =  0xff;  
30

31
while (1)
32
{
33
  if (PORTB & (1<<PIN0)) PORTB = 0x00; else PORTB = 0xff;
34
   
35
   wait();
36

37
  send('T');
38
  send('e');
39
  send('s');
40
  send('t');
41
}
42
return 0;
43

44
}
Gast #768761
Lesenswert?
• ▲
▼
ahja nochwas,

kann man sich nen ISP adapter selber bauen?

also das ich den controller nachher in der schaltung programmieren kann?

oder muss ich den immer ausbauen und im z.B. STK 500 programmieren?
Gast #768765
Lesenswert?
• ▲
▼
Hab jetzt ehrlich gesagt wenig Lust, die ganzen I/O-Settings 
durchzugehen.  Checks selbst noch mal penibel anhand des Data Sheets 
durch - Du kriegst den UART mit Sicherheit erfolgreich zum laufen - 
irgendwann... ;-)

Noch ein Tipp: Weil leere FOR-Schleifen...

for (i = 65535; i > 0; i--);

von C-Compilern gerne mal komplett wegoptimiert werden, empfiehlt es 
sich, ein "nop" reinzuinlinen. Am bestens ist natürlich, auf solche 
Warteschleifen ganz zu verzichten, und für den Zweck Timer zu verwenden.
Gast #768778
Lesenswert?
• ▲
▼
>oder muss ich den immer ausbauen und im z.B. STK 500 programmieren?

Nein, der Clou ist, dass das STK500 ja schon so ein Programmer ist.  Du 
kannst den Controller immer in Deiner Schaltung lassen.  Alles, was Du 
brauchst, ist ein 6-poliger Plug auf der Platine, den Du mit den Pins 
VCC, GND, RESET, SCK, MOSI, MISO vom Controller verbindest.  Zum 
Programmieren Kabel vom Plug zu dem mit "ISP6pin" beschrifteten 
Gegenstück auf dem STK500 stecken und Programmiervorgang starten. Das 
ist alles.

Siehe auch im Handbuch zum STK500, Kapitel "In-System Programming of an 
External Target System".
Gast #768824
Lesenswert?
• ▲
▼
Moin,

wenn ich mich nicht sehr täusche kannst du zwar einen Quarz auf's STK500 
stecken aber der hängt mitnichten an den Xtal Pins des Controllers 
(würde auch wegen der Leitungslänge nicht funktionieren).

Der Quarz treibt einen Oszillator auf dem STK. Der Oszillator kann mit 
einem Jumper als externer Takt auf den AVR geschaltet werden. Der AVR 
muss dann per Fuse auf externen Oszillator gesetzt werden.

Nimm solange du keine Platine hast besser den per Softwäre einstellbaren 
STK Takt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren