mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik hilfe beim atmega48


Autor: peter_ruslo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
#include <avr/io.h>


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

int send(unsigned char c)
{
  while (!(UCSR0A & (1<<UDRE0)));         
    UDR0 = c;  
    return 0;
}


void wait (void)               
{ 
 unsigned int i;
 for (i = 65535; i > 0; i--);
}


int main(void)
{
    UCSR0B  |= (1<<TXEN0);             //TX einschalten
    UCSR0C   = (3<<UCSZ00);            //8N1
   UBRR0H   = (UBRR_BAUD>>8);          //9600 Baud      
   UBRR0L   =  UBRR_BAUD;            //9600 Baud    
  DDRB   =  0xff;  

while (1)
{
  if (PORTB & (1<<PIN0)) PORTB = 0x00; else PORTB = 0xff;
   
   wait();

  send('T');
  send('e');
  send('s');
  send('t');
}
return 0;

}


Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe auf Anhieb folgenden Fehler:
#define CLOCK    4000000                4MHz

Was soll das "4MHz" in der Zeile? Wenn das so im Source steht ist es 
falsch.
Hast Du die Fuses korrekt gesetzt?

Michael

Autor: peter_ruslo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peter_ruslo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
arghs das hat der beim kopieren verschlamptt, da stand nen //vor den 
4MhZ

fuses hab ich garkeine gesetzt ausser das mit dem cristal

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: Einhart (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peter_ruslo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da machta genau den gleichen schmarn

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.