www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem AVR USB Lab mit Pollin Board


Autor: Martin K. (martin_100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Folgendes Problem:
Ich benutze den AVR Usb lab als STK500 und das Pollin Board über ISP.
Wenn ich aus AVR Studio heraus den ATmega8 flashen möchte passiert das 
ohne Fehlermeldung oder sonstigem ungewöhnlichen Aktionen. Auch kann ich 
die Signaturen usw. auslesen. Sobald er mit dem Flashen abgeschlossen 
hat tut sich allerdings auf dem Board nichts!

Mache ich nun das gleiche aus dem myAVR Programm heraus funktioniert 
alles ohne Probleme.

Komisch ist nur, dass ich ganz am Anfang alles auf einem Steckbrett 
hatte und ich dort ohne weiteres von AVR Studio heraus flashen konnte.

Programm aus AVR Studio heraus:
#include "avrlab.h"
#include "gpio.h"
int main(void)
{
  AvrLabInit();

DDRD = 0xFF;
PORTD = 0xFF;
  while (1)
    {
    //or here

      AvrLabPoll(); //must be called at least every 40 ms
                     //muss mindestens alle 40 ms aufgerufen werden
  }
}

Programm aus myAVR heraus:
#define   F_CPU 3686400  // Taktfrequenz des myAVR-Boards
#include  <avr\io.h>    // AVR Register und
main ()
{
  DDRD=0xFF;       //PortD auf Ausgang konfigurieren
  do
  {
    PORTD=0xFF;   // PortD High, LEDs on
  }
  while (true);    // Mainloop
}

Vielen Dank euch schon mal für eure Hilfe!

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du nach dem Flashen schon den ISP-Stecker abgezogen? Wenn das was 
ändert, dann nachschauen wie man einstellt, dass das Usb lab nach dem 
Programmieren die RESET-Leitung loslässt.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programm aus AVR Studio heraus:
#include "avrlab.h"
#include "gpio.h"
int main(void)
{
  AvrLabInit();

DDRD = 0xFF;
PORTD = 0xFF;
  while (1)
    {
     AvrLabPoll(); //must be called at least every 40 ms
                   //muss mindestens alle 40 ms aufgerufen werden
    }
}

das ist aber die firmware für das lab den den dort verbauten µC zu 
nutzen
also kein target
sondern nur AVR lab und steckbrett


zudem es glaube en problem mit dem pollinboard gab da der dort verlötete 
STK200 programmer immer mit dranhängt
kann sein das der was vermurkst

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gast schrieb:

> zudem es glaube en problem mit dem pollinboard gab da der dort verlötete
> STK200 programmer immer mit dranhängt

[Just for the records]
Auf dem Pollinboard ist kein STK200-kompatibler Programmer verlötet. Es 
ist ein einfacher serieller Bitbang-Programmer Typ ponyser iN 
AVRDUDE drauf.

Autor: Martin K. (martin_100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan B. schrieb:
> Hast du nach dem Flashen schon den ISP-Stecker abgezogen? Wenn das was
> ändert, dann nachschauen wie man einstellt, dass das Usb lab nach dem
> Programmieren die RESET-Leitung loslässt.

Nein, hat nichts gebracht.
Wie gesagt, gleiches Programm mit myAVR überspielt und es funktioniert 
optimal.

@gast
ich weiß, dass die AVRlabinit() z.B. für ne Steckbrettlösung ist - aber 
es funktioniert ohne diesen inits auch nicht.

was tun... :-/

ISP Geschwindgkeit ist auf 115,2kHz und Oszillator ist auf 1MHz intern

danke schon mal für eure Antworten

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin S. schrieb:

> Nein, hat nichts gebracht.
> Wie gesagt, gleiches Programm mit myAVR überspielt und es funktioniert
> optimal.

Welches Programm?

Das?
#include "avrlab.h"
#include "gpio.h"
int main(void)
{
  AvrLabInit();
  DDRD = 0xFF;
  PORTD = 0xFF;
  while (1)
  {
    // or here
    AvrLabPoll(); //must be called at least every 40 ms
                  //muss mindestens alle 40 ms aufgerufen werden
  }
}

oder das?
#define   F_CPU 3686400  // Taktfrequenz des myAVR-Boards
#include  <avr\io.h>     // AVR Register und
main ()
{
  DDRD=0xFF;       // PortD auf Ausgang konfigurieren
  do
  {
    PORTD=0xFF;    // PortD High, LEDs on
  }
  while (true);    // Mainloop
}

Für mich sehen beide Programme unterschiedlich aus. Die Unterschiede 
sind in den Zeilen

>  AvrLabInit();
>  AvrLabPoll(); //must be called at least every 40 ms

Diese Zeilen dienen beim Programm #1 dazu den Atmega8 auf dem USB AVR 
Lab (!!!) anzusprechen, wenn man das USB AVR Lab als 
Entwicklungsplattform benutzt.

Wenn man das USB AVR Lab als Programmieradapter benutzt, so wie du 
indem du die STK500v2 aufgespielt hast und damit einen AVR auf einem 
angeschlossenen Pollin-Board programmierst, dann machen diese Funktionen 
keinen Sinn.

Ich vermute der Hänger des Pollin-Boards ist darauf zurückzuführen, 
dass die AvrLabInit(); hängt. Die Sourcen finde ich im Moment nicht und 
in die EXE-Installation mag ich nicht reinschauen.

Ist aber auch nicht nötig - wenn du einen AVR auf dem Pollin-Board 
programmieren willst, gehe auch im AVR Studio so vor wie im 2. Beispiel. 
Lasse die USB AVR Lab spezifischen Teile einfach weg.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Add: Die Sourcen kann man online einsehen:
http://usbavrlab.svn.sourceforge.net/viewvc/usbavr...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die averinit und avrpoll sind für das lab .. da dieser µC direkt am usb 
hängt  brauch das lab dise routinen ...

Autor: Martin K. (martin_100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten. Habe jetzt alles nochmal durchprobiert.
Mit den inits für das lab und ohne die inits. Hab auch die Libary von 
dem  avrlab neu eingespielt. Hilft alles nichts.

Was ich nicht verstehe - laut Schaltplan vom Pollinboard hab ich über 
ISP eine 1:1 Verbindung wie wenn ich ein Steckbrett verwenden würde. 
Wäre es anders oder beschaltet dürfte es ja auch dem myAVR heraus nicht 
funktionieren.

In myAVR benötige ich ja diese lab inits auch nicht. Wo ist da also der 
Unterschied?

mfg

Autor: Martin K. (martin_100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... hat keiner mehr eine Idee, was ich noch ausprobieren könnte, damit 
ich wieder aus dem AVR Studio heraus flashen kann?

mfg

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin S. schrieb:

> Ich benutze den AVR Usb lab als STK500 und das Pollin Board über ISP.

Hast du beachtet, dass die Firmware des USB AVR Lab ein STK500v2 
kompatiblen Programmer darstellt und kein STK500-kompatibler Programmer?

Hast du schon Kreuzversuche gemacht? Also eine mit myAVR erstellte 
HEX-Datei mit AVR Studio flashen oder eine mit AVR Studio erstellte 
HEX-Datei mit myAVR flashen? Vielleicht stimmt die Erstellung der 
Hex-Datei unter AVR Studio nicht und der Atmega8 kann mit der Datei nix 
anfangen...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mir ist noch immer nicht klar warum du , wenn das USB LAB  flashen soll 
die avrlab.h einbindest  in das projekt ????

dein zel hat nichts mehr mit dem AVR lab gemein ..

die avrlab-h und die dazugehörige avrlabinit sind fiunktionen FÜR das 
lab selbst
um eine eigene firmware für das lab zu erstellen und/oder miniprojekte 
mit dem steckbrett ohne anderen µC zu realisieren



da du ja das pollinboard dranhast  ist DORT dein ziel .. und der µC der 
was machen soll


du nimmst das AVRlab tool und spielt die AVR ISP MKII oder die STK500V2 
firmware auf
im AVR studio auf connect und entsprechend auswählen

in deinem folgendem programm hat das NICHTS mit dem lab zu tun


nur das :

#define   F_CPU 3686400
#include  <avr\io.h>

int main (void)
{
  DDRD=0xFF;       // PortD auf Ausgang konfigurieren
  PORTD=0xFF;    // PortD High, LEDs on
  while (1);    // Mainloop
  {

  }
return 0;
}

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit diesem :

#include "avrlab.h"
#include "gpio.h"
int main(void)
{
  AvrLabInit();
  while (1)
  {
    AvrLabPoll(); //must be called at least every 40 ms
                  //muss mindestens alle 40 ms aufgerufen werden
  }
}


erstellt man für das lab eigene firmware und kann so die software USB 
schnitstelle nutzen sowie die freien I/Os
es ist dann kein wieterer µC erforderlich

Autor: Martin K. (martin_100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also:

habe jetzt das:

#define   F_CPU 3686400
#include  <avr\io.h>

int main (void)
{
  DDRD=0xFF;       // PortD auf Ausgang konfigurieren
  PORTD=0xFF;    // PortD High, LEDs on
  while (1);    // Mainloop
  {

  }
return 0;
}

einmal bei AVR Studio und einmal bei myAVR 1:1 reinkopiert.
Aber nur aus dem myAVR heraus funktioniert es.

Autor: Martin K. (martin_100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So,jetzt...

Mich hats jetzt doch soweit genervt, dass ich alles was mit AVR, 
Treiber, usw... zu tun hatte deinstalliert habe. Alle Versionen neu 
heruntergeladen und installiert... jetzt gehts!
Ich weiß absolut nicht was sich da überschlagen hat...

Danke euch auf jeden Fall für euren Support!!!

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Puh, da bin ich aber wirklich happy ;-)

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.