www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Code auf Mega32 läuft nicht? Minimalcode


Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo! Ich verzweifle noch.

Problembeschreibung: Entwicklungsboard mit Atmega32 ist programmiert, 
positive Rückmeldung vom MK2 Progger. Fuse-Bits stehen noch auf default 
1MHz intern, ansonsten nur SPIEN an.(klar) Die Pins gehen nicht auf 
High! VCC liegt am Controller an. Die Quelle kann auch mehr als genug 
Strom treiben. Oszi zeigt auch weder am Resetpin, noch an VCC am µC 
mucken.

habe im Code dann extra zum Test "nur" versucht, einen pin auf High zu 
schalten. Geht nicht!

Hier der Code:
#define F_CPU 1000000
#include  <avr/io.h>
#include <util/delay.h>
#include <stdio.h>

#define IO_DDR      DDRC
#define IO_PORT     PORTC
#define SELF_HOLD    4
#define LED      5

int main()

{
  //test
  DDRA |= (1<<0);
  PORTA |= (1<<0);
  for(;;);
  //ende test


  PORTC |= (1<<SELF_HOLD); 
  DDRC  |= (1<<SELF_HOLD) | (1<<LED);  // configuring pins as output

  for(int i = 0; i<10; i++)
  {
    PORTC ^= (1<<LED); 
    _delay_ms(200);
    _delay_ms(200);
    _delay_ms(100);

  }
  PORTC |= (1<<LED);
  PORTC &= ~(1<<SELF_HOLD); // selbsthaltung lösen µC stromlos!!  
  return;
}
Dieser Code soll erst mal auf dem Entwicklungsboard laufen, um zu 
schauen, ob die Pins überhaupt den gewünschten Status annehmen. Das 
Eval-Board stellt VCC selbstverst. dauerhaft bereit!


Um mal eine Frage zu formulieren:
Vllt. könnt ihr mir helfen, warum zum henker ich nicht mehr in der Lage 
bin, einen digit. Pin auf high zu schalten. Ich steh voll auf dem 
Schlauch.
Danke für Antwort

Autor: J.-u. G. (juwe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P. schrieb:
> for(;;);
>   //ende test

Nein, Dein Test wird nie zu Ende sein.

PA0 sollte aber high sein.

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Test-Code-snippet ist hier zu ende. Der code soll ja weiterlaufen. 
Hier macht er halt in einer leeren schleife nix.

Warum der Pin (auch auf verschiedenen sonst immer funktionierenden) 
Testboards nicht läuft, weiß ich nicht.

Kompiliert habe ich mit dem WINAVR via AVR-Studio. Für den 
Compiler/linker ist selbstverst. der richtige Controller eingestellt.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

JTAG abgeschaltet?

MfG Spess

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jap JTAG aus, SPI an. BODEN steht auf 2V7

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht's den mit der BOOTRST Fuse aus ?

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell Optimierung so eingestellt, dass die leere Schleife 
wegoptimiert wird?

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lasse S. schrieb:
> Eventuell Optimierung so eingestellt, dass die leere Schleife
> wegoptimiert wird?

Da müsste dennoch wenigstens PINA0 auf high sein.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An welchen Pin misst Du denn?
Im #define steht PORTC und vor Deiner TestEndlosschleife PORTA.
Es müsste also PA0 gesetzt sein.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lasse S. schrieb:
> Eventuell Optimierung so eingestellt, dass die leere Schleife
> wegoptimiert wird?

Eine leere Endlosschleife wird NIE wegoptimiert, egal mit welcher 
Einstellung.

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVCC (und alle GND) angeschlossen?

RESET = HIGH?

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann bestätigen, daß der Code genau das tut was er soll.
Das Ergebnis:
SBI       0x1A,0
SBI       0x1B,0
RJMP      PC-0x0000

Mittlerweile BOOTRST nachgesehen ? Nicht daß der Bootloaderbereich ohne 
vorhandenen Bootloader angesprungen wird.

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, VCC und RST sehen am oszi super aus. dauernd high. Fuses können es 
auch nicht sein, hatte schon jungfräuliche Controller ausprobiert. 
Messen tu ich an den richtigen Pins. Zum einfachen Test hatte ich 
versucht, PA0 auf HIGH zu schalten, also messe ich auch an diesem pin.

BOOTRST war ich nicht dran. Neuer µC hilft ja auch nicht. :(

Autor: MWS (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Timo P. schrieb:
> BOOTRST war ich nicht dran. Neuer µC hilft ja auch nicht. :(

Versuch doch mal das von mir erzeugte Hex.

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Hex-file läuft!

WARUM? Ich gucke noch mal meine Project-Options durch, bzw. um hier die 
Fehlerquelle fest zu machen, werde ich direkt ein neues Projekt anlegen 
mit default-einstellungen. Hoffe das der Fehler da liegt.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P. schrieb:
> Diese Hex-file läuft!
>
> WARUM?

Häng' Dein Hexfile an, dann sag' ich's Dir.

Autor: Timo P. (latissimo)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier die geforderte hex-file

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P. schrieb:
> hier die geforderte hex-file

Die ist definitiv nicht aus obigen Code entstanden.

Dass du die zu programmierende HEX-Datei neu auswählen musst, wenn du zu 
einem anderen AVR-Studio-Projekt wechselst, weißt du?

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P. schrieb:
> hier die geforderte hex-file

Dieses Hex enthält folgenden Code:
PORTA |= (1<<0);
  DDRA |= (1<<0) | (1<<1);
    _delay_ms(2000);
PORTA &= ~(1<<0)
  for(;;);

Kommt Dir das bekannt vor ?
Wenn der µC auch wie definiert mit 1MHz läuft, so hätte das immerhin für 
einen 2 Sekunden High-Level an PA0 gesorgt. Falls Du natürlich dachtest, 
der muss immer High bleiben, mag's sein, daß Du diese 2 Sekunden 
versäumt hast.

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.