Forum: Compiler & IDEs Portb ansprechen


von Markus M. (seeadler78)


Lesenswert?

Hallo

Ich fange gerade an mich mit dem AVR studio zu befassen.
ich habe jetzt eine Schaltung für den Microcontroller und die serielle
programmierplatine.ich möchte nun mit dem microcontroller eine pumpe
steuern und das mit c programmieren.diese pumpe soll 5 minuten laufen
und dann 15 minuten ruhig sein.und das endlos.ich wollte das mit einer
while schleife machen weiss jetzt aber nicht wie ich die aüsgänge auf 5
Volt oder 0 Volt bekomme.wenn ich einfach Portb=... schreibe, bekomme
ich die fehlermeldung nicht declariert.wenn ich es declariere wird das
dann nicht nur als einfache variable angenommen,oder wie ist das.Ich
danke schon mal für die hilfe.
bis dann seeadler78

MC:attiny2313

von johnny.m (Gast)


Lesenswert?

Wenn Du die entsprechende Header-Datei nicht einbindest bzw. die
Einstellungen unter 'Project | Configuration Options' nicht gemacht
hast, kennt der Compiler PORTB natürlich nicht.

von johnny.m (Gast)


Lesenswert?

...Ach, und Du solltest Dich wirklich mal mit dem AVR-GCC-Tutorial auf
dieser Seite befassen. Da steht auch drin, 'wie man einen Ausgang auf
5V oder 0V bekommt...' und was man dabei beachten muss (v.a. erstmal
als Ausgang definieren...)

von Markus M. (seeadler78)


Lesenswert?

Hallo
danke für die Antwort.habe bei Project Configuration Options den
attiny2313 angegeben.muss ich da sonst noch was machen.wie finde ich
denn die passende header datei und wie muss ich die einbinden.
bis dann seeadler78

von johnny.m (Gast)


Lesenswert?

Siehe oben... Versuchs mal mit '#include<avr/io.h>'. Wenn die
Einstellungen ansonsten stimmen, sollte er dann zumindest die Register
kennen...

von Markus M. (seeadler78)


Lesenswert?

Hallo
danke für die hilfe, die ports kennt er jetzt schon mal.das andere sind
wohl syntax fehler.mal schauen.
bis dann seeadler78

von johnny.m (Gast)


Lesenswert?

In so einem Fall ist es immer am besten, den Code zu posten (und zwar
als Anhang). Dann kann man sofort sehen, wo's hakt.

von Markus M. (seeadler78)


Lesenswert?

Hallo´
ich probiere im moment erst ma so ein bisschen rum, um mal zu sehen wie
das ganze funktioniert.werde auch mal das gcc turtorial lesen.wenns dann
noch hakt melde ich wieder.aber danke für deine schnelle hilfe.
bis dann seeadler78

von Markus M. (seeadler78)


Lesenswert?

Hallo
ich bins nochmal.ich wollte jetzt mal ausprobieren die pins auf ein
nullpotenzial zu bringen.ich habe die testschaltung aus dem internet
mit dem blinklicht.dies ist an dem PBO angeschlossen.um es dauerhaft
leuchten zu lassen habe ich folgendes geschrieben.

#include <stdio.h>
#include<avr/io.h>

int main (void)
{

PORTB=0b00000000;
DDRB=0b11111111;
}

trotzdem bleibt die led aus.waran kann es liegen.
danke
seeadler78

von SiO2 (Gast)


Lesenswert?

Tja, sieht aus als ob du vielleicht die LED gegen Masse geschaltet hast.

von SiO2 (Gast)


Lesenswert?

versuch mal
DDRB=0xff
PORTB=0xf0
dann duerfte die haelfte der leds leuchten

von Markus M. (seeadler78)


Lesenswert?

Hallo
was heisst jetzt gegen masse.an dem PB0 müssten doch so jetzt 0 volt
liegen oder sehe ich das falsch.

von johnny.m (Gast)


Lesenswert?

>die testschaltung aus dem internet mit dem blinklicht...

Aha, DIE Testschaltung also...

>was heisst jetzt gegen masse

Du kannst ne LED an nem µC-Pin (zumindest bei den AVRs geht das wegen
der symmetrischen Ausgangstreiber) auf zwei Arten anschließen, nämlich
gegen VCC oder gegen GND. Wenn Du sie gegen VCC anschließt, musst Du
den Pin '0' setzen, um die LED zum Leuchten zu bringen, wenn Du sie
gegen Masse schaltest, dann auf '1'.

von Markus M. (seeadler78)


Lesenswert?

Hallo
hatte irgenwas in ponyprog falsch eingestellt was vorher aber
funktionierte.komisch.naja jetzt leuchtet die led und ich mach jetzt
feierabend.bis dann seeadler 78

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.