Code auf Mega32 läuft nicht? Minimalcode

OP #2093870
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:
1
#define F_CPU 1000000
2
#include  <avr/io.h>
3
#include <util/delay.h>
4
#include <stdio.h>
5

6
#define IO_DDR      DDRC
7
#define IO_PORT     PORTC
8
#define SELF_HOLD    4
9
#define LED      5
10

11
int main()
12

13
{
14
  //test
15
  DDRA |= (1<<0);
16
  PORTA |= (1<<0);
17
  for(;;);
18
  //ende test
19

20

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

24
  for(int i = 0; i<10; i++)
25
  {
26
    PORTC ^= (1<<LED); 
27
    _delay_ms(200);
28
    _delay_ms(200);
29
    _delay_ms(100);
30

31
  }
32
  PORTC |= (1<<LED);
33
  PORTC &= ~(1<<SELF_HOLD); // selbsthaltung lösen µC stromlos!!  
34
  return;
35
}
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
OP #2093890
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.
Gast #2093974
Lesenswert?

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

Mittlerweile BOOTRST nachgesehen ? Nicht daß der Bootloaderbereich ohne 
vorhandenen Bootloader angesprungen wird.
OP #2093996
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. :(
Gast #2094586
Lesenswert?

Timo P. schrieb:
> hier die geforderte hex-file

Dieses Hex enthält folgenden Code:
1
PORTA |= (1<<0);
2
  DDRA |= (1<<0) | (1<<1);
3
    _delay_ms(2000);
4
PORTA &= ~(1<<0)
5
  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

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