Mikrocontroller spinnt?

Gast #1915641
Lesenswert?
• ▲
▼
Hallo!

Habe ein sehr seltsames Problem mit meinem ATmega16.

Habe ihn soeben mit einem total einfachen Programm programmiert:
1
#include <avr/io.h>
2
#include <utils/delay.h>
3

4
void main (void)
5
{
6
   DDRC = 0xFF;   //PortC als Ausgang schalten
7

8
   PORTC = 0xFF;
9
   _delay_ms(5000);
10
   PORTC = 0;
11

12
}

Was das Prog machen soll ist klar: Zunächst setzt es PortC als Ausgang. 
Danach soll PORTC auf HIGH gehen, 5 sekunden warten und anschließend 
soll PortC auf LOW gehen.

Da ich an den Ports die Basis der Transistoren (mit Basiswiderstand 
versteht sich) angeschlossen habe, an dessen Collectoren Relais 
(Steuerkreis) hängen, klackern sie seitdem völlig sporadisch hin und 
her. Weder ein 5 sekündiges Warten noch irgendein nachvollziehbares 
Ereignis tritt auf.

Habe nun die Spannungen direkt an den Pins des Port C vom Controller 
gegen Masse gemessen.
Direkt da treten die Probleme auf: Spannung schwankt eben wie sie gerade 
will.

An der Spannungsversorgung des Controllers kann es nicht liegen, da ich 
zusätzlich LEDs (die an Port D hängen) angeschlossen habe, die konstant 
"durchleuchten". Wäre es also die Spannungsversorgung, würden die ja im 
gleichen Takt wie die Relais flackern/klacken.

Kann es an der "delay_ms"-Funktion liegen? Habe nämlich einen 14,... 
MHz-Quarz an den Controller angeschlossen, da ich auch über den UART 
kommunizieren möchte. Aber jetzt erstmal möchte ich die Relais anständig 
zum Laufen kriegen :-(

Die Fuses habe ich für den Quarz übrigens auch auf "ext. Crystal" 
gesetzt.

Vielen Dank
Gast #1916104
Lesenswert?
• ▲
▼
@karlheinz:

Daran wird es wohl liegen, bin gerade in der Arbeit, werde es dann 
daheim testen.

Der PortC hat einfach herumgesponnen. Spannungen HIGH/Low-Pegel wie er 
gerade lustig war geschaltet.


Gruß
Gast #1917479
Lesenswert?
• ▲
▼
Hallo Leute,

habe es gerade getestet, habe das "JTAG disabled" (in den Fuses), 
allerdings hat es nicht zum gewünschten Effekt geführt :-(

Relais klackern immer noch wie sie gerade lustig sind.


Hier das Programm
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4

5
void main (void)
6
{
7
  DDRC = 0xFF;      // Relais als Ausgänge schalten
8
  DDRD = 0xFF;
9
  PORTD |= 0xC0;
10

11
  PORTC = 0;
12
  
13

14
  while(1)
15
  {
16
    PORTC =0xFF;
17
    _delay_ms(1000);
18
    PORTC = 0;
19
    _delay_ms(1000);
20
  }
21
}
Gast #1917482
Lesenswert?
• ▲
▼
soo...Jetzt kann ich den AVR (atmega16) nicht mal mehr programmieren :-(

Gerade noch geflasht, Compileroptimierung geändert, nochmal geflasht, 
dann die Meldung:

ISP Mode Error.....1/4 of the clock frequency.....


Hach macht das schon wieder Laune.


Könnt ihr mir weiterhelfen?
#1917484
Lesenswert?
• ▲
▼
Hallo Stefan,

ganz einfache und generell.

Wenn der Microcontroller (ob nun AVR oder PIC oder sonst was) mit seinem 
Programm fertig ist, dann macht er einen RESET

Darum folgender Aufbau wenn man wie du nur einmal die LED ausschalten 
möchte:


main(){
//dein Code = LED ausschalten
while(1){}
}

damit hängt der AVR in einer Endlosschleife und es wird kein Reset 
ausgelöst. => LED bleibt dauerhaft aus
Gast #1917488
Lesenswert?
• ▲
▼
Also...jetzt folgendes Resultat:


Habe soeben (nachdem ich ihn nicht flashen konnte) nochmal oben auf das 
"AVR"-Symbol geklickt. Anschließend auf den Reiter "Fuses".

DAnn war da komischerweise wieder der Haken bei "JTAG enabled" drin, 
obwohl ich ihn vorhin rausgemacht habe. Nun habe ich ihn erneut 
rausgemacht, siehe da, er führt den (bevor ich nicht mehr flashen 
konnte) Code korrekt aus.

Relais klacken genau im Sekundentakt.

ABER: ich kann ihn mit oben genannter Meldung nicht mehr flashen.


Woran liegt das?

" Programming Flash .... FAILED!"


Danke!
Gast #1917505
Lesenswert?
• ▲
▼
Stefan schrieb:
> while(1)
>   {
>     PORTC =0xFF;
>     _delay_ms(1000);
>     PORTC = 0;
>     _delay_ms(1000);
>   }

Hallo eine while schleife wiederholt solange bis die Bedingung falsch 
wird, 1 wird nie falsch =>


portc ein
warten
portc aus
warten
portc ein
.
.
.

<= klackern im sekunden takt

fz
Gast #1917510
Lesenswert?
• ▲
▼
Hi

>Stromversorgung abgezogen. Wieder angesteckt, Mikrocontroller macht
>garnix mehr LoL

>Die Relais klackern nur, solange der AVRISPmkII am ISP Connector steckt.

Wie sieht denn deine Hardware, besonders RESET-Beschaltung, aus?

MfG Spess
Gast #1917517
Lesenswert?
• ▲
▼
> Die Relais klackern nur, solange der AVRISPmkII am ISP Connector steckt.

Das kann an der Reset Leitung liegen. Hast du einen R von ~10k von der 
Reset Leitung nach Vcc????? Wenn nicht, dann mal schleunigst dranmachen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.