www.mikrocontroller.net

Forum: Compiler & IDEs Anfänger ... erster Versuch ... fehlgeschlagen ;o(


Autor: Andreas K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe soeben in einer Nacht- und Nebelaktion mein erstes AVR-Board
aufgebaut und wollte es eigentlich nur noch schnell einmal testen.
Flashen ging laut Anzeige soweit auch eiwandfrei ... nur das Prog läuft
nicht. Ich hoffe es ist ein Fehler meinerseits im Programm und nicht
gleich der erste zerschossende AVR oder eine Schaltung die gar nicht
funktioniert:

#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
#include <avr/delay.h>

int main (void)
{

  DDRD=0xff;
  DDRC=0xff;
  while(1)
  {
    PIND=0xff;
    PINC=0xff;
  }

}


As handelt sich um einen ATMega32. An Port C habe ich
interessanterweise an ein paar Pins Spannungen messen können, sonst
leider nichts.

Wo liegt das Problem ? Ist der Code falsch ? Kann der AVR defekt sein ?
wäre es möglich, dass die Schaltung gar nicht funktioniert (z.B. kein
Takt) oder ähnliches ?

Ach und noch etwas - ab wann läuft das aufgespielte Programm eigentlich
? Gleich nach dem flashen oder nach dem Aus- und wieder Einstöpseln ?

MfG

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PINx=input, PORTx=output.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTC hat ein paar pins für JTAG reserviert.

zu ausschalten Fuses entsprechend programmieren, oder zur laufzeit..

// Disable JTag Interface in case of ATmega32 (or FUSE disabled - just
in case)
#if defined (_AVR_ATmega32_)
    unsigned char sreg = SREG;
    cli();
    // Zweimal innerhalb von 4 Taktzyklen schreiben
    MCUCSR |= (1<<JTD);
    MCUCSR |= (1<<JTD);
    SREG = sreg;
#endif

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
setze die fusebits unter deiner kontrolle mit ponyprog oder bascom.
mfg pebisoft

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn der Fehler in deinem Programm schon oben genannt wurde, nur
mal zur Info:
Das Programm läuft, sobald der Reset Pin auf high gesetzt wird. Manche
Programmer machen dies direkt nach dem Flashen und manche nicht.
Wenn du keinen Takt hättest würde der Programmer den Chip garnicht erst
erkennen.
Solange der Programmer noch den Chip erkennt ist nicht alles verloren
;-)

Autor: Andreas K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke, hat funktioniert. Hab einfach nicht genau aufgepasst ;o)

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.