mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik testprgramm


Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ratber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

versuch mal angehängte HEX-Datei. Hab ich eben kurz getestet und
funktioniert.
#include <avr/io.h>

void wait(void);

int main (void)
{
  unsigned int i;
  
  DDRB=255;           // Ausgänge
  while(1)
  {
    PORTB=255;
    for(i = 0; i < 10; i++) wait();
    PORTB=0;
    for(i = 0; i < 10; i++) wait();
  }
   
  return 0;
}

//wartet ein paar ms
void wait(void)
{
  volatile unsigned int i;
  for(i=0;i<50000;i++);
}

Matthias

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

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

Also Regler und MC korrekt mit Keramik-Cs beschalten.

...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 32786 bytes ausgelesen ?

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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ich auch, obwohl es erst mein 5. beitrag ist :)

Klaus.

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.