Forum: Mikrocontroller und Digitale Elektronik testprgramm


von chris (Gast)


Lesenswert?

hallo,

ich haben nach dem vorbild von AVR-Tutorial eine LED an PortB1 meines
ATMega32 angeschlossen.
Dazu dieses Programm geschrieben.
Aber die LED leuchtet nicht, weder bei PORTB=0; noch bei PORTB=255;
Kann mir jemand einen Tipp geben?
Zwischen GND und dem Pin am Port B messe ich immer 4V, egal ob PORTB=0
oder 255.
Der Prozessor wird von meinem PC erkannt:
per uisp -dprg=stk200
->AtMega32 found
beschreiben und löschen geht auch ohne Fehler.

#include <avr/io.h>
int main (void)
{
  DDRB=255;           // Ausgänge
  while(1)
   {
     PORTB=255;
     //PORTB=0;
   }
  return 0;
}

Danke
   Chris

von Bolle (Gast)


Lesenswert?

Hast Du Dir schon die "AVR-Checkliste" hier zu Gemüte geführt?  Wenn
nicht, solltest Du die mal durchgehen.  Du findest sie links im
Hauptmenü dieser Site unter "Artikel".

von chris (Gast)


Lesenswert?

die liste hab ich durch.

was ich nicht verstehe:
chris@linux:~/atmega32/1> uisp -v -dprog=stk200
AVR Direct Parallel Access succeeded after 31 retries.
Atmel AVR ATmega32 is found.
Warum erst nach 31 retries ?

