- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: M32 bin ich zu blöd?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370

    M32 bin ich zu blöd?

    Hallo. versucher ein programm zu basteln aber irgendwie will es nicht.

    struktur des programms:

    hauptschleife:
    gosub daten lesen
    gosub daten auf RS232 aufrufen
    loop
    end

    timer1: (1hz)
    werte verändern
    return

    timer0: (500hz)
    ausgabe der werte auf einem 7-segment (nacheinander)
    return

    wenn ich timer0 aktiviere geht gar nichts mehr, ist 500 hz zu oft? der m32 läuft bei 4 mhz intern

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    34
    Beiträge
    1.461
    Hi!

    Hm. Wie groß sind deine Stacks?

    Do
    ...
    Loop

    Du weist schon, oder?

    Ganz liebe Grüße,
    Tobi

    *EDIT*
    Hast du die Interrupts für den Counter aktiviert?
    (Also, dass das funzt?)

    Was willst du eigentlich machen? wa machen die Timer?
    eine ISR auslösen doch hoffentlich!?
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Also timer0 ist dafür da, das die zwei 7 segment anzeigen gemultiplext dargestellt werden...

    ich lese daten von einem anderen controller ein, und gebe diese auf RS232 aus (zeitgleich auf der 7 segment) -> nacheinander der dezimalpunkt zeigt den zustand zum wert an...
    brauch ich um sicher zu gehen externe pullups an den eingängen?

    wie berechnet man den stack?


    do
    loop
    --> ist mir klar.

    timer1 wird als timout counter benutzt.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Wenn man mal davon ausgeht, das UART bei dir sonst geht, INT eingeschaltet ist usw... (schau dir mal das Programm rnAvr an. damit kannst du die Timervorgeben und Teiler einfach berechnen lassen), fallen mir 2 Sachen auf:

    1. 500Hz bedeutet jede 2mS wird die ISR aufgerufen. In der Zeit müssen die anderen Programmschritte abgelaufen sein können (ist möglich, je nach Programm).
    2. Jede Sekunde sollen 2 ISR aufgerufen werden. Einmal die für 1Hz und die für 500Hz.

    ausgabe der werte auf einem 7-segment (nacheinander)

    Mit 500Hz??? 15Hz etwa reichen schon, um deinen Augen ein laufendes Bild vorzutäuschen, ohne das man viele Einzelbilder nacheinander sieht.
    Wenn das Programm so laufen sollte und die Werte sich immer ändern, wirst du alle 7 Segmente immer dauerhaft leuchten sehen bei 500Hz!

    Aber wenn es wirklich so seien soll, würde ich nur ein Timer für 500Hz nehmen und einZähler jedesmal inder ISR auf 500 hochzählen lassen.
    Wenn 500 erreicht ist, GOSUB FUNKTION1HZ und du hast ein Timer gespart

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    34
    Beiträge
    1.461
    HI

    Den Stack kannst du mit Options -> Compiler -> Chip einstellen.
    Da gibts
    - HW Stack
    - Soft Stack
    - Framesize

    Verdopple alle Werte mal.
    Denn wenn du mit gosub bzw. goto in die Tiefe springst, merkt sich der AVR die Addresse wo er gerade war im Stack. Dann kann er mit return wieder dorthin springen.
    Wenn du sonst irgendwelche Interrupts benutzt (Timer), zählen auch noch die ISRs mit.

    Ganz liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hallo,

    danke für die antworten..

    Also 500 hz war nur für den wechsel von der einen 7 segment zur anderen. werde den wert mal runter nehmen auf 20. es soll auf gar keinen fall flackern... Was angezeigt wird, wird von dem 1 sekunden timer geändert. werde das mal mit dem hochzählen bis 20 probieren und den 1 timer sparen. macht das ganze wirklich übersichtlicher...
    ändere zudem noch was an der hardware. mal schauen

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Versteh ich jetzt nicht. Das ganze ist doch kein RAM, das immer ein Refreshzyklus braucht?!
    Die Werte, die angezeigt werden sollen, ändern sich jede Sekunde. Dann reicht es doch auch, wenn jede Sekunde die 7 Seg.-Anzeige neu gesetzt wird?
    Flackern wäre in diesen Fall ja nur, wenn man das ein- und ausschalten der einzelnen Segmente sehen würde.
    Und das lässt sich ja in wenigen Takzyklen machen. Kannst ja ausrechnen, wie schnell das bei 4MHz ungefähr passiert.

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    34
    Beiträge
    1.461
    HI

    Das ist schon richtig. Aber sebastian.heyn möchte die Segmentanzeige wohl gemultiplext ansteuern. Und dazu braucht er eine art Refreshsignal.

    Vorteil dabei: verbraucht VIEL weniger IOs.

    Ganz liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Das stimmt wohl

    Aber ein paar Zeilen mehr Code. So sind 20Hz wohl doch besser als 500Hz. Zumindest wenn der M32 mit 4MHz läuft. Sonst ist ja fast nur die ISR am laufen und der Rest hängt hinterher.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    34
    Beiträge
    1.461
    Hi

    Genau. Aber lieber ein paar Zeilen mehr code als n mal so viele IOs.
    Und beim M32 ist das eh egal.

    Grüße!
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test