-
Thread
Tangens sprengt die Codemenge
um sie hinterher auf die Dauer des High-Pegels zu analysieren? Das könnte man doch sofort beim Einlesen der Signale tun, indem man auf die Flanke wartet (entweder gepollt oder per Interrupt) und auf den Timer schaut, wann sie eintrifft. Arrayzugriffe kosten auf dem AVR nicht nur viel Programmspeicher
erst einmal nur > stumpf einzulesen überrascht mich. Ich dachte es gibt nichts > schnelleres als Port einlesen und abspeichern. Nicht, wenn die direkte Messung so einfach ist, wie in diesem Fall. So oder so ähnlich hätte ich's gemacht: [c] uint8_t tper, thigh; // warten auf steigende
-
Thread
erster Mikrocontroller programmieren -> fragen
Port. Kann ich mit solch einem Adapter (http://www.mikrocontroller.net/attachment/19111/AVR_ISP_Ser.jpg) den ATmega flashen?(Per USB-to-serial Adapter) 3. Ich habe gelesen, das für das programmieren über
mit BASCOM und anderen Entwicklungsumgebungen genutzt werden[...]" Heißt das ich kann aus BASCOM-AVR heraus den Atmega flashen? Edit: > Vorsicht - ich glaube nicht, dass der TE den seriellen Port des uC > meint. Der oben angegebene Programmer (serieller Port am PC, ISP Port am > uC) funktioniert
-
Thread
Wie lese ich eine Frequenz beim Atmel mega32 ein?
Danke für die Hilfe, aber wir haben nur einen ICP Port und wir müssen aber 3 Frequenzen einlesen! mfg kati
Und das Programm ist leider nicht für AVR, so wie bei dem Link! Würd das aber gehn, wenn wir 3 Frequenzen haben, dass wir 2 über Timer1/ Timer0 einlesen und einen über ICP? Mfg
-
Thread
Display mit Touchscreen bei Pollin?
Plan den ich hier aus dem Forum habe. Ich habe jetzt mal den Quarz abgehängt und XTAL1/2 als I/O Port genommen (wie es laut Plan angegeben ist). Weiter habe ich die interne Freq. auf 8mhz gestellt. Ich habe den Atmega laut AVR Tutorial angeschlossen (exkl. Quarz). http://www.mikrocontroller.net/
es funktioniert genauso wenig mit PortB und PortA. Habt ihr vielleicht irgendeine Idee? Der AVR läuft noch mit factory 1MHZ... aber daran wird es ja wohl nicht liegen, oder? Zum Glück hatte ich noch nen kleinen AVR rumliegen, sonst wüsst
-
Thread
Programmablauf, Interrupts, Timer, Schrittmotor, PWM
Quarzgenauigkeit*!) [Output-Compare-Wert B erhöhen] [Zustände aller Eingänge in Variablen einlesen] // Nur einlesen, nichts rechnen hier! [Alle Ausgabepins/-ports setzen] // Und ja nichts rechen! Alle Ausgabevariablen müssen // "vorberechnet" vorliegen; die zeitintensive Berechnung
Also lasse ich einen Timerinterrupt alle 1,x ms ein Flag setzen, das state-machine veranlasst, die Ports einzulesen. if (flag) { port einlesen; if(port!=port_alt) messung++; else messung=0; if(messung==2){ messung=0; port_alt=port; // umgeschaltet!
-
Thread
Debounce - LED leuchten lassen
siehe Quellcode). Könntet ihr mir sagen, ob das Programm so funktionieren würde? [c] #include <avr/io.h> #include <util/delay.h> void entprellung (volatile uint8_t *port, uint8_t maske ) { uint8_t port_puffer; uint8_t entprellungs_puffer; for(entprellungs_puffer=0;entprellungs_puffer
Pins als Eingang schalten DDRB |= (1<<PINB3); // nur Pin3 (Port B) auf Ausgang schalten while(1) { entprellung( &PINB, (1<<PINB0) ); // ggf. Prellen abwarten if( PINB & (1<<PINB0) ) // dann stabilen Wert einlesen {
-
Thread
Display fällt in unregelmäßigen Abständen aus
Versorgungsspannung beträgt 12V Gleichstrom die mit einem 1000uF Kondensator stabilisiert wird und dann mit der im AVR-Tutorial vorgeschlagenen Schaltung auf 5V gebracht wird. Der uC läuft mit einem 4 MHz Quarz, PortD wird zur ansteuerung der einzelnen Segmente genutzt(100 Ohm Wdst), während PortC 0-3 die einzelnen
Timer-Control-Registers TCCR0 interessant. Poste mal deine neuesten Sources wenns geht. Welche Ports sind noch frei ?
-
Thread
Komische Atmega32?
Ich habe bemerkt dass die Neuen AVR's immer wieder Probleme machen. Ich hatte mir einen ATmega8 beim elektronikladen um's Eck gekauft, und der wollte den Port B einfach nicht ansteuern. Als ich ihn zurückbrachte, habe ich mit dem
>Ich hatte mir einen ATmega8 beim elektronikladen um's Eck gekauft, >und der wollte den Port B einfach nicht ansteuern. >Als ich ihn zurückbrachte, habe ich mit dem Verkäufer alle neuen >AVR's durchgetestet. >Von 20 AVR's hat nur einer keine Fehler gezeigt. Vielleicht hat der Laden keinen
-
Thread
Opcode AVR Frage
gleich zwei Takte dafür verschwenden, die > Busmultiplexer so zu schalten, daß Register 1 am ersten Port der ALU > hängt und Register 2 am zweiten ALU Port? Aber das müsste dan bedeuten, dass 2 8-bit breite Busse von dem GPR zur ALU gehen, oder? Marc Vesely schrieb: > Darum sind AVR-Instructionen
Vielleicht wird Dir ja einiges klarer, wenn Du Dir mal bei opencores einen AVR-Core in VHDL anschaust. Suche einfach mal nach "AVR VHDL".
-
Thread
Delay mit Timer
[[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR]]
konfiguriert werden > > und wie muss den aufrufen im Programm. Timmo H. schrieb im Beitrag #4423262: > AVR-GCC-Tutorial/Die Timer und Zähler des AVR
-
Thread
Präprozessoranweisung das erste Mal
Warum so kompliziert? [C] #ifndef keypad_h #define keypad_h /* Hardwaredefinitionen (avr/io.h muss bereits includiert sein) */ #define keypad_port PORTC #define Taster PINC /* Globale Variablen */ extern unsigned char flankenwechsel2; extern unsigned char keypad_uebergeben; /* Funktionsprototypen */ char keypad_wert_einlesen(unsigned char warten); void keypad_ini(void); #endif /* keypad_h */ [/C] ### Oder ### [C] #ifndef keypad_h #define keypad_h /* Hardwaredefinitionen (avr/io.h muss bereits includiert
-
Thread
PIC oder AVR
darüber auf 32bit (ARM-Core) umsteigen. - Wie komplex ist interrupt-feste Programmierung von I/O-Ports? Das ist besonders beim AVR ein Problem. Architekturbedingt ist nur ein Teil der Ports ist bitweise schaltbar, kein Port kann mehrere Bits gleichzeitig interrupt-fest schalten (Ausnahme: ganz neue
aber das wird sich nicht ausgehen ;-)) er soll lediglich so schnell wie möglich daten von einem port einlesen und diese auf ein anderes port wieder ausgeben und das eben im MHz bereich. sorry, ich weis nicht wie ich es erklären soll.(ist aber auch schon spät) mfg schoasch
-
Thread
An die C-Profis: Datei einlesen und String teilen
benutzt werden soll um die H-Datei zu erzeugen, ist auch ein C-Compiler dafür nötig und das kann nicht AVR-Studio sein, denn das Programm soll ja auf dem Host laufen und nicht auf dem AVR.
.. Hier übrigens noch mein Code ( das Registerarray habe ich etwas gekürzt): [c] #include <avr/io.h> #include <util/twi.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/lcd-routines.h> #include <stdio.h> #include <string.h> #define F_CPU 4000000; int16_t i; int16
-
Thread
Transistor: Forward Transconductance
Der Pin soll ein Eingang sein. Wenn von der Steuerleitung ein Signal kommt will ich eine 0 am Pin einlesen, wenn kein Signal kommt eine 1.
so mache wie im Bild im Anfang und dann wie folgt konfiguriere [c] DDR &= ~(1<<PinNo); // Input PORT &= ~(1<<PinNo); // Kein internen Pull-Up // Einlesen var |= PIN & (1<<PinNo); [/c] und entsprechend häufig einlese, dann kann es sein das durch die Ladezeit die Leitung immernoch als Low interpretiert
-
Thread
Aquariumsteuerung - LED über ein Taster Ein und Aus
------------------------------------------------------------------------ ledon: ; Taster 1 einlesen ;sbi PORTD,5 in r17, PIND ; PORTD einlesen und in r17 ablegen sbrs r17, 2 ; Überspringe .... rcall sw1 ret sw1: ; hier wird nun die LED eingeschaltet sbi PORTD
; Ausgang setzen ldi r18, 0x01 ; Bit für LEDON setzen ret ledoff: ; Taster 2 einlesen in r17, PIND ; PORTD einlesen und in r17 ablegen sbrs r17, 3 ; Überspringe nächsten Befehl wenn Bit 2 vom PORTD gesetzt rcall sw2 ret sw2: ; hier wird nun die LED eingeschaltet
-
Thread
SPI per Software
Ach was :-) Ja, war für nen AVR (2313) mit CodeVision.
>>1. Wie kann ich das Einlesen und Ausgeben realisieren? Das Ausgeben habt Ihr hier super beschrieben, doch wie sieht es mit Einlesen aus? Brauche ich für meinen ATTiny13 Project, der ja kein SPI kann (nur ISP über SPI seltsamerweise
-
Thread
Frage zur Tasterabfrage
(Taster) nach r16 einlesen out PORTB, r16 ; Inhalt von r16 an Port B ausgeben rjmp loop ; Sprung zu "loop:" -> Endlosschleife [/avrasm] Was trage ich in der loop statt PIND ein, wenn ich
#6308427: > Was trage ich in der loop statt PIND ein, wenn ich beispielsweise nur > den PIN 4 aus dem Port D abfragen möchte? Du musst den Wert nach dem Einlesen maskieren (UND-Verknüpfung), für PIN4 normalerweise mit 0b00010000. Dann wird der Inhalt des Gelesenen überall auf Null gesetzt, außer der Info
-
Thread
AVR-C Compiler Verständniss-Problem bei AVR-Controller
Programm eines ehemaligen Kollegen debuggen und bin auf folgendes gestoßen: Zur Info: Ich verwende den AVR-gcc mit dem AVR-Sim Version 4 Im globalen Teil wurde folgendes deklariert (nur RxF ist wichtig!): #define BIT(x) (1<<(x)) // Schiebt Bit auf richtige Position (Macro) #define WR PC1
// PORTD hier als Eingang PORTC &= ~BIT(RD); // RD 0 setzen => Daten jetzt einlesen asm volatile ("NOP"); // warten bis Daten anliegen Wert = PIND; // Daten von PORT einlesen PORTC |= BIT(RD); // RD wieder auf 1 setzen return Wert
-
Thread
wie kann ich Flanken detektieren
change" Interrupt aktivieren. Funktioniert aber nur an INT0 und INT1 Pins. >Das ganze soll mit 7 Ports geschehen. Du meinst sicherlich 7 PINs. Wenn du das softwäremäßig lösen willst: Beispiel für Port B Pin 0 (8 Abfragen) und PORT C (8 LED): #include <avr/io.h> int main(void) { PORTB
Wenn ich also 8 Pins abfrage am Anfang der ISR nach wieviel > Taktzyklen habe ich auch den letzten Port abgefragt? Da die abzufragenden Pins sinnvollerweise alle an *einem* Port sein sollten, geht das Einlesen in einem einzigen Taktzyklus. Dann einfach ein Vergleich mit dem vorherigen Zustand (bei
-
Thread
ATmega644 16bit Timer Compare Interrupt
// Daten am PortD ausgeben unsigned char PortD_IN(char); // Daten am PortD einlesen // ***Funktionen für Datenspeichern*** // -----------------------------------
*Die Stromeinstellung einlesen*** // ----------------------------------- Wert = PortD_IN (Schalter2); // PortD (Stromkanaleinstellung) einlesen n_Stromwerte = Wert & 0x0F; // Wert
-
Thread
Hilfe zu Temperatursensor DS1820
und ausführe, dann erscheint als Rückgabewert zuerst eine 0 und dann nach 1 Sekunde eine 1. Mit dem AVR funktioniert der DS1820 prima. In AVR gibt es für das EInlesen und rausschreiben zwei Systemfunktionsregister. Der XC888 hat soweit ich weis dies nicht. Mit P0_0 kann ich einlesen als auch was rausschreiben
Jetzt hab ich mal mit dem Multimetzer den Spannung am Port4 Pin0 gemessen. 1.) P4_DIR = 0x00; // Port4 steht auf INPUT x = P4_0; Sobald das Programm startet, steht der Zustand des Pin0 vom Port4 auf HIGH (+5V). Nach ungefähr drei vier Sekunden geht
-
Thread
AVR - unteres und oberes Nibble von Port getrennt beschreiben
angeschlossen sind, dann ist es nicht egal, ob das Signal flackert oder konstant ist. Dann besser so: 1. Port in Variable (Register) einlesen. 2. Bits in der Variablen manipulieren. 3. Variablenwert in den Port schreiben.
Rainer V. schrieb im Beitrag #4138525: > 1. Port in Variable (Register) einlesen. > 2. Bits in der Variablen manipulieren. > 3. Variablenwert in den Port schreiben. Richtig. Und wenn man sich nicht sicher ist, ob irgendeine verschissene ISR Ausgaben
-
Thread
DS18B20 probleme mit Pull-Up
Gut gemeinte Ratschläge: - schmeiß die Zuweisung des Ports aus ds1820_re_bit() raus. Mach das nur einmal, und zwar bevor Du das ganze Byte liest/schreibst weil der AVR die Bitschieberei überhaupt nicht mag und aufwändigen Code erzeugt. Und das kritische Timing
Port D PIND1 eine LED angeschlossen ist Teste es lieber in AVR Studio 5 Optimize auf -O1 stellen sonst klappts mit dem Timing nicht Schau es dir einfach mal an. Achso ganz vergessen hauptsächlich
-
Thread
Interface Parallel Port Drucker
und dann druckte der Drucker die Zeile? Ich weiß zwar grundsätzlich wie bei IBM Pc der Parallel Port angesteuert wurde. Habe aber keine Infos wie das Protokoll beim Drucken war. Könnte ich also in der Theorie, die parallelen Daten mit einem AVR einlesen und dann einfach auf die serielle Schnittstelle
M. schrieb im Beitrag #6867733: > Könnte ich also in der Theorie, die parallelen Daten mit einem AVR > einlesen und dann einfach auf die serielle Schnittstelle kopieren und > bekommen den Stream der Ascii Zeichen ausgegeben um ihn in einem > Terminal Programm am PC anzuzeigen? https://www.i8086
-
Thread
Tiny12 PortB Eingang geht nicht
Die Led an Portb PB4 soll leuchten wenn der Taster an Portb PB0 gedrückt wird. In der Simulation (AVR Studio4) gehts einwandfrei. ;Led auf PortB Bit4 ausgeben wenn Port PB0 =0 ;Led leuchtet wenn bit4=0; Pb0=0 wenn Taster gedrückt .nolist .include "tn12def.inc" .list loop: ldi r16,
Hi Vielleicht kann mir hier auch einer weiter helfen. Bei meinem Tiny kann ich nur an einem Port etwas einlesen wenn ich direkt das Register von PINB ( 0x16 ) eingebe. ... in r20,pinb ( erliest nichts ein r20 bleibt auf 00 ) ... ... in r20,0x16 ( erliest wie gewolt den Port ein )
-
Thread
AVR für wenig Geld im LAN
bei dem AVR-Net-IO auch. Hat da schon mal jemand die Ports vom AVR zu der Buchse/ dem Stecker gecheckt, was denn nun stimmt?
Widerständen und nicht direkt gemacht. ------------------------------------ Connect AVR with parallel port AVR Parallel Port Signal name Pin Pin Signal name Pfostenfeldverbinder 10polig GND ------------ 19 GND
-
Thread
Port abfrage
Hallo, wer kann mir mal sagen wie ich mit BASCOM AVR einen Port abfragen kann, um dort einen 4fach DIP-Schlalter einzulesen. Ich hab schon verucht mit IF Portx=&B00000001 then goto Relais1, aber das klappt nicht. Mit Debounce bekomme ich nur 4 Zustände
Das geht so nicht, Portb.x ist unter Bascom nur zum Ausgeben von Werten auf Ports verwendbar. Zum Einlesen muss Pinb.x verwendet werden. Siehe auch die Bascom-AVR-Dokumentation.
-
Thread
Einlesen von Zählerstand
Hallo, ich bin Anfänger in Sachen MC Programmierung. Ich hoffe mir kann einer weiterhelfen. Ich habe folgendes Problem. Ich möchte mit einem Atmega32 einen 16 Bit Zähler auslesen. Die Daten gehen an die Ports A und B. Dabei steht PA0 für das niederwertige und PB7 für das höchstwertige Bit. Kann mir bitte einer ungefähr sagen wie ich diese Leitungen auslesen kann, so dass ich nachher einen einzigen Zahlenwert der Wertigkeit bekomme? Das wäre echt super! Ich habe keine Vorstellung wie man das realisieren kann. Vielen Dank schonmal! Gruß Thomas
-
Thread
PonyProg & Verfusete AVRs
Noch was komisches: Wenn ich mit PP einen Werksneuen AVR einlese, ist das Häkchen bei SPIEN an. Dann wäre der aber doch garnicht programmierbar, oder?
riker wrote: > Noch was komisches: Wenn ich mit PP einen Werksneuen AVR einlese, ist > das Häkchen bei SPIEN an. Dann wäre der aber doch garnicht > programmierbar, oder? Ist ne Sache, die immer wieder zu Verwirrung führt: Bei PonyProg bedeutet ein Häkchen, dass das betreffende
-
Thread
ATmega8 Fehler in 2 Sekundenzähler?
Olli R. schrieb im Beitrag #2088230: > ich nutze ja im wesentlichen deine Routine zum Einlesen der Taster! http://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten#Tastenentprellung.2C_Abfrage_und_Autorepeat Ich programmiere jetzt nur noch in C. Da kann man sich voll auf die eigentliche
ja gar nicht mehr gedacht. Ich hab mich zu sehr einfach auf die bereits implementierte Taster einlesen-Routine berufen, dass ich ich gar nicht daran gedacht habe, den "Port" der Tasten nochmal einzulesen (sollte ja sogar weniger aufwendig sein als eine Routine, die die Taster entprellt!) Ich werd
-
Thread
taster mit atmel8
Hi, ich bin noch AVR Anfänger, und hab auch mir auch schon das AVR Tutorial angeschaut. Nun habe ich noch eine Frage, wie ich eine Taster Einstellung einlesen kann. Ich habe an Port D, Pin 2 und Pin 1 jeweils einen Taster angeschlossen, mit dem ich an Port C, Pin 0 und Pin 5 eine LED schalten möchte. Hier mein Code: #define F_CPU 100000 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdint.h> void io
-
Thread
Einstiegsfragen AVR
im Beitrag #2955423: > Hallo liebe Gemeinde, hallo Christian > 1. Da ich keinen Seriellen Port am Laptop habe, wollte ich als > USB-ISP-Programmer den hier nehmen: > http://www.ehajo.de/Bausaetze/AVR-ISP-Stick > Funktioniert das? Ich habe das avr-studio noch nie verwendet, aber der Stick
lassen hinaus geht. zB Temperatur einlesen (KTY81, LM75) und auf nem LCD anzeigen. Äh und nein ich bin kein Crack in Sachen AVR ...o0
-
Thread
Assembler und NOP
nop-Befehl noch zusätzlich einfügt bzw. wie ich das verhindern kann? Danke... Achja, ich benutze AVR Studio Version 4.18 Build 700
delay loops http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html
-
Thread
SHT11 Problem
was meinst du mit Pullup auf PortB4 ? hab ne 10k von Data port auf Vcc muss ich da noch was verändern ? oder den Widerstand weglaßen ?
Ist sichergestellt, dass der Port während der Messung auf Eingang steht? Falls das Programm vor Beendigung der Messung den Port wieder auf Ausgang stellen sollte, gehts natürlich schief. Volker
-
Thread
Drehregler an uC - geht das?
nicht 0x03, sondern 0x08, also 2 hoch 3. Dein Ausdruck muß demnach (PORTC & 0x80) heissen, wobei einlesen von Ports besser mit PINC gemacht werden (zumindest habe ich das irgendwo in der AVR-LIBC mal gelesen...; gilt halt für den AVR-GCC). Ich weiss ja nicht, welche Vorkenntnisse Du hast, aber mir
die anders funktionieren :-) Wichtig erscheint mir der Hinweis mit _PINC_ anstelle _PORTC_, einlesen geht doch nur über die PINx-Ports denke ich! Gruß Ingo
-
Thread
Adressierung bus mit dipschalter
Hallo, also das Einlesen von Schaltern und Tastern an einem AVR ist wohl der erste Teil des AVR-Tutorials für Anfänger... Wenn Du jetzt schreibst, daß Du da Master/Slave geschichten mit 8 AVR laufen hast und dann daran
scheiterst, kann ich holgers Bemerkung nur zu gut verstehen. Was ist denn nun Dein Problem? Das Einlesen der Schalterstellung mit einem AVR? Dann kann ich Dich auch nur dahin verweisen: http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen Gruß aus Berlin Michael
-
Thread
AVR-Butterfly - Wie auf Joystick zugreifen?
Andreas Kaiser wrote: > internen Pullups der Ports eingeschaltet werden müssen. Hm, also bei dem PortB hat das funktioniert, da habe ich die Pullups gesetzt (wie hier http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen beschrieben
habe das ja erst aufgrund Deines Kommentars geändert, allerdings funktioniert das irgendwie nur bei PortB und nicht mit bei PortE wo ja auch noch zwei der Bits vom Joystick belegt sind.
-
Thread
Webserver ATmega32/644DIP ENC28J60
integriert. Einfach bei Internet->Portfreigaben eine neue Portfreigabe erstellen. Dort muss bei "von Port" 80, an Port die IP des Servers im LAN und "an Port" wieder eine 80 stehen. Die Pakete werden dann automatisch umgeleitet. Einen AVR-Webserver hab ich so zwar noch nicht betrieben, aber mit dem PC
} DEBUG("Anwendung wird in Liste eingetragen: Eintrag %i\r\n",port_index); PORT_TABLE[port_index].port = port; PORT_TABLE[port_index].fp = *fp1; return; } [/c] Auch sehe ich nur die leere Tabelle: [c] PORT_ITEM PORT_TABLE[MAX_APP_ENTRY] = // Port-Tabelle
-
Thread
DCF-Uhr mit LCD in C
auch verstanden. Problem schein zu sein, das ich A) einen anderen PIN nehmen, und B) den gesamten Port im Interupt einlesen. Die und Verknüpfung klappt dann wohl nicht mit dem (1<<PINC5). Also muss ich auch beim einlesen nur das eine BIT einlesen. Mal sehen ob das klappt. Danke Bernd
aufzusetzen, hat bei mir funktioniert. Ich schreibe mal mein Vorgehen auf, vielleicht hilft dir das: Im AVR Studio: - New Project -> AVR GCC -> Project name: dcf-clock - AVR Simulator -> Device ATmega16 - Bei den Source Files die angelegte Datei dcf-clock.c aus dem Projekt entfernen - Nun die 3 Dateien
-
Thread
Atmega 16 zwei Analogsignale?
liebes Forum! Ich habe mit Bascom letztens einen Code geschrieben, in dem ich zwei analoge Signale einlese. Allerdings funktioniert das nicht so richtig, daher wollte ich erfragen, ob es generell möglich ist. Ich habe im Datenblatt gelesen, da steht, dass der komplette Port A für analoge Signale gedacht
mit einer externen Spannungsquelle von 5V verbunden. Geht es auch, wenn ich die Spannung an einem PortX abgreife, mit einem anderen PortY, den ich als Eingang festlege, verbinde und zwischen diesen einen Schalter lege? Wenn der Schalter betätigt wird, müsste ja PortY auf High liegen, oder? Falls das
-
Thread
Wie funktioniert diese diskrete Drehgeberauswertung
Die Schaltung ist aber ein bißchen ungeschickt. Alle Drehgeber an PORT A würde das Einlesen vereinfachen und beschleunigen.
> Alle Drehgeber an PORT A würde das Einlesen vereinfachen und > beschleunigen. Nicht unbedingt... Vorteilhafter wäre es, immer dieselben Bits der verschiedenen Ports zu benutzen. Denn dann könnte einunddieselbe Decodier-Routine
-
Thread
1-Wire Reset Impuls?
#define THERM_LOW() THERM_PORT&=~(1<<THERM_DQ) #define THERM_HIGH() THERM_PORT|=(1<<THERM_DQ) int main( void ) { while( 1 ) { uint8_t i; //Pull line low and wait for 480uS THERM_LOW(); THERM_OUTPUT_MODE
Für die delay Loops der avr-libc muss man Optimierung einschalten beim Kompilieren.
-
Thread
avr isp mkii Probleme
HI MISO(Prorammer) - MISO(AVR) MOSI(Programmer - MOSI(AVR)? MfG Spess
Ein Problem für den avr isp mkII und andere Programmer ist: Wenn beim µC die Port-Pins für MISO, MOSI, SCK, RESET niederohmig beschaltet sind: - Eingänge, an denen z.B. der Ausgang eines anderen µCs, oder ein
-
Thread
If-Abfrage in ISR
Ich denke mal, es handelt sich hier um einen AVR?! Wenn dem so ist, dann musst du (laut Datenblatt!) vor dem Einlesen eines Pins ein NOP() einfuegen! z.B. Datenblatt des Mega2560, Kapitel 13.2.4 Reading the Pin Value, Seite 72 "Independent of
Kaj schrieb im Beitrag #3581222: > Ich denke mal, es handelt sich hier um einen AVR?! Wenn dem so ist, dann > musst du (laut Datenblatt!) vor dem Einlesen eines Pins ein NOP() > einfuegen! nein! Bitte richtig lese! Nur wenn man die Datenrichtung ändert und dann liest.
-
Thread
Wie programmiert man Eingänge mit AVR-GCC?
#include <avr/io.h> int main(void) { unsigned char x; DDRB = 0xFF; //Port B = Output DDRD = 0x00; //Port D = Input for(;;) //loop { DDRB = DDRD; PortD einlesen und auf Port B ausgeben x = DDRD; PortD einlesen und in x speichern } return(0); } bitte die aktuelle WinAVR version nehemen wenn du unter windows arbeitest!! gruss, BAB
-
Thread
PPM Signal einlesen
Hallo, ich will von meinem Modellbauentpfänger mit meinem Mega32 auswerten. Dazu hab ich jetzt schon das Summensignal nach außen geführt und per OP auf 5V Pegel verstärkt. Dieses Signal habe ich an den ICP-Pin des AVRs gehängt. Jetzt häng ich grad dran, wie ich das jetzt am besten auslese. Habt ihr da vielleicht ein paar Tips für mich? Ich brauch keinen Code, nur ein paar Denkanstöße, wie ich da jetzt am besten vorgehe! Danke, Christoph
-
Thread
I2C programmierung lernen
Was du suchst, sind I2C Port Expander. zb sowas hier http://www.mikrocontroller.net/articles/Port-Expander_PCF8574
bin auch für die Lösung der Zentralen Steuerung und gegen "parallele" Schaltwege. Schnapp dir einen AVR der als Gehirn den Zustand deiner Aktoren überwacht und bei Bedarf jedem der will Auskunft gibt. Bus ------> |AVR| ---> Relais Schalter -> |___| Gruß deathfun
-
Thread
Tasten von verschiedenen Ports auslesen
werden können. Wie kann ich das ganze umsetzen, wenn ich nun 3 Taster an PORTD 5-7 habe und zwei an PORT 6-7? Vielen Dank,... Tschüß Thomas
hervor, wie Du die Tasten einzeln abfragst: Danach kannst Du dann die Erweiterung auf verschiedene Ports probieren. Anbei die Rangfolge in C. Peter
-
Thread
[AVR32] NGW100 - ttyS0 mit select() -> FD_SET Segmentation fault
npbOutFile.close(); /* Serielle Schnittstelle öffnen & konfigurieren */ fd = open_input_source(port); /* Schleife zum einlesen von Daten an der Schnittstelle */ while (loop) { Timeout.tv_usec = 0; // Millisekunden Timeout.tv_sec = 3; // Sekungen /
*****************************************************************************/ /* Funktion zum einlesen der Daten hab ich raus genommen, soweit kommt er ja nicht */ /***********************************************************************************/ int open_input_source(int port) { int fd
-
Thread
Hilfe bei Parallel-IO dringend (AVR)
Wenn die Taster an PortA angeschlossen sind, bringt es nichts, PinD abzufragen.
Wie simulierst du? Im AVR-Simulator kannst du Änderungen an den I/O Registern nur dann vornehmen, wenn der Debugger das Programm unterbrochen hat (zumindest war das mal so). Setz dir also einen Haltepunkt auf das Einlesen des