Autor |
Probleme beim AVR programmieren |
|
|
|
|
BID = 421249
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
|
Ich hab ein blödes Problem:
Ich will anfangen mich mit AVR zu beschäftigen. Um einen Atmega8 zu programmieren hab ich jetzt den Adapter von roboternetz.de nachgebaut: http://www.roboternetz.de/wissen/images/6/6b/Ispschaltplan.gif
Leider sind die Pins an der Sub-D Buchse nicht die selben wie am "Wannenstecker" . Ergebnis: Falsch gelötet
Ich hab jetzt den Adapter korrigiert, aber schaffe es immer noch nicht den Atmega8 zu programmieren (div. Beispielprogramme von roboternetz.de probiert), dazu kommt vielleicht noch ein Topic wenn ich den Fehler nicht finde.
Ich bin mir nicht sicher ob der Atmega8 den falsch angeschlossenen Adapter überlebt hat. Stromverbrauch ist 0mA, mein Multimeter ist da nicht sehr genau. Wie kann ich testen ob der µC noch funktioniert ohne ihn programmieren zu müssen?
Ich hab leider kein Ersatz da um ihn auszutauschen
Bitte keine Kommentare à la "hättest besser aufpassen müssen", ich will nur den Fehler eingrenzen und es schaffen meinen AVR zu programmieren
[/Edit] Titel auf Wunsch von bastler16 geändert
[ Diese Nachricht wurde geändert von: Jornbyte am 19 Mai 2007 22:51 ] |
|
BID = 421252
Jornbyte Moderator
Beiträge: 7196
|
|
Zitat :
| Bitte keine Kommentare à la "hättest besser aufpassen müssen" |
Nö Nö
Ist der mega8 richtg rum in der Fassung? Bekommt er Spannung? Ist die Schaltung genau geprüft (Durchgang / Kurzschluss)? Ist ein Takt am mega8? Ist ein 100n an den Versorgunspins? Wie ist der reset beschaltet?
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten. |
|
BID = 421255
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
>Ist der mega8 richtg rum in der Fassung?
Ja, ich hab das ganze auf Steckbrett getestet.
>Bekommt er Spannung?
5V über 7805
>Ist die Schaltung genau geprüft (Durchgang / Kurzschluss)?
Auf dem Steckbrett ist alles OK, den Programmieradapter hab ich nochmal gemessen, alles OK.
>Ist ein Takt am mega8?
Nein, laut Datenblatt hat der einen internen Takt
>Ist ein 100n an den Versorgunspins?
Ja
>Wie ist der reset beschaltet?
10k gegen Plus
|
BID = 421261
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Welche Programmiersoftware nutzt du?
Welche Fehlermeldungen werden ausgespuckt?
Was exakt war am Adapter falsch angeschlossen?
_________________
|
BID = 421271
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
Eigentlich wollte ich nur wissen wie ich meinen Atmega8 testen kann
Aber das eigentliche Problem muss ja auch noch gelöst werden.
Also (Ich machs mal stichpunktartig, das wird nicht so lang):
-Ich nutze die Bascom-Demo Version 1.11.8.3
-Ich hab die Pinnummern am Sub-D Stecker (s. Schaltplan) für den "Wannenstecker" übernommen.
-Fehlermeldungen:
"Could not identify chip with ID:FFFFFF" (bevor ich die falschen Verbindungen bemerkt und korrigiert hab war die ID 000000)
und danach
"Selected Chip and target chip do not match AT90S2313 <> ATmega8".
-Für den LPT1 ist im Bios ECP eingestellt, Adresse ist Standart 378.
Ich vermute entweder:
-der Atmega8 ist
-der Treiber 74hc244 ist (dafür hab ich Ersatz wenn die Reicheltbestellung ankommt, hab leider vergessen einen weiteren mega8 zu bestellen )
-der LPT-Port ist ungeeignet.
Ich hab halt noch keine Ahnung von dem ganzen Kram.
Messmittel: DMM, Oszilloskop
---
@Jornbyte: Du bekommst gleich Post
|
BID = 421277
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Den Schaltplan kann man nicht ansehen.
Überleg dir nochmal, ob du dir wirklich Basic antun willst.
Ich würde dir wärmstens C empfehlen.
---
Ist der Programmer denn überhaupt kompatibel mit dem BASCOM-Programmiertool?
_________________
|
BID = 421282
Max Power Gesprächig
Beiträge: 157 Wohnort: Aadorf (CH)
|
Ich kenne zwar Bascom nicht, aber wenn ich diese Fehlermeldung richtig interpretiere: "Selected Chip and target chip do not match AT90S2313 <> ATmega8", dann hat er doch einen ATmega8 erkannt, aber ausgewählt wurde ein AT90S2312. Oder sehe ich das falsch?
|
BID = 421284
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
Warum kann man sich den Schaltplan nicht ansehen?
Zitat :
| Überleg dir nochmal, ob du dir wirklich Basic antun willst.
Ich würde dir wärmstens C empfehlen. |
Was hast du gegen Basic? (du programmierst in Assembler wenn ich mich richtig erinnere oder?)
Sicherlich nicht die effizienteste Sprache, aber für den Anfang probier ich es damit. Wenn ich etwas mehr Ahnung von der Materie hab kann ich mir C ja mal anschauen.
Zitat :
|
Ist der Programmer denn überhaupt kompatibel mit dem BASCOM-Programmiertool? |
Also laut Roboternetz.de ist er das. Ich hab mich an das Tutorial gehalten, nur eben mit dem Mega8 (hab die entsprechenden Pins im Netz nachgeschaut), der ist preiswerter.
http://www.roboternetz.de/wissen/in.....macht
http://www.roboternetz.de/wissen/in.....ragen
@Max Power
Also von "AT90S2312" hab ich noch nie was gehört oder angeklickt... Ich werd mal sehen ob ich eine deutsche Hilfedatei für Bascom finde (aber erst morgen, is schon spät *gähn*).
EDIT:
Ich hab noch einen Attiny12 gefunden (woher auch immer), werd damit mal basteln.
EDIT2:
Mir ist noch was eingefallen. Die Fuses hab ich nicht angefasst, wenn ich auf den Reiter im Programmer klicke kommt "READLB entry not found".
[ Diese Nachricht wurde geändert von: bastler16 am 10 Apr 2007 22:55 ]
|
BID = 421334
Dombrowski Stammposter
Beiträge: 450
|
Moin.
Link/Bild: Es funktioniert nur Rechts-Klick und "Link speichern unter..." (oder je nach Browser). Direkt/Links-Klick geht nicht. Und das herunter geladene Bild ist dann auch wirklich scharf im Gegensatz zum Wiki-Bild bei roboternetz.de.
Der LPT Mode soll SPP (Standard Printer Port) sein. Wenn ECP unbedingt bleiben soll, dann im Extended Control Register (ECR) auf Standardmode zurückschalten. Das ECR liegt auf I/O-Addr. 77Ah, wenn die Basisadresse 378h ist. Das ECR existiert nur im ECP Mode. Gute Beschreibung z.B. auf www.beyondlogic.org
Vor den ersten Schreibversuchen erstmal mit Auslesen von Signatur und Fuses anfangen.
D.
|
BID = 421349
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
@Max Power
das liegt aber nicht daran das Bascom den Chip erkennt sonder welche Definitionsdatei du im Kopf deines Programmes hingeschrieben hast....ich dachte auch erst er hat ihn erkannt......war aber net so
_________________
-----------------------------
---MfG Bastelheini---
-----------------------------
|
BID = 421365
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
Das Bild kann ich direkt per Mausklick öffnen. (FF2.0.0.3, Win XP)
Zitat :
| Der LPT Mode soll SPP (Standard Printer Port) sein. Wenn ECP unbedingt bleiben soll, dann im Extended Control Register (ECR) auf Standardmode zurückschalten. Das ECR liegt auf I/O-Addr. 77Ah, wenn die Basisadresse 378h ist. Das ECR existiert nur im ECP Mode. |
Ich hab jetzt den LPT auf SSP umgestellt, keine Besserung.
Zitat :
|
Vor den ersten Schreibversuchen erstmal mit Auslesen von Signatur und Fuses anfangen. |
Danke für den Tipp.
Mein Programm sieht so aus:
Code : |
$regfile = "m8def.dat"
$crystal = 1000000
Do
Loop |
|
Im Anhang mal die genaue Beschaltung des mega8, eventuell ist da was falsch.
Meine Reicheltbestellung sollte heute ankommen, dann tausch ich testweise den 74hc244 aus, vielleicht ist der kaputt.
Vielen Dank für die Hilfe
|
BID = 421407
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
An Pin 22 muss GND, an 22 die positive Versorgung.
Das ist im letzen Teil nicht zu sehen, wenn du es vergessen hast, dann wäre es eine mögliche Ursache.
Edit:
Ergänze mal dein Programm so, dass sich das messen lääst, z.b. so:
LED an PORTB0 o.ä. ran und dann folgendes:
DDRB = DDRB or 1
(in C viel schöner machbar:
DDRB |= 1<<DDRB0;
)
Do
waitms 100
PORTB = PORTB xor 1
Loop
Damit wird der Zustand des Bits0 von PortB ungefähr alle 100ms gewechselt.
Da gleiche in C:
while(1)
PORTB ^= 1<<PORTB0;
Edit2: ok, wohl etwas zu schnell
Eher so:
while(1)
{
delay(); //irgendeine Routine zum sinnlosen Verzögern
PORTB ^= 1<<PORTB0;
};
Sieht doch schöner aus, oder?
_________________
[ Diese Nachricht wurde geändert von: DonComi am 11 Apr 2007 15:37 ]
[ Diese Nachricht wurde geändert von: DonComi am 11 Apr 2007 15:40 ]
|
BID = 421422
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
Zitat :
| An Pin 22 muss GND, an 22 die positive Versorgung. |
Beides gleichzeitig?
An 22 muss GND, aber wohin muss dann die Versorgung? Pin 20?
Code : |
$regfile = "m8def.dat"
$crystal = 1000000
DDRB = DDRB or 1
Do
waitms 100
PORTB = PORTB xor 1
Loop
|
|
Ist das so richtig? Stimmt eigentlich die Frequenz $crystal? (keine Ahnung wie wichtig das ist)
Zitat :
|
Sieht doch schöner aus, oder?
|
Ich find das ziemlich gleich. Die Klammern {} kenn ich aus JavaScript, die machen große Programme übersichtlicher.
Jedem seine Programmiersprache, für den Anfang nehme ich Basic
|
BID = 421440
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Zitat :
|
An Pin 22 muss GND, an 22 die positive Versorgung.
|
Mein Fehler.
Pin 22: GND;
Pin 20: VCC.
Zitat :
|
Ist das so richtig?
|
Ja, das Progrmm sollte so lauffähig sein; das äußert sich im Blinken der LED.
Zitat :
|
Stimmt eigentlich die Frequenz $crystal? (keine Ahnung wie wichtig das ist)
|
Die Frequenz (also der Takt der CPU) wurde ja nicht geändert, daher sind 1000000Hz richtig.
Wichtig ist das für zeitbasierte Routinen, beispilesweise Berechnung der Baudrate, Timer, Verzögerungsschleifen wie wait (Sekunden), waitms (Millisekunden) und waitus (Mikrosekunden).
Zitat :
|
[...] die machen große Programme übersichtlicher.
|
Nicht nur übersichtlicher; sie sind essentiell.
Zitat :
|
Jedem seine Programmiersprache, für den Anfang nehme ich Basic
|
*zustimm*
_________________
|
BID = 421505
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
Es liegt entweder am Programmieradapter oder am LPT.
Ich hab alle Ratschläge beachtet, Programm erweitert, Pin 20 u. 22 angeschlossen, alles kontrolliert und nachgemessen.
Ergebnis: Die selben Fehler
Danach hab ich den mega8 gegen einen tiny12 getauscht, "leeres Programm" (ohne den LED-Kram) geschrieben, tiny12 richtig verdrahtet (Datenblatt).
Ergebnis: Immernoch die selben Fehler
Den IC im Adapter hab ich vorher ausgetauscht, der funktioniert garantiert (direkt aus der Verpackung in die Fassung).
Ich werd das ganze mal an einem anderen PC testen wenn ich Zeit finde. Wenn es dann immernoch nicht geht wandert der Adapter in den und ich bestell den Bausatz bei Roboternetz.de oder irgendwo anders.
Trotzdem Danke für die Hilfe
|