www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom / ATMega16 Problem Einsteiger


Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
nun ich hab folgendes Problem und hoffe ihr könnt mir weiterhelfen, da 
ich noch ein Einsteiger bin. Nun ich habe eine Schaltung mit dem 
ATMega16 aufgebaut 
(http://www.roboternetz.de/wissen/images/3/3c/Avrtu...) 
und mir ein ISP AVR programmierkabel bei ebay gekauft (selbstgebautes 
funktionierte nicht ;( ) naja, jetzt hab ich mittlerweile Zugriff auf 
den AVR aber mein Programm funkioniert nicht! ich will einfach nur eine 
LED einschalten!

$regfile = "M16def.dat"
$framesize = 16
$swstack = 16
$hwstack = 16
$crystal = 1000000

Config Portc.0 = Output     'Ein Pin wird aus Ausgang konfiguriert PC0 
(also Pin0 von Port C)

Portc.0 = 1               'Pin wird auf High, also 5V geschaltet

End

Die Led ist an PC0 und natürlich GND angeschlossen.
In Basecom hab ich die Optionen alle eingestellt (STK 200/300) usw halt, 
wiegesagt kann ihn lesen usw. Aber ich muss ihn jedesmal im programmer 
neu auswählen und kann ihn auch nicht identifizieren :( hab echt alles 
probiert ich hoffe ich könnt mir kurz helfen, wäre echt nett.

Mfg
Lenox

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Problem ist also nicht dein Code, sondern der AVR selbst (im 
Zusammenhang mit Bascom und den Programmer).

Was für ein Teil benutzt du denn? Hast du den Link zu Ebay oder andere 
brauchbare Daten?

>$crystal = 1000000
Wie kommst du auf diesen Wert?
Hast du die Fusebits auf eine externe Taktquelle umgestellt?

Wieviel mA zeiht die LED? Hast du da noch einen Widerstand zwischen?

Autor: Marc Meise (bytewood) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal unter Options-Programmer, ob was bei Dir als Ardesse für den 
Parallelport für den STK200/300 steht.
Bei den meisten PCs geht 378. Wenn Du ein Notbook verwendest, dann hast 
Du gute Chancen mit 3BC.

Unter Options-Compiler-Chip musst Du Deinen uC heraussuchen.

>$regfile = "M16def.dat"
Schön, dass das drin steht, muss aber nicht, wenn Dein Chip in 
Options-Compiler-Chip drin steht.

>$framesize = 16
>$swstack = 16
>$hwstack = 16
...verändert die Standardwerte, die unter Options-Compiler-Chip drin 
stehen.
Nimm die Standardwerte, d.h. lass diese 3 Zeilen einfach weg.

>$crystal = 1000000
...ist hier völlig egal, kannst weglassen.
Ist nur dann wichtig, wenn der UART verwendet werden soll.
Im Auslieferungszustand sind übrigens alle AVRs mit internem R-C Takt 
eingestellt.

Kurzum, der gesamte Overhead ist nichts nütze.
Der Overhead ist nur dann wichtig, wenn die Standardwerte 
(Options-Compiler-Chip) nicht genommen werden sollen.
Das was im Quelltext steht wird compiliert, ist da nichts, dann werden 
die Werte gemäß Options-Compiler-Chip etc. hergenommen.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Unter Options-Compiler-Chip musst Du Deinen uC heraussuchen.

wird mit

>$regfile = "M16def.dat"

automatisch überschrieben. Egal was man da eingestellt hat. Genauso mit 
Stack, Crystal, Baud, ...
Die Direktiven stehen über den Compilersettings.

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

danke erstmal für eure Hilfe!!
hab auch direkt probiert, also nur

Config Portc.0 = Output                                     'Ein Pin 
wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)

Portc.0 = 1                                                 'Pin wird 
auf High, also 5V geschaltet

End

Aber dann bekomm ich 2 Erorrs
1. Varibale can not be uset with SET (DDRC)
2. Invailed datatype beim portc

Hab ich vielleicht mal ein Beispielcode um die LED an PC0 anzuschalten?
1 K Wiederstand ist vorgeschaltet. Der Programmieradapter von ich ebay 
ist folgender
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&ih=00...

MFG
Lenox

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lennox,

mit Bascom kannst Du doch ganz einfach dein erstelltes Programm 
simulieren......

gruß

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  Bobbelsche,

da ich kein Einsteig hab komm ich erst garnicht zum lernen!
kannst du mir nicht einfach mal ein code für den Meta16 schreiben der 
die LED an PC0 einschaltet? Dürften ja nur ein paar Zeilen sein.. Achja 
ich verwende  noch den internen takt, hab aber ein 16 MHz Quarz noch 
hier liegen, aber dazu muss ich ja die Fusebits umstellen deshalb hab 
ich es vorerst noch gelassen. Ist das normal das ich den Chip nicht 
"identifizieren" kann? bekomm dann imemr nen Fehler.

Mfg
Lenox

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der Parallelport denn richtig eingestellt? (Siehe Frage von Marc 
Meise)
Welches Betriebssystem verwendest du?
Was ist jetzt eigentlich dein Problem? Der Programmcode oder das die 
Hardware nicht erkannt wird?
Hast du evtl einen Druckertreiber installiert, der auch versucht den LPT 
zu nutzen?
Wenn du XP hast, hast du einen LowLevel Porttreiber installiert?
Wie kommst du auf Crystal=10000000?
Hast du die Lock- und Fusebits verändert? Wenn ja, welche auf was?
...

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange du den Chip nicht identifizieren kannst, ist der Programmcode 
unwichtig. Und das es nicht geht ist logischerweise nicht normal!

Wenn du die Fusebits nicht umgestllt hast muss es $Crystal=8000000 
heissen.
Aber das ist bei deinem Programm nicht ausschlaggebend.

Wie wäre es mal hiermit: http://www.rowalt.de/mc/index.htm
Dann kannst du das Programm auch selbst schreiben.

Hast du die Spannung VCC am AVR mal gemessen?

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unter "options-compiler-chip" m16def.dat einstellen....
dann diese Zeilen hier compilieren, und auf den Mega16 übertragen.
Die LED an Port B1 blinkt jede Sekunde.


$crystal = 1000000
Config Portb.1 = Output

Portb.1 = 0

Do
Portb.1 = 1
Waitms 100
Portb.1 = 0
Waitms 100
Loop


Gruß.

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habs nochmal probiert (mit deinem Proggry),
hab die Einstellungen auch übernommen.

Complimiert.
Run Programmer.
Dann kommt ein Fehler "
Could not identify chip with ID:000000" dann
"Select chip and target chip do not match AT90S2313 <> Atmega16"

ich benutze Win XP mit SP2, was für ein LowLevel Porttreiber? Spannung 
am AVR liegt an (Spannungsregler mit Kondensatoren vorgeschaltet, extakt 
5 V.

Mfg
Lenox

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die von Dir beschriebene Bascom-Meldung kommt, ist entweder kein 
oder
ein defekter Programmer angeschlossen.

Autor: Bobbelsche (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Lenox

hab das Programm auf Port B0 umgeschrieben, und statt 100ms nun die
Blinkfrequenz auf 1 sek. korrigiert.
Bascom-File im Anhang.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die LED an Port B1 blinkt jede Sekunde.
Sorry, tut sie nicht.
Weil Crystal nicht stimmt und 100mS 0,1Sekunde ist und keine ganze ;)

>unter "options-compiler-chip" m16def.dat einstellen....
Dann muss man aber auch so kensequent sein und da die Taktfrequenz und 
alles andere auch einzustellen.

Man sollte sich angewöhnen, alles was geht im Programmcode einzustellen.
Das Problem ist folgendes:
Heute schreibt man ein Programm für einen M16. Compiliert es, probiert 
es aus und alles ist gut.
Morgen steckt man einen M32 auf's Board, ändert noch eine Kleinigkeit 
und compiliert neu. Aber das compilierte ist immer noch für einen M16 
und nicht für den M32! Man hat es einfach übersehen.

Bascom wird zwar meckern und fragen was man denn für ein Volli.... ist.
Aber spätestens wenn das Programm mal veröffentlich wird, damit andere 
es auch nutzen können oder andere Fehler suchen sollen, geht das große 
Raten los. Was für einen AVR benutz er?

Schlimmer ist es aber noch mit der Taktfrequenz und den Stacks.
Ein wintzig kleines Programm hat kein Platz für Variablen, weil der 
Stack für ein anderes Programm noch viel zu hoch eingestellt war. Da 
meckert Bascom nicht!
Ein waitms 100 dauert auf einmal 120mS. Für ein blinken nicht schlimm, 
aber die Zeiten können auch mal wichtige Funktionen übernehmen. Wenn der 
AVR mit 16MHz läuft aber man hat ihn für ein anderes Projekt in den 
Settings noch auf 8MHz stehen, geht alles auf einmal doppelt so schnell.
Mal ganz davon abgesehen, das das Timing für RS232 absolut nicht mehr 
passt!

Jeder kann natürlich so verfahren, wie er möchte. Das will ich niemanden 
vorschreiben.

Aber einen Anfänger zu raten was in den ettings einzustellen ohne das er 
weiss, was das bewirkt und wie da überhaupt die Zusammenhänge sind finde 
ich verantwortungslos.

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marco,

hatte meinen Fehler mit den 100ms erkannt und dies auch gepostet.
....wahrscheinlich eine Überschneidung.

Lenox will sich möglicherweise erst in die AVR einarbeiten. Und da ist
es doch schön, wenn man schon mal ein kleines Erfolgserlebnis hat.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will nicht meckern, aber waitms 1000 erzeugt einen kleineren Code 
(weniger Speicherbedarf) als Wait 1.

Lenox, was für ein Board verwendest du für den M16?
Ein gekauftes oder selbstgebautes?
Gehen VCC und GND auch zum Programmieradapter?
Sicher, das alles richtig verdrahtet ist?

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so habs probiert, musste wieder den Atmega16 in dem Pulldown menü 
auswählen, den Chip löschen ging (laut anzeige) aber flash schreiben 
wiederrum nicht "Write buffer to Flash ROM" der macht einfach nichts, 
wenn ich dann abbreche ließt er schnell und zeigt "Difference at 0000" 
an. "Red flash ROM into buffer " geht aber bekomm nur Nullen. Bin echt 
ratlos... :( Was für ein Treiber meintest du? geht aber auf meinem 
Laptop (WIN 89) auch nicht. PonyProg gibt mir "Communication Port not 
available (-16) als Fehler.

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Programmieradapter nutzt du?

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens brauchst Du keinen Porttreiber.....

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...unter "OPTIONS-Programmer" den passenden Programmer auswählen !

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du denn einen solchen Programmer ?
Ansonsten mit den Einstellungen experimentieren.

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja kla den hab ich ja hier! ich weiß nicht was ich einstellen soll, hab 
folgendes gemacht
http://www.roboternetz.de/wissen/index.php/Bascom_...
und jetzt halt noch unter "options-compiler-chip" m16def.dat 
eingestellen.

Autor: Bobbelsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast Du evtl. Skype ? Dann könnte man sich unterhalten. Mache jetzt 
Feierabend. Ab Mittwoch guck ich wieder hier rein.

Bis bald.

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kla grade nicht installiert aber ist kein Problem, icq skype msn alles 
Hauptsachte ich bekomm das mal hin, ist echt sehr Ärgerlich ;) wollte 
jetzt auch mal Schluss machen für Heute. kannst mir ja dein Skype 
Nickname o.ä. mal zukoommen lassen wäre sehr nett.

Bis bald
Lenox

Autor: Marc Meise (bytewood) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lenox
Mal angenommen, dass Dein Programmer i.O. ist, solltest Du folgendes 
überprufen:
1) BASCOM braucht den Parallelport im ECP-Mode, in der 
Windows-Systemsteuerung-System-Hardware-Gerätemanager-Anschlüsse
kontrollieren, ob LPT als ECP eingestellt ist und was die LPT-Adresse 
ist.
2) wenn EPP oder was anderes angezeigt wird: Ins BIOS gehen und den 
Parallelport auf ECP einstellen, dann klappt es auch mit dem ISP (bei 
mir geht es z.B. nur auf ECP)

Sonst (nach 2 Minuten Googeln):
http://www.roboternetz.de/wissen/index.php/RN-Boar...

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Config Portb.1 = Output"

muss

config PINB.1 = output heissen

Beste Gruesse

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke erstmal, der LPT Anschluss ist erkannt und die Adresse stimmt 
auch. Kann allerdings als "Ressourcenmöglichkeiten" folgendes eistellen:
1. Interrup möglichst nie verwenden
2. Interrup nie verwenden (eingestellt)
3. Jeden dem Anschluss zugewiesenen Inerrup verwenden
und dann kann ich noch eine "Legacyererkennung für plug & Play 
aktivieren"
So ich guck jetzt aber nohmal im BIOS nach!

Mfg
Lenox

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So hab jetzt von Normal auf ECP eingestellt.
Dann gibt es noch folgende Einstellmöglichkeiten:
ECP DMA:
1. DMA0
2. DMA1
3. DMA2
4. DAM3 (eingestellt)

und parallel Port IRQ:
1. IRQ5
2. IRQ7 (eingestellt)

kann ihn noch immer nicht identifizieren, auch nicht mit Ponyprog

Autor: André K. (andre-)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ansonsten mal im Geraetemanager schauen, was bei dir an der rot 
markierten Stelle steht. Dieser Wert muss in den Bascom Einstellungen 
bei "LPT-address" rein. So wie auf dem Bild sollte es bei den meisten 
aussehen, aber bei dir koennte u.U. irgendein exotischer Wert dastehen.

Beste Gruesse

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Adresse usw stimmt, aber hab grad etwas erschreckendes herausgefunden, 
die Steckerbelegung der programmieradapters ist genau umgekehrt!!!! 
Stand extra dabei aber hab mic hgrad gewundert warum an einem Pin Kein 
GND war, es war AVV, hab daraufhin alle überprüft, der Stecker wurde 
wohl genau falschrum angebracht, klasse jetzt war natürlich alles falsch 
angeschlossen ;( habs direkt umgebaut, aber geht noch imemr nicht, ist 
jetzt vllt schon der Chip kaputt? war wirklich alles vertauscht, GND Mit 
VCC MOSI RST SCK MISO alles andersrum, oh man ey wie kann man sowas nur 
verkaufen 8die lötstellen sehen aus wie schelcht per hand gelötet, das 
gibt ne tolle Bewertung, bin echt n bisschen sauer :(.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>oh man ey wie kann man sowas nur
>verkaufen 8die lötstellen sehen aus wie schelcht per hand gelötet,

Was erwartest du???
Schau dir mal den Preis an. Schau dir mal den Preis für den Bausatz an.
Schau dir mal die Werbung auf der Ebay-Seite an.
Überleg selbst mal, was das Material kostet, wieviel Lohn man haben will 
und bedenke den logistischen Aufwand.

Außerdem habe ich gestern schon gefragt, ob alles richtig angeschlossen 
ist!

Autor: Lenox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja aber den Wannenstecker falsch auf das Flachbandkabel printen ist 
schon n blöder Fehler, naja jetzt steht ich da.. alles könnte kaputt 
sein nur ich weiß nicht was. Ja ich hatte die Schaltung überprüft aber 
nicht den Programmieradapter, ich ging davon aus das sowas überprüft 
wird. Oh man

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.