www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR : atmega8 akzeptiert PORT-Einstellung nicht (Bascom)


Autor: Adrian H. (tyzmon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Das hier ist meiner aller erster Post in diesem Forum, daher hoffe ich 
dass ihr über ein paar Mängel vielleicht hinwegseht;)

Meine Hardware:
- atmega8 (ATMEGA8L-8PU)
- MyAVR Board : Bild: http://www.myavr.de/pic_ebay/LPT_Board.png
- Bascom

Zu meinem Problem:
Ich schreibe ein kleines, wenig komplexes Stück Code:
$regfile = "m8def.dat"
$crystal = 8000000

Config Portc = Output

Do
Portc = &B11111111
Loop
End

Das Programm soll nichts anderes machen, als den kompletten Portc auf Hi 
zu schalten und die daran angeschlossenen LEDs zum leuchten zu bringen.

Das Problem dabei: (An anderen Programmen getestet) Der atmega8 
übernimmt die Portzuweisung einfach nicht, heißt, auf Portc ist kein 
Strom.

Das Seltsame:
Bei komplexeren Sachen wie etwa ein Würfelsimulator funktioniert alles 
bestens, nur gibt der AVR das Signal beispielsweise auf PortB aus 
anstatt auf PortC, wie es definiert ist.

Alles funktionierte vor 2 tagen noch bestens, ich habe auch nichts an 
den Fusebits geändert und co.
Ich habe auch schon einen anderen AVR probiert, gleiches Problem, de AVR 
scheint die Output Ports nach einem mir nicht erkennbaren Muster 
zuzuweisen :(

Habt ihr eine Idee, was daran faul sein könnte?
Schon mal vielen Dank!

Autor: Harry Up (harryup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
möglicherweise hängt es damit zusammen, dass der Portc.7 beim Mega8 
nicht zur Verfügung steht und der Portc.6 dem Reset-Anschluss dient. 
Müsstest du vllt. dn Reset per Fuse disablen, bevor du ihm den Status 
Output zuweisen kannst?
Versuche doch einmal, die Pins einzeln anzusprechen, dann wird's auch 
funktionieren.
Grüsse, Harry

Autor: Adrian H. (tyzmon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt noch mehrere Konfigurationen durchprobiert (Mit DDRB und 
DDRC, also portb und bortc), aber es funktioniert einfach nicht. Auch 
wenn ich nur einzelne Pins zuweise nutzt das nichts. Was mir noch 
aufgefallen ist, ist, dass sobald ich das Programm auf den AVR flashe 
auf PinC.5 Strom ist, selbst wenn dort keiner sein sollte.

Edit: @ Harry: PortC.6 und 7 sind bei meinem Board gar nicht gemeinsam 
mit den anderen Pins (0-5) herausgeführt, daher nutze ich sie auch 
nicht.

Autor: Harry Up (harryup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
das muss aber doch funktionieren. wenn nicht, muss der Fehler gesucht 
werden. Ist VCC OK? Ist RESET an VCC? etc.


$regfile = "m8def.dat"
$crystal = 8000000
Ddrc = &B00111111

do
   set Pinc.0   ' LED ein
   wait 1
   reset pinc.0
   wait 1
loop

sollte deine LED an C0 blinken lassen

Grüssens, Harry

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harry Up wrote:
> Müsstest du vllt. dn Reset per Fuse disablen, bevor du ihm den Status

Tolle Tips sind das, vor allem wenn er das Teil danach noch 
ISP-Programmierenm will.

Autor: Harry Up (harryup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay, recht haste, das wäre echt die heavy-duty version.
sorry, war mal wieder 'aus der hüfte geschossen', du sollst natürlich 
nicht den Reset disablen, nur dann, wenn der Reset nicht als Reset 
verwendet werden soll. Aber in dem frühen Stadium kömmt das wohl nicht 
in Frage.
vielmal-tschulliung, Harry

Autor: Tyzmon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Tipps, ich werde jetzt erst mal noch etwas herumprobieren 
und eventuell bascom neu installieren und einrichten. Kennt vielleicht 
jemand ein Tutorial, das sich explizit mit Bascom und dem Mega8 
beschäftigt bzw leicht übertragbar ist?

Autor: Adrian H. (tyzmon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein Nachtrag, ich habe die Edit-Funktion nicht gefunden:
gemeint ist natürlich ein Tutorial, das sich mit dem Einrichten von 
Bascom und dem Mega8 beschäftigt ;)

Autor: Klaus B. (raggywetter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 32
$framesize = 40

Config Portb = Output

Do
PortB = &B11111111
'Wait 10
Portb = &B00000000
'Wait 10
Loop
End

So sollte es Funktionieren
Gruß raggywetter

Autor: Adrian H. (tyzmon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich habe den Fehler jetzt gefunden: Aus irgendeinem Grund hat Bascom 
das Programm vor dem Auto-schreiben nicht mehr compiliert (F4). Wenn ich 
das jetzr aber manuell per F7 machen und dann mit F4 brenne, 
funktioniert alles.
Trotzdem nochmal danke ;)

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.