- fchao-Sinus-Wechselrichter AliExpress         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 53

Thema: Assembler lernen

  1. #31
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von Besserwessi
    ... Steht bei der Erklärung der Sleep Modes im Datenblatt ...
    Oh weh, da habe ich schlecht geraten - vielmehr völlig ungenügend das Datenblatt gelesen - - ich hatte einfach den Abschnitt Interrupt aufgeschlagen. Sorry ihr Beiden.
    Ciao sagt der JoeamBerg

  2. #32
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    aber nicht doch!
    im kapitel 7.1.3 Power-Down Mode seite 31 steht als 3. satz (kopiert):
    Only an External Reset, a Watchdog Reset, a Brown-out
    Reset, an external level interrupt on INT0, or a pin change interrupt can wake up the MCU.
    also kann JEDER dieser interrupts den tiny wieder wecken ...
    auch aus dem power down modus.

  3. #33
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Ich glaube, damit steht der Sieger in diesem kleinen Lesewettbewerb eindeutig fest.
    Ciao sagt der JoeamBerg

  4. #34
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Da steht im datenblatt aber auch die Einschränkung, das Int0 nur als Level Interrupts geht. Mit Pin Change interrupt ist der extra Pin-change Interruts gemeint, der auch die anderen Pins abdecken kann.
    Was aber nicht geht ist Int0, wenn die Bits ISC01/ISC00 nicht 0/0 sind, also die Reaktion auf eine oder beide Flanken.

  5. #35
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Zitat Zitat von Besserwessi
    Da steht im datenblatt aber auch die Einschränkung, das Int0 nur als Level Interrupts geht.
    wo liest du, dass int0 nur als level interrupt geht? seite, kapitel?

    Zitat Zitat von Besserwessi
    Mit Pin Change interrupt ist der extra Pin-change Interruts gemeint, der auch die anderen Pins abdecken kann.
    was meinst du mit "extra pin change" ??

    Zitat Zitat von Besserwessi
    Was aber nicht geht ist Int0, wenn die Bits ISC01/ISC00 nicht 0/0 sind, also die Reaktion auf eine oder beide Flanken.
    das kann ich auch nicht raus lesen:
    ISC01 ISC00 Description
    0 0 The low level of INT0 generates an interrupt request.
    0 1 Any logical change on INT0 generates an interrupt request.
    1 0 The falling edge of INT0 generates an interrupt request.
    1 1 The rising edge of INT0 generates an interrupt request.

  6. #36
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    übrigens hab ich das problem mit dem int0 geklärt.
    zum laden des codes habe ich das lernprogramm und die platine von franzis verwendet - funktioniert ja, da bei den experimenten diverse codes in den tiny geladen wurden. aber solange nur diese codes lädt.
    nur, was ich nicht bedacht habe, es bleibt aufgrund des noch vorhandenen bootladers PB1 für den datenaustausch mit dem pc aktiv ...
    daran hatte ich nicht gedacht !!
    ich muss also ein anderes programm zum echten "flashen" (mit PB5 > gnd) verwenden, damit ich den bootloader raus bringe und nur mehr mein code drin ist.

  7. #37
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das mit dem Int0 steht in der Fußnote zu Tabelle 11, und in der Erklärung zu External Interrupts.


    Auch wenn da eine Bootloader drauf ist, kann man den Controller in den Powerdown Mode versetzen. Der Bootloader ist normalerweise nur direkt nach dem Reset aktiv. Wenn da kein Signal gefunden wird, wird das normale Programm gestartet ohne das der Bootloader wieder dran kommt. Man hat halt nur weniger Speicher (flash) zur verfügung als ohne Bootloader. Wenn man den Pin PB5 als reset lassen will, und über die Resetfunktion auswerten will, dann hat man natürlich mit den meisten Bootloadern ein Problem.

  8. #38
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Zitat Zitat von HeSt
    ... lernprogramm ... platine von franzis ... ... bootloader raus ...
    Grübelgrübelgrübel - ich habe das "Lernpaket Microcontroller" - und dazu habe ich ein Programm LPMicros und ein weiteres, das LPMicro ISP. Das erste lädt die Experimentierumgebung in den tiny13 - und der versprochene bzw. angeblich enthaltene Bootloader funktionierte bei mir leider nie. Daher hatte ich die selbst geschriebenen Programme als eigenständige Programme geschrieben und mit dem LPMicro ISP in den t13 geflasht. Lief immer bestens.

    Das LPMicros verwende ich immer noch und immer wieder. Es ist recht praktisch, damit mal eine LED anzuknipsen um deren Stromaufnahme zu messen, oder ähnliche, einfache Abläufe, die immer wieder mal vorkommen schnell aufzubauen und zu testen.
    Ciao sagt der JoeamBerg

  9. #39
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Ich grüße euch,

    ich bin zwar auch nicht der Asm-Profi, aber ich versuche mal mitzuteilen wo (auch) ich eventuell ein Problem sehe.
    Genau wie Besserwessi schon geschrieben hat, sehe ich auch an den gleichen Stellen ein grundsätzliches Problem.

    Ich beziehe mich auf den einzigen geposteten Code von dir HeSt aus dem Post an dieser Stelle.

    Wenn ich richtig geschaut habe, landen deine 3 Interrupt-Funktionen (und auch die nicht genutzten über main) alle wieder an einem "rjmp pwrdwn". Nun geht das main so von oben in diese sleep-Funktion.

    Jetzt wird also mit dem "sleep" die CPU geparkt, und der erwartete Interrupt sollte seine Arbeit machen und wieder mit dem "rjmp pwrdwn" aus der ISR bzw. den aufgerufenen Funktionen irgendwie wieder, von oben zum "sleep" kommen.

    Was aber dann nicht in den ISR-Funktionen ausgeführt wird ist der Befehl "reti".
    Genau hier würde ich nun das Problem erwarten, da die AVR's (und wohl auch alle andere CPUs) das I am reti nutzen um einige Bits und Bytes in der Interrupt-Hardware/Register zu richten.

    Da ich nun nicht weiß, ob dieses von dir benutzte Schema grundsätztlich funktioniert in dieser CPU, kann ich natürlich auf dem Holzweg sein.
    Ich habe auch nicht geprüft, ob diese nicht durchgeführte Aktion vom fehlenden reti, in deinem Programm überhaupt eine Auswirkung hätte.

    Meine ASM's hatte ich immer so geschrieben:
    main
    - init-Code
    - sprungmarke: sleep
    - jump sprungmarke

    ISR
    - tu was zu tun ist
    - reti

    --> reti wird ausgeführt, und im main geht es nach dem sleep mit speed wieder zum sleep. Genau so hatte Besserwessi ja auch schon geschrieben.
    --> Ansonsten können nun die ISRs machen was sie wollen, und ich muss nicht darauf achten, dass sie alle wieder mit dem "rjmp pwrdwn" von oben zum sleep kommen. Sonst fehlt ja tatsächlich danach ein weiterer Befehl.

    Zitat Zitat von HeSt
    überflüssiges cli entfernt und am ende von "pwrdwn" ein rjmp auf den anfang eingefügt/angehängt.
    Hast du das, was ich gerade so umständlich beschrieben habe, somit schon erledigt? (Besserwessi hat nur ca. 2% meiner Wortanzahl benötigt )
    Wohin springst du, wenn du ".. auf den anfang .." springst?

    Ich hoffe, wir kommen gut in den Winter-Sleep und auch wieder raus.
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  10. #40
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    hallo sternthaler, danke für deine ausführungen.

    ich werde leider mit dem tiny13 meine problemstellung in „normaler“ form – also ohne änderung der fuses – nicht realisieren können, da mir der port5 nicht als ein-/ausgang zur verfügung steht sondern nur als reset eingang.
    und ich hab leider kein programm mit dem ich fuses ändern kann.
    somit baue ich eine „hybrid“ lösung mit zusätzlichen herkömmlichen ic’s.

    Zitat Zitat von besserwessi
    Man kann auch zwischen Signal an Reset und Power on unterscheiden.
    wie kann man das unterscheiden?
    ich sehe keine möglichkeit, denn die i/o register werden alle resettet und das kann ich nicht brauchen, denn die ports müssen ihren status behalten um sie auslesen zu können.
    und das lese ich nirgendwo raus, dass portb nicht auch auf 0 gestellt wird, samt ddrb.
    portb, pinb und ddrb sind doch i/o register, oder irre ich hier?

    auszug aus dem datenblatt:
    During reset, all I/O Registers are set to their initial values, and the program starts execution from the Reset Vector.

    eine frage noch zu den fuses:
    ich müsste, um portb5 als „normalen“ ein-/ausgang verwenden zu können, das bit 4, SELFPRGEN Self Programming Enable im hi-byte der fuses umschießen – nachdem ich das programm geladen habe, denn sonst kann ich den tiny ja nicht mehr programmieren/flashen.
    sehe ich das richtig?

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test