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


von Adrian H. (tyzmon)


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:
1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
4
Config Portc = Output
5
6
Do
7
Portc = &B11111111
8
Loop
9
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!

von Harry U. (harryup)


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

von Adrian H. (tyzmon)


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.

von Harry U. (harryup)


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

von Michael G. (linuxgeek) Benutzerseite


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.

von Harry U. (harryup)


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

von Tyzmon (Gast)


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?

von Adrian H. (tyzmon)


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 ;)

von Klaus B. (raggywetter)


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

von Adrian H. (tyzmon)


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 ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.