und bei
chris@linux:~/atmega32/1> uisp -v -dprog=stk200 --erase --upload
if=rom.hex
AVR Direct Parallel Access succeeded after 31 retries.
Atmel AVR ATmega32 is found.
Erasing device ...
Reinitializing device
AVR Direct Parallel Access succeeded after 31 retries.
Atmel AVR ATmega32 is found.
Uploading: flash
#####
(total 158 bytes transferred in 0.15 s (1046 bytes/s)
Polling: count = 2, min/avg/max = 4.77/4.79/4.81 ms

also 158 bytes übertragen.
aber wenn ich
chris@linux:~/atmega32/1> uisp -v -dprog=stk200 --download of=test.hex
AVR Direct Parallel Access succeeded after 31 retries.
Atmel AVR ATmega32 is found.
Downloading: flash
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
######################################################################## 
#################
(total 32768 bytes transferred in 27.86 s (1176 bytes/s)

32786 bytes ausgelesen ?

hab mir die fusebits und lock bits angeschaut , aber die sind alle im
auslieferungszusandt.
  chris

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

welcher Programmer? Pegel des Reset-Pins? Mal den Programmer abgezogen?
Pull-Up (10k) am Reset? Mal avrdude (neuer und besser gepflegt)
ausprobiert?

Matthias

von chris (Gast)


Lesenswert?

hallo,
hab stk200 dongle, Pegel am Reset Pin ist 5 V,
10k Pull-Up hab ich .. nein AVRDUDE hab ich nicht ausprobiert.
Was ich aber gemacht habe:
Verher hab ich ja das in Linux gemacht, jetzt bin ich in Windows.
Also Windows jetzt
Hab PonyProg2000 installiert.Da kann mein ATMega32 ausgelesen werden(es
werden keine Fehler gemeldet)
Dann hab ich WinAVR instelliert.
mit dem Programmers Notepad eine Datei:
test.cc geschrieben
Inhalt test.cc:
# include <avr\io.h>
int main(void)
{
  DDRB=255; // Ausgänge

  while(1)
   {
     PORTB=0;
   }
  return 0;
}

in der Eingabeaufforderung:
C:\WinAVR\Progs>avr-gcc -g -mmcu=atmega32 test.cc
test.cc:12:2: warning: no newline at end of file

also noch alles ok , oder ?

dann
C:\WinAVR\Progs>avr-objcopy a.out rom.hex
BFD: a.out: warning: Empty loadable segment detected, is this
intentional ?

wenn ich dann die rom.hex per PonyProg zum Controller übertrage geht
natürlich nix.
Hilfe wilkommen
  Chris

von Ratber (Gast)


Lesenswert?

>-dprog=stk200 AVR Direct Parallel Access succeeded after 31 retries.


-Zu schnell Programiert
-Zu lange Leitung
-Zu schlecht geschirmte Leitungen
-Zu weinig geblockte Komponennten (Spannungsregler,Controller und
andere Komponennten ohne 100nF)

Check das mal

von Μαtthias W. (matthias) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi

versuch mal angehängte HEX-Datei. Hab ich eben kurz getestet und
funktioniert.
1
#include <avr/io.h>
2
3
void wait(void);
4
5
int main (void)
6
{
7
  unsigned int i;
8
  
9
  DDRB=255;           // Ausgänge
10
  while(1)
11
  {
12
    PORTB=255;
13
    for(i = 0; i < 10; i++) wait();
14
    PORTB=0;
15
    for(i = 0; i < 10; i++) wait();
16
  }
17
   
18
  return 0;
19
}
20
21
//wartet ein paar ms
22
void wait(void)
23
{
24
  volatile unsigned int i;
25
  for(i=0;i<50000;i++);
26
}

Matthias

von chris (Gast)


Lesenswert?

was heißt zu schnelle Programmierart?
Leitung ist ein Falchbandbkabel ca 40 cm, führt zu meinem Stechboard,
auf dem Steckboard ist erst das stk200 aufgebaut.
muss ich zwischen jeden Vcc und GND 100nF keramik Kondensator? (
74HCT244 ? un MC ? ) ich dachte ich hab einen bei der schaltung mit
7805 das es reicht ?
 chris

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

die 31 retries können schon passieren wenn der Programmer die
Reihenfolge von Reset und SCK-Flanken nicht ganz einhält. Denn bemerkt
der AVR eine SCK-Flanke wo keine gedacht war und synchronisiert sich
erst nach 31 Versuchen auf den SPI.

Matthias

von chris (Gast)


Lesenswert?

hi Matthias,
danke für die Mühe.
Habs mit PonyProg auf den controller gespielt.
Meine LED tut aber nix. Wenn ich zwischen GND und einem PORTB Pin die
Spannugn messe ists immer 4.92V unverändert.
Hab es auch gleich nochmal gedownloaded, das flashen hat
funktioniert.Muss ich den STK200 abstecken ?
  chris

von chris (Gast)


Lesenswert?

muss wohl irgendwo ein Fehler in der Schaltung haben.
Ich werds nochmal richtig durchschauen.
dann meld ich mich nochmal ;-)
Achja, hab einen dummen Fehler gemacht.
Reset Pin ist auf 2.0 V? 10kOhm PullUp , 100nF Kondensator hab ich
drin.
  Chris

von chris (Gast)


Lesenswert?

Die LED blinkt.
ABER : ich hab weis nicht warum.
ich hab den 100nF zischen GND und RESET raus, außerdem
Spannungsversorgung 12V abgeklemmt!
Dh meine schaltung wir vom parallel Port mit Strom versorgt.
Die LED hab ich jetzt zwischen GND und ein PORTB Pin geklemmt.
Ich versteh hinten und vorne nichts mehr.
Wenn ich den parrPort-Stecker rauszieh und die 12V anleg tut sich
nix.Naja ich werds wohl noch mal von vorne aufstecken.
Danke
chris

von Hannes L. (hannes)


Lesenswert?

Dann schwingt dein Spannungsregler und der MC kommt nicht aus dem Reset
raus.

Also Regler und MC korrekt mit Keramik-Cs beschalten.

...

von Rolf Magnus (Gast)


Lesenswert?

> 32786 bytes ausgelesen ?

Und? Ein ATmega32 hat doch 32k Flash. Wieviel hättst du denn erwartet?

von chris (Gast)


Lesenswert?

hallo

@ HanneS
ja, danke. Habs jetz auch rausgefunden.Den 10k Widerstand durch 7,5k
ersetzt,jetzt gehts.


@Rolf Magnus
ich hätte 158 bytes, soviel wie ich reingeladen hab.

 chris

von Hannes L. (hannes)


Lesenswert?

Wenn 10k am Reset nicht geht, dann hast du vermutlich irgendwelchen
"Müll", den deine Resetleitung als Antenne einfängt und dadurch Reset
auslöst. Dies kann auf der Betriebsspannung oder "in der Luft" sein.
Ein Oszilloskop könnte das aufklären.

...

von Klaus (Gast)


Lesenswert?

@327undsoviel bytes: der programmer ließt immer alles aus, auch die
"FF`s", also leere speciherzellen...

ich habe ebenfalls 15k zwischen reset und +5V, halte dich mal GANZ
GENAU an das datenblatt eines 7805 und verwende 12v oder 9v batteriespg
zum ersten test!

Klaus.

von chris (Gast)


Lesenswert?

hab leider kein oszi.
eigentlich hab 12 V von einem Computer Netzteil
(die Schaltung ist gleich wie im AVR-Tutorial)
Meine Boebachtng mit RESET hab ich im Thread hier genauer beschrieben.
http://www.mikrocontroller.net/forum/read-1-235240.html#new

chris

von Hannes L. (hannes)


Lesenswert?


von chris (Gast)


Lesenswert?

hmm,
hab jetz wieder 10k drin.
Es funktioniert.
Der Strom schwankt jetzt zwischen 14mA(LED an ) und 8 mA (LED aus).
Danke für die ganzen tipps.
Das Forum weis ich wirklich zu schätzen.
  Chris

von Klaus (Gast)


Lesenswert?

...ich auch, obwohl es erst mein 5. beitrag ist :)

Klaus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.